2。2 测试搜索引擎的难点
在传统软件开发过程中,软件测试的核心任务之一就是验证和确认活动的逐步展开。如图2。2所示,白色箭头代表验证活动,用来检查执行与其规范之间的一致性;阴影箭头代表确认活动,代表在测试或评议软件系统、设计文档和使用规范时,它们满足用户真实需求的程度。后来,Pezzè和Young进一步指出确认活动的主要对象是交付代码和系统整体说明书[27]。
图2。2软件测试中的确认与验证活动示意图
如上图表述,搜索引擎的软件确认比传统软件要困难更多。主要是因为用户无法接触到软件开发过程中的中间产品。换句话说,即图2。2中的活动b, c, d, e对于用户来说是不开放的,而这些活动又对于理解使用软件、最后交付确认是非常重要的。当确认活动仅仅被限制在a活动,且用户又不能获知具体设计信息,那么,搜索引擎对用户来说就相当于一个巨大的黑盒子,这类缺少完整规格说明书的软件产品,仅能使用户“知其然而不知其所以然”。
再加上No-Oracle环境,使得判断搜索引擎的搜索质量、划分搜索引擎等级变得更加困难。
在搜索引擎的企业内部确认活动中,也存在着很多的阻碍:第一,搜索引擎的开发人员通常是不会公布其产品的详细设计信息,一是因为这属于商业机密,二是由于搜索软件的复杂性;第二,由于网络的急速膨胀、用户自身特点、以及大数据的实时需求,使得开发人员在设计系统时,要考虑诸多因素之间的相互关系,例如搜索质量与搜索数量、搜索质量与响应速度、精度与灵活性、响应时间与数据存储等等。开发人员往往需要从多个备选方案中选取某一算法或设计,再进行改良整合。内部开发人员也许能够在非单个模块上进行确认活动,但面对最后整合的完整系统,开发人员也无法交给用户清晰的软件解释。实际上,在不少文献中都提及到,有时企业内部的开发者自己也难以解释或验证某些搜索引擎行为。
在这种情况下,在线的帮助文档 (在线说明)就成为了用户唯一能接触到的产品设计说明。然而,众所周知的是在线说明仅仅是“一个构建满足用户目标的产品使用指导”[27],并不会透露该软件的任何技术细节。总之,完整设计文档的缺失也使得用户很难对搜索引擎展开确认活动。
2。3 面向用户的测试
通过观测可知,一个搜索行为总是处于一种特定的使用情景下,一般需要调用搜索引擎某些特定功能。而这些功能也只是搜索引擎所提供全部功能中的小部分,是搜索引擎整体运行之后的具体表现。用户为了确认这一搜索行为,并不需要详细了解整个系统,仅需要知道他们所调用的功能是否能正常发挥。此时,就可以采取一种测试方法来实现上述过程。一旦测试活动中产生了失效,就暴露了搜索引擎执行中存在的缺陷。至于究竟是搜索引擎中的哪部分存在缺陷,用户本身并不需要进行区分,因为这仅仅是确认活动。
基于上述想法使用了一种新颖的测试方法——面向用户的测试[28]。之所以称之为“面向用户”,是因为该方法是从用户的角度来定义蜕变关系,而不是基于内部的算法或设计,这是与蜕变关系的传统定义方法所不同的地方。
除了基于用户的需求来设计蜕变关系,也可以根据搜索引擎的在线说明来定义蜕变关系,进行在线说明和引擎执行之间的一致性检查,即验证活动。
在此基础上再结合数据分析技术,对测试结果进行量化分析比较,就能进一步展开对搜索引擎的质量评估工作。