前几天刚考完软件测试,其中有一道题是与软件测试的策略有关,个人感觉对这方面还是比较薄弱,因此,想借这里总结一下软件测试的流程及策略。
一、软件测试流程:
软件测试的流程可以细分为四个阶段:单元测试,集成测试,确认测试(有效性测A试)和系统测试单元测试针对软件设计的最小单元A程序模块,进行正确性检验的测试工作。它的目的在于发现各模块内部可能存在的各种差错集成测试在单元测试的基础上,将所有模块按照设计要求组装成为系统进行测试。确认测试(有效性测试)验证软件的功能、性能和其它特性是否与用户的要求一致系统测试将测试的软件作为整个计算机系统的一个元素与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行组装测试和确认测试。
二、软件测试的策略和流程:
软件测试的策略就是测试将按照什么样的思路和方式进行如采用什么技术,什么步骤等。而软件测试技术可以按照以下几种方式来进行分类:
1、黑盒(功能性)测试和白盒(结构性)测试:
(1)黑盒测试:
黑盒测试又称功能性测试、数据驱动测试、基于规格说明的测试。它在己知软件所应具有的功能的基础上,检查程序功能能否按需求规格说明书的规定正常使用,功能是否有遗漏,性能等特性要求是否满足。在进行黑盒测试时只需参照规格说明检查软件,不要求考察代码,从用户视角来对软件进行测试。黑盒测试的目的在于检测软件功能是否正确和完整,检测是否有人机交互和数据访问错误,检测软件行为和性能是否满足需求以及检测软件初始化和终比过程是否有错误。
黑盒测试要遵循以下的步骤:首先需要先根据规格说明书来生成测试用例,然后执行测试并分析覆盖标准,最后再根据所得结果来作出结论。
(2)白盒测试:
白盒测试又被成为结构性测试、逻辑驱动测试、基于程序的测试。它的与黑盒测试的区别在于我们在进行白盒测试的时候会将程序的执行表现与编码意图作比较,并且关心软件内部设计和程序实现,而主要测试依据是代码和设计文档,这就能够支持严格定义、数学分析和精确度量,从而更加准确的来评价一个软件。
2、静态测试和动态测试:
(1)静态测试:
静态测试广义上包括了人工代码检查,软件度量,程序结构分析(自动审查)和自动编程规则检查这些内容。
(2)动态测试:
动态测试包括覆盖测试分析和运行时的错误检测。
3、传统测试方法和面向对象测试的方法:
(1)路经测试:
路径测试是指根据路径设计测试用例的一种技术,经常用于状态转换测试中。基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的侮个可执行语句至少执行一次。
(2)数据流测试:
前面的测试针对程序的控制流路径,检查程序在各种条件值、各种决策下是否有错数据流测试主要测试程序中的数值流(覆盖值传递路径),检测变量定义与使用的情况。它比较容易发现下列类型的错误:变量被定义,但是从来没有使用;所使用的变量没有被定义变量在使用之前被定义两次;其它定义不当或使用不当的情况。
(3)面对对象软件测试:
面向对象技术开发出的程序更需要测试且对其进行测试将更复杂。面向对象软件与传统的软件存在不同的软件结构,不同的开发方法且每个开发阶段都有不同以往的要求和结果,针对面向对象软件的新特点,应有一种新的测试模型。
4、特定环境及应用的测试:
针对面向对象的程序软件及基于客户/服务器体系结构等特定环境,除了能够应用黑盒测试和白盒测试的方法之外,通常还需要采用专门的测试方法。这些测试通常被认为在以下领域开展:基于客户/服务器体系结构与运行环境的测试;基于面向对象的测试;基于实时系统的测试。