在测试人 员提交软件缺陷报告后,最不希望看到的这些缺陷被开发人员忽略,尽管你坚信这一定是软件缺陷,而罪魁祸首就是这些缺陷不可重现!一旦出现这样的情况,测试 人员会很被动,开发人员也会对测试人员有意见。这就使得关系本来就不怎么融洽的测试人员和开发人员之间的关系更加紧张;对于整个时间紧凑的项目来说,无异 于是火上浇油。为了减少这种尴尬情况的出现,非常有必要分析一下软件缺陷不能重现的原因。
1. 测试环境不一致
从广义上来说,保证或影响软件的任何因素都是环境,例如,系统的构造版本、应用服务器的类型和版本、浏览器的语音和版本等。
以下就是我们会遇见的错误:某个B/S(Web应用)架构的系统软件运行于IE8上,出现了JS(Java Script)脚本错误导致页面浏览异常的软件缺陷,把IE8降级到IE6或7后,此软件缺陷就自动消失了。
2. 测试配置不一致
程序运行都是基于一定的配置条件下进行的,包括被测系统参数设置、基础数据完整性、业务流程完整性等,比如,我们曾经在某数据库产品测试过程中,由于在安装界面中选择了非默认路径进行安装,结果导致该数据库物理备份会恢复功能出错,而对方在核对缺陷时按照默认路径进行了安装,因此缺陷总是无法重现。
3. 内存泄露
某些系统长期运行后出现速度慢的原因是开发人员未养成回收内存的习惯。这类错误在短期内不会出现,但当系统长期运行时就会出现,并且由此会引发一系列的问题。
4. 数据接口不匹配
一般只有在查看源代码后才能发现。某些类型的数据会被系统自动转换,有些数据被截断或被强制转换成另外一种数据类型时,会出现一些潜在的错误。
基于以上测试过程中出现的软件缺陷不能重现的原因,我们提出如下一些解决策略,以更好地从源头上减少不可重现软件缺陷的出现。
1. 测试环境配置充分细致
测试人员在测试前,严格核对系统的运行环境配置要求,并充分考虑系统在线运行后的环境变化,做好测试环境配置的全面规划,注意细节。另外可以使用Ghost对硬件或某个分区进行镜像备份。
2. 捕获系统日志,分析异常信息
测试人员应养成记录系统错误日志的习惯,保留系统在出错时的真实状态。比如将IE浏览器高级选项设置为“显示每个脚本错误的通知”。
3. 监测系统状态,异常及时告警
在实施系统测试过程中,我们必须充分关注系统运行状态的变化,一旦系统运行状态发生较大的波动,势必会对后期的业务执行带来较大的影响。因此,系统运行监测的一个重要内容是需要及时反馈系统运行异常,并提供异常报告。
4. 测试数据翔实,易于追溯
测试数据是软件测试的 核心,很多情况下,测试人员为了缩短测试周期,在实际测试前并没有充分编写足够的测试数据,也没有记录这些测试数据的执行顺序和运行轨迹,一旦程序在某个 节点出现问题,我们无法判断其产生的过程和引起这个缺陷的具体测试数据,对我们进一步分析软件缺陷产生的原因会造成一些不必要的障碍。
正是基于此我们强调在软件测试开始前,我们必须制定完整的测试用例,辅以详细的测试数据,并明确测试数据的操作步骤和每一步的预期结果,这样,一旦软件出现问题,我们可以很快进行重现和定位。
附录1:常用正交表
(1)L4(23)
列号 | 1 | 2 | 3 |
试验号 |
1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 |
3 | 2 | 1 | 2 |
4 | 2 | 2 | 1 |
(2)L8(27)
列号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
试验号 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 1 | 1 | 2 | 2 | 2 | 2 |
3 | 1 | 2 | 2 | 1 | 1 | 2 | 2 |
4 | 1 | 2 | 2 | 2 | 2 | 1 | 1 |
5 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
6 | 2 | 1 | 2 | 2 | 1 | 2 | 1 |
7 | 2 | 2 | 1 | 1 | 2 | 2 | 1 |
8 | 2 | 2 | 1 | 2 | 1 | 1 | 2 |
(3)L12(211)
列号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
试验号 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 |
3 | 1 | 1 | 2 | 2 | 2 | 1 | 1 | 1 | 2 | 2 | 2 |
4 | 1 | 2 | 1 | 2 | 2 | 1 | 2 | 2 | 1 | 1 | 2 |
5 | 1 | 2 | 2 | 1 | 2 | 2 | 1 | 2 | 1 | 2 | 1 |
6 | 1 | 2 | 2 | 2 | 1 | 2 | 2 | 1 | 2 | 1 | 1 |
7 | 2 | 1 | 2 | 2 | 1 | 1 | 2 | 2 | 1 | 2 | 1 |
8 | 2 | 1 | 2 | 1 | 2 | 2 | 2 | 1 | 1 | 1 | 2 |
9 | 2 | 1 | 1 | 2 | 2 | 2 | 1 | 2 | 2 | 1 | 1 |
10 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | 2 | 2 | 1 | 2 |
11 | 2 | 2 | 1 | 2 | 1 | 2 | 1 | 1 | 1 | 2 | 2 |
12 | 2 | 2 | 1 | 1 | 2 | 1 | 2 | 1 | 2 | 2 | 1 |
(4)L9(34)
列号 | 1 | 2 | 3 | 4 |
试验号 |
1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 |
3 | 1 | 3 | 3 | 3 |
4 | 2 | 1 | 2 | 3 |
5 | 2 | 2 | 3 | 1 |
6 | 2 | 3 | 1 | 2 |
7 | 3 | 1 | 3 | 2 |
8 | 3 | 2 | 1 | 3 |
9 | 3 | 3 | 2 | 1 |
(5)L16(45)
列号 | 1 | 2 | 3 | 4 | 5 |
试验号 |
1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 | 2 |
3 | 1 | 3 | 3 | 3 | 3 |
4 | 1 | 4 | 4 | 4 | 4 |
5 | 2 | 1 | 2 | 3 | 4 |
6 | 2 | 2 | 1 | 4 | 3 |
7 | 2 | 3 | 4 | 1 | 2 |
8 | 2 | 4 | 3 | 2 | 1 |
9 | 3 | 1 | 3 | 4 | 2 |
10 | 3 | 2 | 4 | 3 | 1 |
11 | 3 | 3 | 1 | 2 | 4 |
12 | 3 | 4 | 2 | 1 | 3 |
13 | 4 | 1 | 4 | 2 | 3 |
14 | 4 | 2 | 3 | 1 | 4 |
15 | 4 | 3 | 2 | 4 | 1 |
16 | 4 | 4 | 1 | 3 | 2 |
(6)L25(56)
列号 | 1 | 2 | 3 | 4 | 5 | 6 |
试验号 |
1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 | 2 | 2 |
3 | 1 | 3 | 3 | 3 | 3 | 3 |
4 | 1 | 4 | 4 | 4 | 4 | 4 |
5 | 1 | 5 | 5 | 5 | 5 | 5 |
6 | 2 | 1 | 2 | 3 | 4 | 5 |
7 | 2 | 2 | 3 | 4 | 5 | 1 |
8 | 2 | 3 | 4 | 5 | 1 | 2 |
9 | 2 | 4 | 5 | 1 | 2 | 3 |
10 | 2 | 5 | 1 | 2 | 3 | 4 |
11 | 3 | 1 | 3 | 5 | 2 | 4 |
12 | 3 | 2 | 4 | 1 | 3 | 5 |
13 | 3 | 3 | 5 | 2 | 4 | 1 |
14 | 3 | 4 | 1 | 3 | 5 | 2 |
15 | 3 | 5 | 2 | 4 | 1 | 3 |
16 | 4 | 1 | 4 | 2 | 5 | 3 |
17 | 4 | 2 | 5 | 3 | 1 | 4 |
18 | 4 | 3 | 1 | 4 | 2 | 5 |
19 | 4 | 4 | 2 | 5 | 3 | 1 |
20 | 4 | 5 | 3 | 1 | 4 | 2 |
21 | 5 | 1 | 5 | 4 | 3 | 2 |
22 | 5 | 2 | 1 | 5 | 4 | 3 |
23 | 5 | 3 | 2 | 1 | 5 | 4 |
24 | 5 | 4 | 3 | 2 | 1 | 5 |
25 | 5 | 5 | 4 | 3 | 2 | 1 |
(7)L8(4×24)
列号 | 1 | 2 | 3 | 4 | 5 |
实验号 |
1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 | 2 |
3 | 2 | 1 | 1 | 2 | 2 |
4 | 2 | 2 | 2 | 1 | 1 |
5 | 3 | 1 | 2 | 1 | 2 |
6 | 3 | 2 | 1 | 2 | 1 |
7 | 4 | 1 | 2 | 2 | 1 |
8 | 4 | 2 | 1 | 1 | 2 |
(8)L12(3×24)
列号 | 1 | 2 | 3 | 4 | 5 |
试验号 |
1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 1 | 1 | 2 | 2 |
3 | 1 | 2 | 2 | 1 | 2 |
4 | 1 | 2 | 2 | 2 | 1 |
5 | 2 | 1 | 2 | 1 | 1 |
6 | 2 | 1 | 2 | 2 | 2 |
7 | 2 | 2 | 1 | 2 | 2 |
8 | 2 | 2 | 1 | 2 | 2 |
9 | 3 | 1 | 2 | 1 | 2 |
10 | 3 | 1 | 1 | 2 | 1 |
11 | 3 | 2 | 1 | 1 | 2 |
12 | 3 | 2 | 2 | 2 | 1 |
(9)L16(44×23)
列号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
试验号 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 | 1 | 2 | 2 |
3 | 1 | 3 | 3 | 3 | 2 | 1 | 2 |
4 | 1 | 4 | 4 | 4 | 2 | 2 | 1 |
5 | 2 | 1 | 2 | 3 | 2 | 2 | 1 |
6 | 2 | 2 | 1 | 4 | 2 | 1 | 2 |
7 | 2 | 3 | 4 | 1 | 1 | 2 | 2 |
8 | 2 | 4 | 3 | 2 | 1 | 1 | 1 |
9 | 3 | 1 | 3 | 4 | 1 | 2 | 2 |
10 | 3 | 2 | 4 | 3 | 1 | 1 | 1 |
11 | 3 | 3 | 1 | 2 | 2 | 2 | 1 |
12 | 3 | 4 | 2 | 1 | 2 | 1 | 2 |
13 | 4 | 1 | 4 | 2 | 2 | 1 | 2 |
14 | 4 | 2 | 3 | 1 | 2 | 2 | 1 |
15 | 4 | 3 | 2 | 4 | 1 | 1 | 1 |
16 | 4 | 4 | 1 | 3 | 1 | 2 | 2 |