作者:Zhi Quan Zhou, Shaowen Xiang, and Tsong Yueh Chen
发表期刊:《IEEE TRANSACTIONS ON SOFTWARE ENGINEERING》
发表时间:2016年3月
蜕变测试技术已经被广泛使用削弱test oracle问题,与传统方式不同的是,蜕变测试不关注每个单独测试用例的验证上,而是检查被测应用的多次执行结果中输入和输出的关系;这样的关系被称为蜕变关系,是目标程序功能中必要的属性。如果检测到不满足蜕变关系,那么也就暴露了程序的问题。蜕变测试已经被应用到许多应用的功能正确性检查中,也被用于程序验证和调试中。关于蜕变测试的效力问题已经有许多研究。
       本文应用蜕变测试技术削弱了web搜索引擎测试与质量评价中的oracle问题,同时间接证明蜕变测试多维度的可用性。论文依据NetMarketshare上全世界最受欢迎的搜索引擎结果选择了Google、Bing、 Baidu作为测试对象。
【研究背景及相关研究】
       Fig.1 是传统软件确认验收活动的流程,可以看出a,b,c,d,e五种过程中都需要不同的规范说明(specifications),然而在实际中,搜索引擎应用往往不会提供这样详细的规范说明,一方面是为了保密性,另一方面也是因为系统过于复杂。搜索引擎在实际应用中需要考虑许多问题并进行权衡,如检索质量与速度、检索质量与数量、响应时间与缓存、检索准确度与灵活性。针对每个单独的模块,开发者的设计选择是可以被验证的,但当集成到一起后,在考虑和权衡中涉及到不同因素的相互作用可能变得非常复杂以至于开发者也很难向终端用户说明清楚。
Metamorphic Testing for Software Quality Assessment-:A Study of Search EnginesMetamorphic Testing for Software Quality Assessment-:A Study of Search EnginesMetamorphic Testing for Software Quality Assessment-:A Study of Search EnginesMetamorphic Testing for Software Quality Assessment-:A Study of Search Engines
       当没有详细的规范说明时,在线的帮助文档是用户唯一的选择。但往往这些文档也只是提供了如何使用的基本操作,不会有设计的细节和原理,是无法与详细的系统规范说明等同的。并且这些在线文档通常都会说明所有的功能都达到了预定目标,例如,在Bing的在线文档中说到,“我们开发了一种算法能够提供最相关、最有用的检索结果”,然而用户并不知道是怎样才算是最相关、最有用的,并且不同的用户指标往往是不一样的。
       本文提出了一种面向用户的测试方法减轻了搜索引擎确认、验证、质量评估的困难。该方法基于以下对用户的观察:一个搜索往往是是在产生于某个特定的场景,并且包含了某些特定功能,这些功能只是搜索引擎所提供的功能中很小的一部分。因此,用户其实并不用为了验证搜索引擎功能而去全面了解整个系统;相反,用户只需要一种测试技术告诉他直接包含在搜索操作的这些功能是否传达了他想要的结果。如果测试失败了,那么就暴露出了软件系统实现中的错误或是算法的错误,但对用户而言并不需要区分这两种情况。
       论文基于以上的观察,结合蜕变测试的概念提出了面向用户的测试方法,该方法验证了蜕变测试作为一种统一的软件确认、验证、质量评价框架的可行性。文中从用户的角度来定义蜕变关系:用户可以定义他们认为一个“好”的搜索引擎应该具备什么来满足他们的特定需求,无关搜索引擎是如何设计的。换句话说,蜕变关系可以基于用户的期望来设计,以反映用户真正关心的东西,而不是基于开发者选定的设计或是算法来制定——这一点与传统的蜕变测试不一样。从这个角度来看,该方法可以进行软件确认。
       除此之外,该方法还可以用来做软件验证,因为蜕变关系不仅可以基于用户期望,也可以基于展示给用户的软件在线规范文档。因此,对搜索引擎进行测试是对在线规范和实现之间的一致性检查,也就是软件验证。
       该方法也可以用来做软件质量评价,因为使用该方法考虑到的软件质量属性不只包含功能正确性。
       本文将蜕变测试用于软件中高级别的验证过程(系统级/服务级),同时,进行了非常大规模的实验。
       第一次将蜕变测试用于测试搜索引擎的是Zhou[1],在搜索引擎多次响应中的逻辑一致性关系中得到应用。如,有这样一个蜕变关系:满足搜索标准c1的web页面数量需小于或等于满足搜索标准c1或c2的数量。Zhou做了大量的实验来验证Google、Yahoo!、Live Search基于关键词搜索功能的正确性。Imielinski and Signorini[2]则用这种逻辑一致性的蜕变关系来测试搜索引擎对语义是如何处理的。蜕变测试技术还被用于测试搜索引擎对关键字的审查功能,如一些政治敏感的词能否被审查出来。
