文章目录
第一章:引 论
了解:
1.2 为什么要进行软件测试
软件测试——产品质量的保证
软件测试——控制成本的关键
软件测试——软件可靠性确认
软件测试——让企业具备国际竞争的实力
1.3 什么是软件测试
Bill Hetzel博士(正向思维的代表):
软件测试就是为程序能够按预期设想那样运行而建立足够的信心。
“软件测试是一系列活动以评价一个程序或系统的特性或能力并确定是否达到预期的结果”
测试是为了验证软件是否符合用户需求,即验证软件产品是否能正常工作
Glenford J. Myers (反向思维的代表):
测试是为了证明程序有错,而不是证明程序无错误
一个好的测试用例是在于它能发现至今未发现的错误
一个成功的测试是发现了至今未发现的错误的测试
软件测试是由“验证(Verification)”和“有效性确认(Validation)”活动构成的整体
“验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性
“有效性确认”是确认所开发的软件是否满足用户真正需求的活动。
1.4 软件测试和软件开发的关系
SQA
软件质量保证〈Software Quality Assurance,SQA)活动是通过对软件产品有计划的进行评审和审计来验证软件是否合乎标准的系统工程,通过协调、审查和跟踪以获取有用信息,形成分析结果以指导软件过程。
软件测试与Sqa的关系
SQA指导、监督软件测试的计划和执行,督促测试工作的结果客观、准确和有效,并协助测试流程的改进。
软件测试是SQA重要手段之一,为SQA提供所需的数据,作为质量评价的客观依据。
SQA是一项管理工作,侧重于对流程的评审和监控。
测试是一项技术性的工作,侧重对产品进行评估和验证。
4种导向
以功能验证为导向:测试是证明软件是正确的(正向思维)。
以破坏性检测为导向:测试是为了找到软件中的错误(逆向思维)。
以质量评估为导向,测试是提供产品的评估和质量度量。
以缺陷预防为导向,测试是为了展示软件符合设计要求,发现缺陷、预防缺陷。
5大学派
1、分析学派:
分析学派认为软件测试是严格的技术性的,这一派在学术界有很多支持者。
2、标准学派:
标准学派认为软件测试是用于衡量进度的一种方式,强调成本度量和可重复的标准。
3、质量学派:
质量学派强调过程,软件测试人员像警察一样审判开发人员,又像守门员一样保证质量。
4、上下文驱动学派:
上下文驱动学派强调软件测试人的作用,寻找利益相关的BUG。
5、敏捷学派:
敏捷学派使用软件测试来验证开发是否完成,强调自动化。
第二章:软件测试的基本概念
了解:
2.1.2 软件缺陷定义
任何程序、系统中的问题,和产品设计书的不一致性,不能满足用户的需求。
IEEE (1983) 729软件缺陷一个标准的定义:
从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;
从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。
2.1.5 修复软件缺陷的代价
在设计阶段就是它的3~6倍,在编程阶段是它的10倍,在内部测试阶段是它的20~40倍,
在外部测试阶段是它的30~70倍,而到了产品发布出去时,这个数字就是40~1000倍,修正错误的代价不是随时间线性增长,而几乎是呈指数增长的。
结束标准
用例全部测试;覆盖率达到标准;缺陷率达到标准;其他指标达到标准。
掌握:
2.3 软件测试的分类
按测试阶段或层次:单元测试、集成测试、系统测试、验收测试。
按目标或特性:功能测试、强壮性测试、性能测试、适用性测试、安全性测试、可靠性测试。
按方法:白盒测试、黑盒测试。
静态测试 /动态测试
静态测试就是静态分析,对模块的源代码进行研读,查找错误或收集一些度量数据,并不需要对代码进行编译和仿真运行。静态测试包括对软件产品的需求和设计规格说明书的评审、对程序代码的复审等。静态分析的查错和分析功能是其他方法所不能替代的,可以采用人工检测和计算机辅助静态分析手段进行检测,但越来越多地采用工具进行自动化分析。
动态测试是通过真正运行程序发现错误,通过观察代码运行过程,来获取系统行为、变量实时结果、内存、堆栈、线程以及测试覆盖率等各方面的信息,来判断系统是否存在问题,或者通过有效的测试用例,对应的输入输出关系来分析被测程序的运行情况,来发现缺陷。
回归测试
为保证软件中新的变化(新增加的代码、代码修改等)不会对原有功能的正常使用有影响而进行的测试。也就是说,满足用户需求的原有功能不应该因为代码变化而出现任何新的问题。
压力测试
压力测试,也称负载测试,是用来检查系统在不同负载(如数据量、并发用户、连接数等)条件下的系统运行情况,特别是高负载、极限负载下的系