1)基于多维大数据集的统计分析;
2)基于系统演化的机器学习和知识运用;
3)对于未知结果的智能决策;
4)缺乏断言函数;
5)复杂可视化的实现。
本文选择了大数据智能应用中的搜索引擎一类作为研究对象,侧重解决缺乏断言函数问题。
搜索引擎具有大数据智能应用通用的质量评估因素,例如性能、安全性、鲁棒性、可靠性、稳定性等。当然也具有它本身特有的质量参数,例如相关性、准确性、完整性、用户满意度等。随着越来越多云端资源的开放可用,用户对于搜索引擎的检索期望度越来越高,也使得评估搜索引擎的某些关键质量水平,例如,验证搜索结果的正确性、评估抓取网页的准确性和完整性、用户对查询服务的满意度等,都因为用户的主观性评价,难以进行客观评估。对于上述问题,本次研究中会使用蜕变测试来尝试解决。而实验的最终结果也显示出:蜕变测试在搜索引擎的软件质量保证上的可用性。
本次实验主要基于百度、中文Bing、搜狗、好搜(360搜索)、淘宝五大国内主流搜索引擎来展开。该文章的框架如下:我将在第二部分介绍背景信息及技术创新;在第三部分阐述设计建立的蜕变关系,并定义这些蜕变关系的有效性;在第四部分说明具体测试用例的设计、测试的实施以及进行测试举例;第五部分利用统计量和箱线图对测试数据展开分析,并作实验总结;第六部分将介绍蜕变测试未来研究方向,提及实验中存在的不足。
2 研究背景
2。1 蜕变测试
理想状态下,软件的每一个测试输入都对应着一个预期输出,通过比较实际输出和预期输出,可以容易地验证软件的功能正确性,此种方法称之为测试断言,即Oracle机制。但是在某些环境下存在着Oracle不存在或不实用问题,基于该类问题,香港中文大学的Chen T Y等人提出了蜕变测试(Metamorphoic Testing)的概念[2]。
2。1。1 基本知识点
在蜕变测试里,蜕变关系的设计属于奠基性工作。利用待测程序的功能和性质来设计蜕变关系,再结合原始测试用例(Original Test Case)[2]来产生后续测试用例(Follow-up Test Case)[2],最后经由检查多个输入输出之间是否满足蜕变关系来检测是否有失效产生,这样就规避了对单个预期输出的设定,解决了Oracle问题。由于在相同蜕变关系下,特殊值和随机值作为原始测试用例,具较高的生成效率和测试效果[5][6],本研究中结合特殊值/随机值测试,设计出如下图2。1的测试思路框架:
图2。1 蜕变测试思路框架示意图
2。2。2 在大数据智能应用领域的发展
当前蜕变测试的研究热门之一,就是把蜕变测试与其他验证或测试方法相组合,物尽其用,发挥所长,构造高检错效率和功能强大的程序测试方法。W。 Chan等人首次在面向服务系统中使用蜕变测试 [7]。F。C。KUO等人还将蜕变测试运用到决策支持系统中,来协助使用者完成半结构化或非结构化决策[8]。之后,蜕变测试被普遍应用于众多领域,如图论计算项目[9]、数值型程序[10]、并行的编译器[11]、图像处理系统[12],交互式系统[13],铸造模拟程序[14]、普适计算函数[15]、SOA系统 [16][17]和面向对象系统[18][19][20][21]等。
07年,Z。 Q。 Zhou等人首次将蜕变测试运用在搜索引擎测试中 [22],他们利用搜索引擎响应之间的逻辑一致性建立蜕变关系,且基于谷歌搜索实现了简单的自动化测试。09年,Imielinski和Signorini进行了侧重于语义的测试[23],建立了基于语义的蜕变关系——“真正的语义搜索引擎会对两个等价语义的查询返回相同的结果”。同时,蜕变测试在其大数据智能应用领域也开始逐步发展起来。11年,卢晓丽等人在面向服务软件领域使用蜕变测试[24],分别利用蜕变测试技术实现集成测试和单元测试。同年,孙昌爱等人构造了一个在Web服务上的蜕变测试框架[25],并在某电子支付网页服务上进行了测试,验证了该框架的可行性,缓解了SOA环境下测试Web服务时的断言问题。15年,M Lindvall使用测试数据生成和测试用例结果分析策略[26],对NASA-DAT系统 数据存取层进行了一个基于模型的蜕变测试,展示了如何在开发期缺少测试断言的环境下,完成对该系统的验收测试。随着大数据智能应用在实际生活中的逐步渗透,越来越多的测试工程师把评估大数据应用系统作为重点研究课题。