软件
软件是一系列按照特定顺序组织的计算机数据和指令,包括程序、数据和相关文档。
软件按照应用范围划分,可以划分应用软件、系统软件和介于这两者之间的中间件。
软件测试
什么是软件测试
软件测试:通过一些方法手段对设计完成对软件产品进行正确性、功能性、安全性、兼容性等验证的过程。
软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义:在规定的条件下对程序进行操作,以发现软件的错误,衡量软件质量,并对其是否满足设计要求进行评估的过程。
软件测试的类型划分
功能测试:验证系统的正确性和完整性
非功能测试:性能、负载、安全性、稳定性、可维护性、兼容性、文档
恢复性测试:软件出错时,检查能否在指定时间内修正错误并重启系统
软件测试目的
1.确认软件质量(文档)
2.尽可能发现软件中的错误,提高软件的可靠性
3.通过测试活动,发现并解决缺陷,增加人们对被测试对象的质量信心
4.通过测试活动,获取被测试对象的质量信息,为决策者提供信息
5.预防缺陷,降低风险,保证软件开发过程的高质量
测试方案
描述需要测试的特性、测试的方法、测试环境的规划、测试工具的设计和选择、测试用例的设计方法、测试代码的设计方案。
特点
-
测试方案是技术层面的文档,从技术的角度一次测试活动进行规划
-
测试方案需要再测试计划的指导下进行,测试计划提出“做啥”,而测试方案明确“咋做”。
*测试用例
是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求,是执行测试的最小实体。
特点
-
正确性:验证系统是否满足规格说明说的各项功能
-
完整性:基本功能,不能有遗漏
-
唯一性:按测试用例输入实施测试后,不能出现模糊不清的结果
-
清晰、简洁:好的测试用例描述清晰,每一步都有很强的针对性
-
可维护性:可根据需要,对测试用例进行修改、增加、删除等,以符合相应测试要求
-
可操作性:适合特定的测试环境以及符合整个团队的测试水平
-
可重用性:要求不同测试者在同样的测试环境下使用同样的测试用例都能得出相应结论。
测试执行
根据事先设计好的测试用例而执行的过程,这个过程需要根据用例执行的输入数据,判断执行程序后的输出结果是否正确
目的
-
发现缺点
-
减少风险(回归)
*缺点等级
一级:致命缺陷,使整个系统失效/不能运行/性能严重偏激
二级:严重缺陷,不会引起项目运行失效或对项目造成重大不良影响(功能没有实现)
三级:一般缺陷,不影响系统的正常运行,属于编程规范性错误
建议:建议类问题和程序优化性问题
疑问:不确定的问题
软测原则
-
测试显示软件存在缺陷
-
穷尽的测试是不可能的
-
*尽早介入测试(在需求阶段就需要有测试介入,后面可能需要改很多地方)
-
缺陷集群性(8/2原则)
-
杀虫剂悖论(一直使用相同的方法或手段去寻找bug的话,可能很难发现bug甚至无法发现bug)
-
测试活动依赖于测试内容(遵循一样的测试法则:测试设计、测试开发、测试流程、测试工具等)
-
“无错就是好”的谬误(即使测试很多把都没有发现任何缺陷,也不能证明软件是完美的)