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