【研究内容】
1、定义五种两类蜕变关系
“No Missing Web Page”:MPSite、MPTitle、MPReverseJD
“Consistent Ranking”:SwapJD、Top1Absent
MPSite:关系示意图如下图所示,即在原来的搜索语句后加上某一个页面的site值后,返回的搜索结果中仍应该包含该页面。
Metamorphic Testing for Software Quality Assessment-:A Study of Search Engines

MPTile: 关系示意图如下图所示,即在原来的搜索语句后加上某一个页面的Title值后,返回的搜索结果中仍应该包含该页面。

Metamorphic Testing for Software Quality Assessment-:A Study of Search Engines
MPReverseJD:关系示意图如下图所示,即倒置搜索语句中的搜索词后,返回的搜索结果应与原来的结果相似
Metamorphic Testing for Software Quality Assessment-:A Study of Search Engines
Swap JD:关系示意图如下图所示,即交换搜索语句中两个搜索词的位置,返回的搜索结果应与原来的结果相似,排序变化不大(搜索语句的意义与搜索词顺序之间无密切联系时)
Metamorphic Testing for Software Quality Assessment-:A Study of Search Engines
Top1Absent:关系示意图如图所示,即在原来的搜索语句后加上返回结果中第一个页面的site值后,该页面应仍然出现在新搜索的返回结果中。
Metamorphic Testing for Software Quality Assessment-:A Study of Search Engines
2、MR的合理性讨论及实验方案
本文对五个MR的有效性分别进行了详细的讨论,下图为实验设计方案
Metamorphic Testing for Software Quality Assessment-:A Study of Search Engines
针对不同的蜕变关系,设计了不同的实验方案,其中主要会涉及到以下问题的考虑:
  • 搜索的语言(中文及英文)
  • 搜索词的来源及范围(中英文词典)
  • 消除搜索词顺序对搜索结果的影响(规定搜索词库)
  • 预期结果与实际结果的判断(不同的MR,条件和方法不太一样,分为出错率和结果相似度两种量化方式)
3、实验结果分析
本文中采用箱型图来展现实验结果,下图为MPSite和MPTitle的实验结果。
Metamorphic Testing for Software Quality Assessment-:A Study of Search Engines
Left fig : Lower ROCOF values indicate higher reliability of the search service
Right fig : Lower ROCOA values indicate higher reliability of the search service
整体结果:
Metamorphic Testing for Software Quality Assessment-:A Study of Search Engines
4、软件质量量化评价
本文中所用到技术以及实验的结果能够对软件质量评价体系中某些指标进行量化(ISO/IEC 25010Product Quality Model 及Quality in Use Model),如下图所示,带*的为实验中涉及的指标:
Metamorphic Testing for Software Quality Assessment-:A Study of Search Engines
蜕变关系与质量指标的对应关系如下,可以看出,一个质量指标可以通过多种蜕变关系分别对应的实验结果综合得到。
Metamorphic Testing for Software Quality Assessment-:A Study of Search Engines
5、实验分析中所涉及到的统计学方法
SPSS:统计分析软件
Jaccard:用于比较有限样本集之间的相似性与差异性,常用于数据挖掘中
one-way ANOVO:单因素方差分析
Post hoc multiple comparisons:多重比较
效应值(effect size):表示不同处理下的总体均值之间差异的大小,文中用的净η的平方和Cohen‘s d来计算
【总结】
这篇论文利用蜕变测试技术,深入研究了搜索引擎工作原理,从用户角度来定义蜕变关系,这种方法能够让用户认识到一个系统是否满足了他们的特定需求;同时,应用该技术对一些关键质量属性进行度量;实验证明,该方法对用户和开发者都是有用的,(1)该方法能够有效的检测多种类型的缺陷(2)本文发现了操作的配置(operational profiles,如不同的搜索语言,不同类型的搜索词,不同的搜索域)对搜索结果有很大的影响,这个发现提示 开发者很难认清自己系统的优势和劣势,同时对用户选择一个更合适的搜索引擎以及更好的构造搜索语句也是有用的。
与用一系列变异体来评价上下文变异分析中一个测试套件的有效性类似,一些恰当选择的变异关系也可以用来评价某些软件质量属性,这也会是未来研究的领域。

参考文献:
[1]Z. Q. Zhou, S. Zhang, M. Hagenbuchner, T. H. Tse, F.-C. Kuo, andT. Y. Chen, “Automated functional testing of online search serv-
ices,” Softw. Testing, Verification Rel., vol. 22, no. 4, pp. 221–243,2012
[2]T. Imielinski and A. Signorini, “If you ask nicely, I will answer:Semantic search and today’s search engines,” in Proc. IEEE Int.Conf. Semantic Comput., 2009, pp. 184–191.


相关文章: