摘要:软件测试是保证软件质量的重要手段,尤其是自动化测试可以提高测试效率,降低成本。黑盒测试是针对非计算机专业人员进行的测试,为了确保测试质量,必须总结出一套适合业务人员使用的测试方法。文章从实际需要出发,对黑盒测试方法进行了分析,并提出了优化方案。希望可以降低软件测试成本,提高测试效率,对软件测试人员的工作有所帮助。
关键词:软件测试;黑盒测试;测试策略
引言
黑盒测试是目前软件业界采用的主流测试方法,这种方法以业务应用为驱动,通过控制输入及其对业务的预期影响来判断代码实现是否正确。 实践证明,这是一种行之有效的测试方法。
1、黑盒测试常用技术及方法
黑盒测试方法主要运用于单元功能和性能方面的测试。其常用的技术方法有三种。
1.1 边界值分析法
边界值分析的基本思想是使用最小值(min)、略高于最小值(min+)、正常值(nom)、略低于最大值(max-)和最大值(max)处取输入变量值。如果要进一步测试被测对象的健壮性,除了变量的五个边界值外,还要通过采用一个略超过最大值(max+)和一个略小于最小值(min-)的取值来看看超过极值时系统会有什么表现。如果被测对象是多个独立变量的函数,这些变量受物理量的限制,则很适合边界值分析。
1.2 等价类划分法
等价类划分法是依据软件的任务书、需求规格说明或设计文档,把输入数据范围划分为多个区间(即等价类),在每个等价类中选取有代表性的数据设计测试用例。划分等价类是应用等价类划分的关键,既要划分出所有等价类,也要确保没有划分重复的等价类。等价类划分少了会导致测试不充分,等价类划分重复了会导致设计多余的测试用例。例如,对于if(int_DataA>=100 &&int_DataA<200){…},首先针对变量int_DataA进行等价类划分,就能划分为三个等价类(-∞,100)、\[100,200)和\[200,+∞),其中\[100,200)为有效等价类,而(-∞,100)和\[200,+∞)为无效等价类。然后再针对每一个等价类选取其中的数据进行测试用例设计。
1.3 基于决策表测试法
决策表指以表格方式给出的可能输入条件和程序所的对应输出结果之间的严格的逻辑关系.基于决策表设计出相应的测试用例的测试方法即为基于决策表的测试法。该测试方法在所有功能性测试方法中是最严格的。
2、黑盒测试方法的优化
2.1 数值更改黑盒测试的思路
首先描述一下数值更改的几种设计思路和模式。一般设计员进行数值更改往往使用直接查找工程文件的方法。如查找到需要更改的数值,就直接使用新数值进行更改。多数设计员认为只要没有漏改数值,就不会有问题。但不幸的是,还是会被测试人员发现一些程序中的错误。本文将按照软件工程开发测试流程的八个模块进行分析,提供一些数值更改的思路。针对数值更改的设计思路和模式,相应的测试思路如下:
(1)首先确定设计更改的需求是否达到目的;
(2)确认设计更改点所处的功能模块的功能是否满足要求;
(3)找出该更改点涉及的相关功能和接口;找相关接口要注意查阅相关的设计文档,如接口定义、通信协议、程序结构、芯片资料、设计标准等,设计人员的笔误往往集中在更改点涉及的相关接口;
(4)确认更改点涉及部分的功能是否能够满足要求;
(5)按测试要求做好测试记录并最后出具报告。
2.2 随机模拟法在黑盒测试中的应用
该方法的基本思想是为了求解数学、物理、工程技术或生产管理等方面的问题。首先建立一个与求解有关的概率模型或随机过程,使它的参数等于所求问题的解,然后通过对模型或过程的观察或抽样试验来计算所求参数的统计特征,最后给出所求解的近似值。概率统计是随机模拟法的理论基础,其基本手段是随机抽样。对于那些难以进行或条件不满足的试验而言,这无疑是一种极好的替代方法。在应用时,要先产生一种均匀分布的随机数序列,然后再设法转换成特定要求的概率分布的随机数序列,并以此作为数字模拟试验的输入变量序列进行模拟求解。其基本步骤:一是建立概率模型,即对所研究的问题构造一个符合其特点的概率模型;二是产生随机数序列作为系统的抽样输入,进行大量的数字模拟试验,从而得到大量的模拟试验值。产生随机数的数学方法,最常用的有同余法、平方取中法以及易位指令加法等;常用的随机数检验方法有参数检验、均匀性检验、独立性检验、组合规律检验和游程检验等;三是对模拟试验结果进行统计处理(计算频率、均值等特征值),给出所求问题的解和解的精度估计。设计测试用例要经历划分等价类和选取测试用例两步,首先要进行等价类划分,之后在此基础上通过随机模拟方法随机选取测试用例,这样可以使选取的测试用例组合覆盖程序的全部输入域,因而更具有一般性和代表性。
2.3 基于需求的测试优先化方法
优先化方法一般基于以下四个优先化因子:
(1)用户指派优先权(CP)是一个需求对于用户的重要性的度量,由用户为每项需求指派范围从1~10的值,值越高,优先权越高;
(2)需求易变率(RV)表示基于一项需求在开发周期中被修改的次数,是对需求变更的估计;
(3)执行复杂性(IC)是从开发团队的角度对需求实现难易程度的主观度量。一般按每项需求可接受的实现难易度给出一个1~10之间的值,值越大,所可能包含的缺陷数越多;
(4)需求缺陷倾向(FP)可帮助开发团队从软件以前多个版本收集的数据发现易出错的需求,并找出实现这些需求的代码。缺陷倾向越大的模块,造成域失效的可能性越大。
优先化因子的收集与更新过程是:先由用户指定系统各项需求的优先权以及开发阶段需求的增加和修改;需求分析者记录需求和相关优先权,并记下需求的任何变动;接着由软件维护工程师修复缺陷,并将故障映射回受其影响的需求;开发者再对各项需求执行的复杂程度给出客观评价;测试者为每项需求编写测试用例,同时将需求映射到其测试用例并运行。最后记录用例失效,并将其映射到引起该失效的测试用例。
2.4 测试用例的分布策略
一般而言,针对一个软件的测试用例集是不可能穷尽的,只能根据各种原则选择部分典型的用例进行测试。特别是对于一些大型软件,最终可能需要数以万计的测试用例来对其进行测试,在测试用例设计之前大量的测试用例该如何进行分布才能达到相对更好的测试效果呢?
(1)基于矩阵的首次分布策略
理论上,程序规模与测试用例的数量并非线性关系,因为程序规模越大,复杂度就越高,关联因素也越多,所以,对软件来说,这并不是单纯行数的增长。但是在工程中,为了便于实际操作,大多会简单将它们假设为线性关系。
为了把握好测试用例数目的合理分布,可采用矩阵式首次分布预测法进行分布。表1所示是以软件子功能作为矩阵的行,以功能测试的基础测试观点作为矩阵的列给出的矩阵法示意表。表1中的行列元素仅仅是举例说明。
(2)基于分析结果的再次分布策略
如果是按照上述基于矩阵的首次分布策略单纯地实施完最初设计的测试用例就认为测试结束,那么测试就不能称之为完整的测试。而必须依据第一轮测试发现的bug的分布特征、bug的收敛趋势等分析结果来判断是否需要继续测试。在需要继续增加测试的情况下,可以采用基于分析结果的再次分布策略来确定增加部分测试用例的分布。具体实施方法是:根据功能点和基础测试观点进行bug的分布规律分析,将测试发现的bug数都正确地填写在表1的矩阵中,然后根据数字明确哪些子功能是薄弱点,哪些基础测试观点是bug最多的观点,根据软件测试中的80-20规则(80%的bug集中在20%的程序代码内),对于这些交叉点提高测试用例密度,并进行增加部分的测试用例再次分布。
2.5 基于输入输出关系的综合黑盒测试方法
这是针对黑盒测试存在的问题提出的一种测试用例设计方法。根据系统规格说明和系统输入输出之间的关系等附加信息,来确定输入参数之间的覆盖和约束关系,并对参数输入域进行约减;接着对各组进行处理,对各个组合中的输入变量进行两两组合覆盖,再对各相关组的结果进行水平拼接组合。实践结果表明,该方法在不影响测试检错能力的情况下,可以有效地提高测试用例的选择效果。
利用输入输出关系对测试用例集进行约简和优化时,首先对输入输出关系自身进行约简,然后进行关联性分析,并将其划分成若干个彼此独立的相关组;接着对各相关组分别进行,可仅对每个输出涉及到的输入变量进行组合覆盖,进而利用组内元素的关联性通过公共元素进行水平拼接,最后再把各个相关组的结果进行水平拼接。结果表明,改进后的方法可以产生数量最少的用例集。
利用测试用例集的约简技术和优化,可以大大地缩减测试计划,降低测试成本。利用已知的输入输出关系,通过对输入输出关系自身的特点(包含和关联)进行分析来对输入输出关系进行约简和分组,然后把每个相关组视为独立的输入输出关系分别进行处理,再对每个输出所涉及的输入变量进行组合覆盖,进而利用关联性把这些组合覆盖的测试数据进行水平拼接,最后再把各个相关组的结果进行水平拼接所样产生的结果不仅最接近最优解,而且时间复杂度也指数级下降,从而得到了较大的优化。
3、结语
为了提高软件测试的质量和效率,本文针对黑盒测试中的软件测试方法进行了分析,并根据实际操作总结出了针对黑盒测试的改进方法。实践证明,通过测试方法的优化,可使软件测试更加系统化、灵活化,其测试效率和质量都会得到明显提升。
====================================分割线================================
最新内容请见作者的GitHub页:http://qaseven.github.io/