当前位置:

2018-03-30    来自:

测试不仅要考虑不同的输入,而且要针对不同的输入判断输出结果是否正确。                     











过去,也用公式来描述“软件测试”,是有矛盾的。从第2个公式也可以看出,测试带有“抽样试验/检查”的含义。今天尝试用公式来表达测试,虽然不是创举,但会比曾经的公式描述测试更合理、更准确。                                        










这充分利用的中文词汇的解析,使大家容易记住这个公式。第二个公式是对第一个公式的更准确的说明,更具有对测试工作的指导意义。

                                                          










说明什么情况下,完成“检测已知的”的这部分测试,即在明确的输入/输出的情况下,检测已知的,这时一般会运用相对明确的Test Oracle:如清晰的Spec、竞品参照、一致性准则、确定性模型等。

                                                           










未知的实验分为两部分:1. 通过工具实验,产生随机、半随机(变异/模糊)的数据,进行变异测试/模糊测试等,这里可以用统计准则,或造成系统异常(如系统崩溃),容易判断,用于安全性测试、稳定性测试等;2. 通过测试人员的试验,不断质疑系统,获得系统的反馈来做出判断,见下一个slide。

                                                              










当未知因素占主导地位时,什么是软件测试?软件测试就是不断质疑这个系统。在没有实施“TDD/ATDD/BDD”实践的敏捷开发模式中,用户故事给出的信息是有限的,需要不断的探索。敏捷开发模式,也可以认为是“探索式开发”。

                                                               










结合工具的随机/半随机测试和人的探索,未知的试验进一步提升为人工智能,不断学习、不断进行数据(输入、输出、log等)挖掘,不断构造/完善验证的规则/准则,完成自动的测试,从未知逐步走到已知。

                                                                  










将测试新公式“测试=检测+试验 ”再进一步明确为:

“测试=基于确定性模型/明确测试预言的自动化测试 + 基于人工智能搜索的/基于工具随机/模糊模型的/基于人的探索式测试”。

从测试一开始,即测试需求分析开始,就将测试的范围(测试项)分为两部分:已知的(包括确定性的/稳定的)、未知的(包括不确定的/动态的)。已知的测试项,理论上都可以实现自动化;未知的部分,也可以用工具进行测试(模糊测试/随机测试等),更多地是依赖人的探索式测试。

                                                                   











这里是一个具体的应用,在敏捷开发模式下,最有效的测试策略是:新功能采用探索式测试,上个迭代已实现的特性测试(回归测试)采用自动化测试。在迭代的前期,一面对新功能随时采用探索式测试,一面开发上个迭代已实现的特性测试的自动化脚本(把不写测试用例而节约下来的时间用于脚本开发,而且这时脚本开发/调试效率高),也确实保证了回归测试是自动化的,也只有已知的测试通过自动化实现是有质量保证的,未知的测试靠人测试更有质量保证,靠工具测试是有很大的风险。



概括起来,未来理想的测试离不开上述测试公式:
测试=检测 + 试验
测试=已知的检测 + 未知的试验
测试=基于确定性模型/明确测试预言的自动化测试 + 基于人工智能搜索的/基于工具随机/模糊模型的/基于人的探索式测试”。


转自《软件质量报道》



上一篇:软件测试自动化的纠结下一篇:唯快不破,让您的应用交付跑出“加速度”!