软件测试策略是指在软件测试标准、测试规范的指导下,依据测试项目的特定环境约束制定的软件测试原则、策略和方法的集合。系统生命周期测试策略如图2-9 所示。
图2-9 系统生命周期测试策略
软件测试的策略、方法和技术是多种多样的,对于软件测试技术,从是否执行被测试软件的角度划分:可分为静态测试和动态测试两种;从是否针对系统的内部结构和具体实现方法的角度划分:可分为白盒测试、灰盒测试和黑盒测试三种。其中灰盒测试是介于白盒测试与黑盒测试之间的一种测试方法,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不如白盒测试详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,所以不易界定灰盒测试的范围,很多公司不开展灰盒测试。
一、开发阶段的测试策略
开发阶段是指在整个产品开发过程中我们使用的测试方法,在开发阶段的测试策略和方法主要是白盒测试,当然有一些公司也会开展灰盒测试,但并不多,通常灰盒测试也就是我们说的集成测试。
白盒测试也称结构测试或逻辑驱动测试,主要是测试源程序内部的结构,通过测试来检查程序内部动作是否满足设计规格说明书的要求,检查源程序中路径覆盖情况。白盒测试将被测程序看作一个打开的盒子,即程序内部的逻辑结构可以看的清楚,如图2-10 所示。
白盒测试要求对被测程序的结构特性做到一定程度的覆盖,逻辑覆盖是衡量白盒测试完整性的一个重要指标,关于逻辑覆盖在10.3 节中会有详细的介绍。
通常的程序结构覆盖测试方法有:
语句覆盖;
判定覆盖;
条件覆盖;
判定/条件覆盖;
路径覆盖;
基本路径覆盖。
对源程序进行覆盖测试其实是一种动态的测试过程,测试过程中必须输入不同的数据进行测试来达到覆盖测试的目标。一般来说,覆盖率越高说明我们测试设计越全面,但在实际测试过程中我们又很难100%覆盖,所以我们使用最多的覆盖方法是基本路径覆盖法。
但单元测试时,需要写一些辅助代码,我们把这些辅助代码叫做桩单元和驱动单元,但如果每个单元模块都写很多的辅助代码,这样测试的效率将会大大降低。为了提高测试效率,测试工程师提出了白盒测试框架,希望将这些辅助的代码作为一个固定的框架,这样就可以节约很多的时间,可以将主要的精力放在测试用例的设计上。对于白盒测试框架在第10 章详细介绍。
二、产品阶段的测试策略
产品阶段主要采取黑盒测试策略进行测试。黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用,是否符合规格说明书。在测试过程中,把程序看作一个不能打开的黑盒子,如图2-11 所示。在完全不考虑程序内部结构和内部特性的情况下,对程序接口进行测试,它只检查程序功能是否能按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
图2-11 黑盒测试
黑盒测试是以用户的角度、从输入数据与输出数据的对应关系出发进行测试的,黑盒测试主要发现以下几类错误:
验证是否有不正确或遗漏的功能?
接口测试方面,验证输入能否正确地接受?输出的结果是否正确?
是否有数据结构错误或外部信息访问错误?
性能是否能够满足要求?
是否有初始化或终止性错误?
从理论上讲,在进行黑盒测试过程中,需要采用穷举法进行测试,需要对全部功能所有可能出现的情况进行覆盖测试,不仅需要测试合法的输入条件,还要测试不合法的输入条件,并且大多数的缺陷是通过输入不合法的测试条件测试出来的,因此测试条件有无穷多种。但在实际测试过程中是不可能这样做的,这样会导致测试成本太高,所以需要制定测试方法和策略来指导测试的实施,保证软件测试有计划地进行。
常用的黑盒测试设计方法有以下几种:
等价类划分法;
边界值测试法;
错误推测法;
因果图法;
场景法;
判定表法;
正交实验法。
目前大部分企业将产品阶段的黑盒测试规划到系统测试阶段,但对于有项目外包业务的企业来说,还需要经历验收测试阶段,主要验证产品是否达到需求说明书的要求,而完成的好坏决定着外包主需要支付的外包成本。在实际的过程中验收测试一般有两种形式:一是企业组织一个团队进行验收测试;二是找第三方测评机构进行评测。
随着软件测试的发展,黑盒测试形成了两个重要的分支:性能测试和自动化测试。在实际工作中,一个好的产品或系统不仅仅功能要正确,其性能也是质量表现的重要一环,所以一些企业根据实际需要开展了性能测试。而自动化测试的目的更多的是为降低手工测试的成本,因为纯粹功能的黑盒测试都是手工测试,是由手工不停地重复测试,这样测试工程师会出现情绪不高的现象,并且激情会逐渐消退,因此一些企业就引进了自动化测试工具,将一些可以使用自动化测试工具进行测试的功能实现自动化测试,降低了测试成本,提高了测试的全面性,这些方法在产品测试阶段经常被用到。
本章主要讲述了系统生命周期过程中的测试策略,首先介绍了测试级别,对测试过程中测试级别有一个大体的了解,接着介绍了测试在软件质量体系中的位置和作用。重点介绍了当前行业中的几种软件测试模型,主要包括瀑布模型、V 模型、W 模型、H 模型和X 模型。最后介绍系统生命周期中的测试策略,主要包括白盒测试和黑盒测试两种,在项目开发阶段中,不同阶段采用的测试策略也不同。
本章主要讲解了关于“系统生命周期中的测试策略”的内容,大家觉得有用的话记得每天来这里和小编一起学习涨薪技能哦。另外,给大家推荐一个软件测试自学群,识别下方二维码,免费领取学习课件、视频哦。(笔芯)
附:川石信息全国校区最新开班时间,课程资料获取13691729932(微信同号)。