1.软件测试:使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。
2.测试和调试的区别:
测试的目的是找出存在的错误,而调试的目的是定位错误并修改程序以修正错误。
调试是测试之后的活动,测试和调试在目标,方法和思路上都有所不同。
测试是从一个已知的条件开始,使用预先定义的过程,有预知的结果,调试从一个未知的条件开始,结束的过程不可预计。
测试过程可以实现设计,进度可实现确定;调试不能描述过程或持续时间。
3.软件研发的相关要素:人员,工具和过程。
4.软件研发的四个重要过程:配置管理,需求管理,缺陷管理和同行评审。
5.软件研发中常见的引入缺陷的原因:
开发过程缺乏有效的沟通,或者没有进行沟通
软件复杂度越来越高
编程中产生错误
需求不断变更
项目进度的压力
不重视开发文档
软件开发工具本身隐藏的问题
6.缺陷的类型:遗漏,错误,额外的实现。
7.软件质量的定义:一个实体的所有特性,基于这些特性可以满足明显的或者隐含的需求,而质量就是实体基于这些特性满足需求的程度。
8.软件质量的三个层次:符合需求规格,符合用户显示需求,符合用户实际需求。
9.影响软件质量的因素:技术,组织,流程。
10.软件质量的管理体系:ISO9000,CMM,六西格玛。
11.CMM的五个等级:初始级,可重复级,已定义级,已管理级,优化级。
12.CMM的五个等级中的关键过程域:
初始级:无
可重复级:需求管理,软件配置管理,软件质量保证。
已定义级:同行评审。
已管理级:定量的过程管理,软件质量管理。
优化级:缺陷预防。
13.ISO9001与CMM的关系
最大的相似点:强调管理,过程,规范化和文档化
不同点:CMM把焦点严格对准软件
ISO9001的范围包括:硬件,软件,流程性材料和服务。
两者之间的联系:CMM2级与ISO9001强相关。
CMM的每个关键过程域至少按某种解释与ISO9001弱相关。
14.六西格玛的实施方式:DMAIC
定义:define,测量:measure,分析:analyse,改进:improve,控制:control
15.软件的质量模型:
质量模型:一组特性与特性之间的关系,它提供规定质量需求和评价质量的基础。包括六大特性,27个子特性
六大特性包括:功能性,可靠性,易用性,维护性,效率,可移植性。
16.软件质量活动:
软件组织主要软件质量活动:软件质量保证(SQA)和测试。
17.SQA和测试的关系:
软件质量由组织,流程和技术三个方面决定。
SQA从流程方面保证软件的质量
测试从技术方面保证软件的质量。
只要进行SQA活动或只进行测试活动不一定能产生好的软件质量。
18.SQA的主要工作范围:
指导并监督项目按照过程实施。
对项目进行度量,分析,增加项目的可视性。
审核工作产品,评价工作产品和过程质量目标的符合度。
进行缺陷分析,缺陷预防活动,发现过程的缺陷,提供决策参考,促见过程改进。
19.质量管理PDCA循环:
P:plan,计划设计
D:do,实施执行。
C:check,检查检测
A:act,纠正措施,改进。
20.软件度量的作用:理解,预测,评估,改进。
21.软件度量的分类:四个基本度量项:规模,工作量,进度,质量-缺陷。
22.黑盒测试,白盒测试和灰盒测试的区别:
定义:
黑盒测试:黑盒测试又称功能测试、数据驱动测试或者基于规格说明的测试,被测试程序当作黑盒处理,只考虑其整体特性,不考虑其内部具体实现。比如系统测试一般采用黑盒测试方法,并参考SRS。
白盒测试:根据被测试程序的内部结构设计测试用例的一类测试,有人也称它为透明盒或者玻璃盒测试,涉及到软件设计的细节。比如单元测试一般采用白盒测试方法,并参考LLD。
区别:
测试依据:
黑盒测试:根据用户能看到的规格说明,即针对命令、信息、报表等用户界面以及体现它们的输入数据与输出数据之间的对应关系,特别是针对功能进行测试。
白盒测试:根据程序的内部结构,比如语句的控制结构、模块间的控制结构以及内部数据结构等进行测试。
特点:
黑盒测试:
优点:能站在用户立场上进行测试。
对于更大的代码单元来说比白盒测试效率更高;
有助于暴露任何规格不一致或有歧义的问题;
测试人员不需要了解实现的细节,包括特定的编程语言。
缺点:不能测试程序内部特定部位;
如果规格说明有误,则无法发现;
白盒测试:
优点:能够对程序内部的特定部位进行覆盖测试。
对代码的测试比较彻底;
最优化;揭示隐藏在代码中的错误;
缺点:无法检验程序的外部特征;
无法对未实现规格说明的程序内部欠缺部分进行测试(无法检测代码中遗漏的路径和数据敏感性错误);
昂贵;
方法举例:
黑盒测试:等价类划分、边界值分析、因果图/判定表、错误推测、(功能覆盖率)、
白盒测试:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、路径覆盖、面对对象的覆盖(继承上下文覆盖、基于状态的上下文覆盖、已定义的上下文覆盖等)、另外还有一些静态分析方法。
22.静态测试与手工测试:
静态分析技术结构:
静态分析
手工 自动
正规 技术 走读 静态 语法 符号
检视 评审 验证 分析器 执行器
23.单元,集成,系统测试的比较:
测试方法不同:
单元测试属于白盒测试范畴,集成测试属于灰盒测试范畴,
系统测试属于黑盒测试范畴。
考察范围不同:
单元测试主要测试单元内部的数据结构,逻辑控制,异常处理等。
集成测试主要测试模块之间的接口盒接口数据传递关系,以及模块组合后的整体功能。
系统测试主要测试整个系统相对于需求的符合度。
评估基准不同
单元测试的评估基准主要是逻辑覆盖率。
集成测试的评估基准主要是接口覆盖率。
系统测试的评估基准主要是测试用例对需求规格的覆盖率。
24.回归测试册策略:
完全重复策略,选择性重复策略(其中包括覆盖修改法,周边影响法,指标达成法)
25.测试V模型:
V模型实现了测试设计和测试执行相分离
V模型揭示了软件测试活动分层和分阶段的本质特性,测试执行的顺序与开发活动相反。
26.单元测试:
定义:对软件基本组成单元进行的测试。
目的:发现各模块内部可能存在的各种错误,验证代码是与设计相符合的,
发现设计和需求中存在的错误,发现在编码中引入的错误。
关注的重点:单元接口,局部数据结构,边界条件,独立路径,出错处理。
单元测试策略:孤立策略,自顶向下策略,自底向上策略。
单元测试的结束标准:以覆盖率为标准,以遗留缺陷为标准。
27.集成测试:
定义:在单元测试的基础上,将所有的函数按照概要设计要求组装成为子系统或系统所进行的测试。
目的:确保各组件组合在一起后能够按照既定意图协作运行,并确保增量的行为正确,
验证接口是与设计相符合的,发现设计和需求中存在的错误。
关注的重点:单元间的接口和集成后的功能。
集成测试的层次:模块内集成测试,子系统内集成测试,子系统间集成测试。
集成测试的策略:大爆炸集成,自顶向下,自底向上,三明治,基干集成,分层集成,基于功能的集成,基于消息,基于进度,基于风险。
28.系统测试:
定义:是将已经集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机
硬件,外设,某些支持软件,数据和人员等其他元素结合在一起,在实际运行的
环境下,对计算机系统进行一系列的测试活动。
目的:通过与系统的需求定义做比较,发现软件与系统定义不符合或与之矛盾的地方。
对象:是软硬件集合在一起的系统,不应是独立的软件与硬件环境。
系统测试类型:功能测试,性能测试,压力测试,容量测试,安全性测试,GUI测试,
可用性测试,安装测试,配置测试,异常测试,备份测试,健壮性测试,
文档测试,在线帮助测试,网络测试,稳定性测试。
29.Alpha和Beta测试:大型通用软件,在正式发布前,通常需要执行Alpha和Beta测试,目的是从实际终端用户的使用角度,对软件的功能和性能进行测试,以发现可能只有最终用户才能发现的错误。
Alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。Alpha测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理。目的是评价软件产品的功能、可使用性、可靠性、性能和支持。尤其注重产品的界面和特色。Alpha测试可以从软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。有关的手册(草稿)等应该在Alpha测试前准备好。
Beta测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。因而,Beta测试是在开发者无法控制的环境下进行的软件现场应用。在Beta测试中,由用户记下遇到的所有问题,包括真实的以及主管认定的,定期向开发者报告,开发者在综合用户的报告后,做出修改,最后将软件产品交付给全体用户使用。Beta测试着重于产品的支持性,包括文档、客户培训和支持产品的生产能力。只有当Alpha测试达到一定的可靠程度后,才能开始Beta测试。由于Beta测试的主要目标是测试可支持性,所以Beta测试应该尽可能由主持产品发行的人员来管理。
由于Alpha和Beta测试的组织难度大,测试费用高,测试的随机性强、测试周期跨度较长,测试质量和测试效率难于保证,所以,很多专业软件可能不再进行Beta测试。随着
测试技术的提高,以及专业测试服务机构的大量涌现,很多软件的Beta测试外包给这些专业测试机构进行测试
负载压力测试基础概念
负载压力测试有助于确认被测系统是否能够支持性能需求,以及预期的负载增长等。负载压力测试不只是关注不同负载场景下的响应时间等指标,它也要通过测试来发现在不同负载场景下会出现的,例如速度变慢、内存泄漏等问题的原因。 负载压力测试是性能测试的重要组成部分,负载压力测试包括并发性能测试、疲劳强度测试、大数据量测试等内容。一般包括如下: 1、性能测试 性能测试用来保证产品发布后系统的性能能够满足用户需求。其中系统性能包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等。 2、性能评测 性能评测包括:在真实环境下,检查系统服务等级的满足情况,评估并报告整个系统的性能;对系统的未来容量作出预测和规划。 3、性能调优 性能调优一般的步骤为首先查找形成系统瓶颈或者故障的根本原因,其次是进行性能调整和优化,最后便是评估性能调整的结果。 4、负载测试 负载测试时通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试。 5、压力测试 压力测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,并以此来获得系统能提供的最大服务级别的测试。 6、并发性测试 并发性测试的过程,是一个负载测试和压力测试的过程。即逐渐增加并发用户数负载,直到系统的瓶颈或者不能接收的性能点。并发性测试分为三类:
a、应用在客户端性能的测试; b、应用在网络上性能的测试; c、应用在服务器上性能的测试;
7、疲劳强度测试
8、大数据量测试 大数据量测试包括独立的数据量测试和综合数据量测试两类 |