引论
为什么进行软件测试?
软件存在缺陷,只有通过测试才可以发现缺陷,只有发现缺陷才能把缺陷从产品中清除出去。
软件中缺陷带来的损失是巨大的。
测试是所有工程学科的基本组成单元。
软件测试:验证+有效性确认。
软件质量保证(SQA)(考过):是通过对软件产品有计划地进行评审和审计来验证软件是否合乎标准的系统工程。对软件工程各个阶段的进展,完成质量及出现的问题进行评审和追踪。
SQA和软件测试的关系:SQA指导,监督软件测试的计划和进行,督促测试工作的结果客观,准确和有效,协助测试流程的改进。
软件测试是SQA的重要手段之一,为SQA提供所需数据,作为质量评价的客观标准。
SQA是管理工作,侧重对流程的评审和监控。测试是技术性工作,侧重对产品进行评估和验证。
软件测试基本概念
软件质量:软件产品具有满足规定的或隐含要求能力要求有关的特征与特征总和=软件产品满足使用要求的程度。
内部质量:开发人员自己发现的代码或设计缺陷的问题集合。
外部质量:测试人员发现的bug集合。
使用质量:用户角度评价的质量。
软件缺陷:任何程序,系统中的问题,和产品设计书的不一致性,不满足用户的需求。
软件规格说明书缺陷占比最多,一般是开发者和用户沟通困难,对产品理解不同。
静态代码测试通常比动态测试效率更高。
评审:可以更早发现需求工程,软件设计等各方面的问题,减少后期返工。
桌面检查:程序员自己检查编写的程序。
验证和确认:验证:是否正确构造软件?即是否正确地作时,验证产品满足规格说明书。确认:是否构建了用户需要的软件?
主动测试方法:测试人员主动向被测对象发送请求,或借助数据,事件驱动测试对象。
被动测试:测试人员不干预产品运行,而是被动监控产品在实际环境中运行,通过一定被动机制获得系统运行的数据。例如在线测试。
系统非功能性验证:将软件放在整个计算机环境下,在实际环境下进行一系列的测试。包括恢复测试,健壮性测试,安全测试,性能测试。
测试工作流程:测试需求分析-制定测试计划-设计测试用例(开发测试工具或脚本)-执行测试-测试结果分析-提交测试报告
测试结束的标准
用例全部测试完毕,覆盖率达到标准,缺陷率达到标准或者其它指标达到标准。
四种导向
- 以功能验证为导向:测试是证明软件是正确的(正向思维)。
- 以破坏性检测为导向:测试是为了找到软件中的错误(逆向思维)。
- 以质量评估为导向,测试是提供产品的评估和质量度量。
- 以缺陷预防为导向,测试是为了展示软件符合设计要求,发现缺陷、预防缺陷
软件测试的工作范畴
软件测试工作的组织与管理:制定测试策略、测试计划,确认所采用的测试方法与规范,控制测试进度,管理测试资源。
测试工作的实施:编制符合标准的测试文档,搭建测试环境,开发测试脚本、与开发组织协作实现各阶段的测试活动
软件测试方法
重要的章节,里面的内容是必考的,也是本课程中少有的不太需要背很多概念的章节,但是要注意答题规范。
测试用例
什么是测试用例?
为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。
一个测试用例用于证明该需求已经满足,通常称作正面测试用例;
·另一个测试用例反映某个无法接受、反常或意外的条件或数据,用于论证只有在所需条件下才能够满足该需求,这个测试用例称作负面测试用例。
测试用例是软件测试的核心
注意重点需要掌握:
1.等价类划分和边界值分析法
2.判定表法
3.因果图法
4.逻辑覆盖的所有方法。
其中逻辑覆盖法是需要考虑具体代码的,是一种白盒测试法,而前面的是黑盒测试法,只需要考虑输入和输出是否合理。
其他方法(简单一提):上下文驱动方法,基于需求验证方法,基于场景的测试方法,基于经验的方法等。
ALAC:一种基于客户使用产品知识开发的测试方法,80/20定律:用户80%的时间都在使用20%的功能。而80%的错误也集中在20%的程序模块中。因为时间有限,所以只对常用功能测试。
自由测试:根据经验测试,不受用例约束。
基于输入域的测试方法
等价类划分法
在需求规格说明的基础上分析等价类。在等价类中每个输入数据的作用是等效的。
需要经过正反的测试。
在规定取值范围的情况下,可以分为一个有效等价类和两个无效等价类。
在规定“必须如何”的情况下可以设计一个有效和一个无效。
在条件是布尔量的时候可以设计一个有效和一个无效。
在规定了一组值且需要分别处理的情况下,可以设计n个有效等价类和一个无效等价类。
例如:计算器,等价类包括:整数,小数点,负数,无效输入等。
流程:
建立等价类表:输入条件,有效等价类,无效等价类。
为每个等价类规定唯一编号。
设计测试用例,使其尽可能多覆盖尚未覆盖的有效等价类。直到所有有效等价类都被覆盖。
设计测试用例,使其只覆盖一个无效等价类。直到所有无效等价类都被覆盖。
边界值分析法
许多错误发生在输入或输出范围的边界上,所以可以针对边界设置用例。
确定边界情况,选取正好等于,刚刚大于或小于的边界值作为测试数据。
经典例题:手机号