基于分词搜索的测试用例复用研究论文

时间:2021-08-31

  摘 要 随着软件行业快速发展,软件功能的复杂程度随之提高,软件质量逐渐受到重视。在软件的整个生命周期中,软件测试是一个非常重要的环节。软件质量在很大程度上由软件测试的完整程度所决定。然而,随着软件复杂度的提高,软件测试的工作成本在不断增加。为了减少测试中的冗余现象,提高软件测试的效率,测试用例复用技术被应用于各个软件测试环节。本文建立了一套测试用例管理系统,通过统一存储并管理测试用例,提出将分词技术应用于测试用例复用查询,提高测试用例查询结果的有效性和可复用性。

关键词 软件测试,测试用例,复用,分词

0 引言

  软件测试是在规定的条件下对程序进行操作,以发现程序错误,由此来衡量软件质量,并对其是否能满足设计要求进行评估的过程。作为软件生命周期中的重要环节,其成败直接决定着软件的最终质量。软件测试工作不仅保证了软件质量,而且降低了日后维护成本。随着我国软件产业的蓬勃发展以及对软件质量的重视,软件测试也逐渐受到软件企业的关注,正逐步成为一个新兴的产业。测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于测试某个程序路径或核实是否满足某个特定需求。

  随着软件规模越来越庞大,软件测试的工作量也与日俱增。软件测试过程中,测试用例的设计是软件测试过程的核心,直接影响了软件测试的效率。测试设计的好快直接决定着测试结果及其成效,测试用例是最有可能发现软件错误的测试数据和流程的集合。测试用例复用是将已执行过的测试用例重复使用或改进使用于不同的软件或软件测试阶段中,以此来降低测试用例设计环节的工作成本。为了提高软件测试的效率,测试用例复用技术被广泛地应用于各类软件测试的设计和回归测试阶段,用于减少测试设计阶段的成本,以缩短测试周期,提高测试效率。本文通过对可复用测试用例的收集以及分析,提出了一种以行业领域和基于分词搜索策略的测试用例复用思路,以提高测试用例的复用率。但是当测试用例管理系统中的测试用例数量过于庞大时,则不利于测试用例的筛选,因此有必要设计了推荐算法来按照一定规则对可能被复用的测试用例进行排序推荐。

1 测试用例复用研究

1.1 测试用例复用的概念

  测试用例复用是指测试工程师在执行一项新的测试工作时,通过直接调用或修改现有的、合适的测试用例,并将其应用在测试执行中的过程。如果搜索后得到的测试用例与需求完全一致,则直接复用现有测试用例,但是一般情况下,直接复用测试用例的情况很少;如果搜索到的测试用例与需求近似,则对其进行修改,得到新的测试用例之后再复用。在一定程度上,测试用例复用可以节省重新设计测试用例的时间,减少测试工程师的工作量,提高软件测试的效率。

  然而,并非所有的测试用例都适合复用,有些测试用例定制化程度较高,只适合某些特定的测试场景,这样的测试用例可复用程度不高。由此可知,测试用例要能进行复用,须具备一定的可复用特性。

1.2 可复用测试用例特性

  经过对大量可复用测试用例的收集以及分析,本文认为可复用测试用例需满足以下5个特性:标准化、通用性、有效性、独立性、小粒度1]。

  1) 标准化。测试用例通常用自然语言进行描述,但由于自然语言的非结构化特性,无统一结构的'测试用例不利于测试用例复用。因此,测试用例的设计必须使用统一的格式或结构,以消除由于自然语言的表述的差异带来的问题。标准化不仅强调测试用例的可复用能力,更偏向于测试用例管理。采用明确无歧义的语言描述测试用例并用统一结构进行存储,如表1测试用例描述案例所示2]。其中,加粗字体表示测试用例的字段,中括号 ]里的内容表示测试用例的具体内容或相关属性。

  2) 有效性:测试用例的目标是发现软件中的问题或者验证功能是否正确,因此测试用例必须是针对它的测试目的而设计,并且经审核后必须是正确、完整、适用于被测对象并且是可执行的。

  3) 通用性:测试用例不局限于具体的应用,不过分依赖于被测软件的需求、设计、环境、其他功能以及其他业务流程,可复用测试用例可多次适用于不同版本的软件测试或广泛应用于某同类软件或类似功能模块的测试。

  4) 独立性:测试用例不过分受制于测试环境、相关业务流程以及前置测试用例。理论上,测试用例与其他因素的耦合度越小,则独立性也就越高,其测试用例的可复用程度相对较高。

  5) 小粒度:通常指一个被测模块的末梢功能,测试用例的粒度设计追求功能的不可分割性。粒度越小并且相对独立的功能,针对其功能设计的用例,可复用性也就越高。

  以登录功能举例,该功能相对于整个应用系统来说粒度最小,并且与其他功能相对独立,同时,针对登录功能设计的测试用例具有较强的通用性,所以通常情况下,登录功能的测试用例具有较高的可复用性。

1.3 测试用例复用场景

  然而,并非所有的软件测试过程都适合进行测试用例复用。测试用例复用是为了避免测试用例的重复设计,提供现有的测试用例给测试工程师直接使用。因此,只有在需要重复执行的测试用例时,测试用例的复用才能真正发挥作用。通常情况下,测试用例复用主要由三类测试场景3]:

  1) 软件升级:包括版本升级、缺陷修复等升级行为。例如:一家公司的业务管理系统的升级,或某个功能的改进。通常不会引起非常大的业务流程变动或界面改动,因此前一个版本的测试用例可被大量复用。

  2) 产品测试:此类场景多存在于软件研发公司,多从事于某个领域的软件研发工作,通常此类公司有着自己的测试用例库。比如:从事ERP(企业资源计划)软件开发的公司。虽然不同行业的业务流程都不完全一致,但也有存类似的可复用业务流程,例如员工管理模块等。

  3) 第三方测评4]:第三方测评机构适用于此类测试用例复用场景。由于第三方测试机构会对大量的软件进行测评,其中不乏相同领域的软件产品。如果对每个测试软件重新设计测试用例,必然增加工作成本。因此,对于第三方测评机构测试用例复用是十分有必要的。测试用例复用在不同领域和场景中有着广泛应用,对于大量测试用例的复用需要建立在大量测试用例基础上,需要将以往设计的测试用例加以存储和管理,因此设计一套测试用例管理系统是测试用例复用成为可能的先决必要条件。