第10章 软件测试
软件测试是软件质量保证的一项关键活动,它是通过对需求规格说明、软件设计说明和程序代码等进行复审,以保证在软件产品交付前,尽可能发现软件中潜伏的问题。
一、验证与确认
符合以下5条规则的软件问题定义为软件错误:
(1)软件未达到产品说明书表明的功能;
(2)软件出现了产品说明书指明不会出现的错误;
(3)软件未达到产品说明书虽未指明但应达到的目标;
(4)软件功能超出了产品说明书指明的范围;
(5)软件测试人员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户不满意。
软件测试试图证明在软件生存期各个阶段,软件产品或中间产品是否能够满足客户需求,包括逻辑协调性、完备性和正确性。
软件确认是一系列的活动和过程,期目的是保证软件产品能够符合其描述要求。
软件确认:需求规格说明的确认和程序的确认。程序的确认:静态确认、动态确认。
二、软件测试基础
软件测试的目标在于以最少的时间和人力系统地找出软件中潜在的各种错误和缺陷。
软件测试的基本原则:
(1)应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭;
(2)程序员应避免检查自己的程序;
(3)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件;
(4)测试用例应有测试输入数据和与之对应的预期输出结果这两部分组成;
(5)充分注意测试中的群集现象;
(6)严格执行测试计划,排除测试的随意性;
(7)应当对每一个测试结果做全面检查;
(8)妥善保存一切测试过程文档,为维护提供方便。
软件测试V模型:从上而下:需求分析、概念分析、详细设计、编码;从下而上:单元测试、集成测试、系统测试、验收测试。
测试文档:测试计划、测试规范、测试用例、缺陷报告。
测试文档的重要性表现在一下方面:验证需求的正确性,检验测试资源,明确任务的风险,生成测试用例,评价测试结果,在测试,决定测试的有效性。
软件测试需要3类信息:软件配置、测试配置、测试工具。
测试人员应具有以下素质:沟通能力、移情能力、技术能力、自信心、外交能力、幽默感、很强的记忆力、耐心、怀疑精神、自我督促、洞察力。
三、软件测试策略
单元测试:模块接口测试、局部数据结构测试、重要执行路径测试、错误处理测试、边界条件测试、段元测试方法。
集成测试:自顶而下测试、自底向下集成。
系统测试:恢复测试、安全测试、强度测试、性能测试。
软件调试:简单的调试方法(1.在程序中插入打印语句;2.运行部分程序;3.借助调试工具)、归纳法调试、演绎法调试、回溯法调试。
四、软件测试方法:静态测试与动态测试、黑盒测试与白盒测试
五、面向对象软件测试
面向对象测试类型:模型测试、类测试、交互测试、系统(子系统)测试、沿着测试、发布测试。