Metamorphic Testing:A Review of Challenges and Opportunities
来源:ACM
蜕变测试
软件测试所面临的两个基础性问题:oracle问题和可靠的测试集问题。
oracle[测试结果参照物]:在测试时确定与实际结果进行比较的预期结果的源。它可能包括现有系统(作基准)、用户手册、或个人的专业知识等,但不是代码。
解决可靠的测试集的策略:
- random testing;
- coverage testing;
- search-based testing;
- symbolic execution.
解决oracle问题目前有的策略:
- assertion checking
- N-version programming
当oracle问题也发生的时候,有关解决可靠测试集问题的策略限制了适用性和有效性。
MT(Metamorphic Testing)可以用来产生测试用例和测试结果的验证。因此可以同时解决上述问题。
有几个术语了解一下:
- MRs(Metamorphic Relations):目标函数或者算法与多个输入和他们所期望的输出之间的关系。
- source inputs:我翻译为源输入
- source test cases:源测试用例
- follow-up test cases:基于MR产生的新的测试输入作为后续测试用例集
MT根据相应的MR验证源和后续测试用例及其输出。
一些定义:
MR定义:
f为目标函数,(x ,…,x )输入序列。对应输出(f(x ),…f(x ))。
源输入集与后续测试集定义:
扫描二维码关注公众号,回复:
3430862 查看本文章
MG定义:
MT步骤:
MT的优势:
- 概念简单(这个优势我有点不太懂…)
- 直接实现
- 对于给定的MRs的可用性易于自动化
- 低代价
通常对于MT的一些误解:
- 不是所有的必须属性都是MRs
- 并非所有MR都分为仅输入和仅输出子关系
- 并非所有的MR都是相等关系
- 无论是否有oracle测试,MT都可以应用
在测试领域的MT:
- MT是一种缓和oracle问题的方法
- MT作为一个新的策略用于生成测试用例
MT其他的扩展应用:
- 证明MRs
- 验证(Verification)、确认(Validation)以及质量评价的框架。验证和确认这两个词值得细细揣摩哈,验证是指通过提供客观证据对规定要求已得到满足的认证。确认是指满足预期用途。
- 整合其他技术
更多的研究方向:
- MT的理论方向
- 教育以及训练(这个没太理解,原文中是Teaching and Training)
- 覆盖率和可信度的新指标
- 用户终端(End-user)测试
- 众包测试
- 大数据
测试大数据分析软件
敏捷开发
例如 数据库的敏捷测试
有什么错误希望大家批评指正哈,啊啊啊,这篇文献短短续续看了好久,写的太好了!