苏晶
山东理工大学 山东 淄博 255049
软件测试是软件开发过程中的重要组成环节,是发现软件缺陷和提高软件质量的重要举措,其本质为通过建立输入与输出之间的映射关系验证系统功能是否满足用户需求。
软件测试的方法繁多,各有长处和不足,可分别适用于不同的应用场景中。对于参数配置类软件的测试问题,由于不同输入条件取值组合将产生不同的输出结果,若采用传统的基于软件等价类的划分方法设计测试用例,仅仅满足于输入条件取值的覆盖,则势必忽略重要组合的验证,带来遗漏缺陷的风险。
另外,由于输入条件取值往往无法简单通过逻辑值概括,加之其间毫无关联、相互独立,不具备合并化简的必要条件,若采用判定表驱动法设计测试用例,则随着输入条件的增多,通常会导致排列组合数量过于庞大,在有限时间和成本的条件下,无法保证测试效率。反之若从海量规则中随意选取输入组合生成测试用例,虽然可以保证测试效率,但由于选取不具备代表性,测试的有效性无法得到保障,因此同样不具备可行性。
为了解决上述问题,需要借鉴数理统计领域中的正交试验法进行数据组合的科学采样,通过较少的排列组合达成最佳测试效果,以提高测试的效率和有效性[1]。
微软PowerPoint打印问题的测试需求描述如下:
打印范围:必须在全部、当前幻灯片、给定范围三者中选择其一;
打印内容:必须在幻灯片、讲义、备注页、大纲视图四者中选择其一;打印颜色:必须在彩色、灰度、纯黑白三者中选择其一;打印效果:必须在幻灯片加框、幻灯片不加框两者中选择其一。
打印问题属于典型的参数配置类软件测试,用户选择的配置项组合不同,打印效果千差万别。四个输入项取值的笛卡尔乘积为3×4×3×2=72,排列组合数量较为庞大,且该测试涉及输入输出设备,若穷举测试势必会花费大量的成本,但由于输入条件间相互独立,随意筛选无法确保测试的有效性,此类测试需考虑使用正交试验法解决。
正交试验法是从大量的试验点中挑选出适量的、有代表性的点,应用伽罗瓦理论导出的正交表,合理安排实验的一种科学的试验设计方法。软件功能测试作为试验的一种,完全可以利用正交试验法进行测试数据的选择,以提高测试的效率[2]。
正交表应用在软件测试中的表示形式为:
L测试用例数(输入条件取值数输入条件数)
正交试验法在选择数据时,可满足所有因子和水平取值的均匀分配,以及两两组合取值的均匀搭配,因此在减少测试用例绝对数量的同时,测试效果不会大打折扣。
比如,L9(34)为三水平的正交表,其中“L”为正交表的代号,指数“4”为表的列数,表示最多可安排4个输入条件,底数“3”表示每个输入条件可取3个不同的取值,下标“9”为表的行数,表示若采用正交试验法,可从34=81个排列组合中科学采样选取9个输入组合作为测试用例开展测试。
根据被测软件的规格说明书找出影响其功能实现的操作对象和外部因素,将其作为因子,将各因子的取值作为水平。
根据测试需求描述,分解功能要求,确定影响打印功能的因子分别为打印范围、打印内容、打印颜色和打印效果。每个因子的取值均为离散集合,则直接构造因子-水平二维表[3]。
并非每个输入条件及取值在测试过程中都是同等重要的,为了确保测试的有效性,可对因子及水平按其重要程度进行加权筛选,并生成因素分析表。
通常情况下,用户较少关注打印的幻灯片是否加框,而备注页由于不涉及关键信息往往被忽视,则在测试进度较为紧张的情况下,可舍弃重要程度偏低的因子及水平。加权筛选后,最终生成的因素分析表中保留的输入条件排列组合数量为3×3×3=27。
若加权筛选后排列组合数量仍然超出预期,则需根据因子和水平的个数选择合适的正交表。由于不存在三因子三水平的正交表,则需在现有正交表中选择并套用因子数略大的,即四因子三水平正交表L9(34),并将多余因子舍弃,构造出的表格仍然满足两大正交特性,确保数据采样的均匀性及科学性。
最后只需将保留的三个输入条件及其取值依次映射并代入现成的正交表中,即可完成9个测试用例的设计任务[4]。
利用正交试验法设计测试用例,较使用其他方法具有如下优点:
(1)节省测试工作工时。由于把现成的规范化的正交表直接应用到测试用例选取中,不需要多步骤的推导,也不需要丰富的经验和创造力,可以有效减轻测试者的负担。
(2)可控制生成测试用例的数量。利用加权筛选,考虑测试输入条件与条件取值的重要程度及条件间的相互影响,做出一定的筛选,可以把生成测试用例的数量控制在允许范围内。
(3)测试用例具有一定的覆盖度。正交试验法是一种合理的、有效的抽样方法,对被测软件来说,测试用例的涉及范围在整体上比较均匀,可排除偏向于功能某个局部的可能性。
通过上述分析可以看出,正交试验法是科学有效的采样方法,可应用于参数配置类软件的测试过程中,以达到提高测试效率和有效性的目的。
但是这种方法受限于数理统计的应用背景,无法考虑输入参数相互组合的实际意义,在一定程度上对测试效果产生了不利影响,通常需要与其他黑盒测试方法相结合用于解决实际问题。