软件测试方法和测试装置的制作方法

文档序号:6384783阅读:223来源:国知局
专利名称:软件测试方法和测试装置的制作方法
技术领域
本发明涉及软件测试领域,尤其涉及一种软件测试方法和测试装置。
背景技术
软件测试,一直都是软件开发中非常关键也是非常繁琐的一环;随着软件公司的发展,产品线不断扩大,软件新版本不断推出,支持的平台越来越丰富,如何高效、快速的对软件产品进行测试成为软件测试团队所面临的问题。越来越多的项目组在考虑对软件软件产品进行自动化回归测试,考虑选取适合自己项目组的自动化工具。面对数目繁多、各式各样的自动化工具,选择也不是件很容易的事情。开源自动化测试工具有Selenium、Watir 等测试工具,商业的测试工具如国际商业机器公司IBM的Rational Functional Tester> Rational Robot、惠普 HP 公司的 QuickTest Professional、Borland 公司的 SilkTest 等等。开源工具使用成本比较低,但功能不如商业工具丰富。商业工具可以提供强大的录制功能,为初学者所喜爱,但录制脚本并不是自动化测试最优方案。录制脚本中的测试数据和脚本程序混杂在一起,很难进行维护;此外,当测试用例发生较大的变更时,维护用例和重新录制用例所花费的精力不分上下。但是不管使用开源的还是商业的自动化测试工具,都需要测试人员熟悉开发编程语言。编程门槛让很大一部分的优秀业务测试专家只能对自动化测试驻足遥望。
因此,在Wb (网络)应用软件或Android (安卓)应用软件的测试领域,越来越多的测试系统开发团队在研究如何让不熟悉编程的业务专家也能编写自动化回归测试用例。现在流行的工作模式是测试人员使用XML (ExtensiveMakeupLanguage,可扩展标示语言)维护测试用例、只需要维护测试逻辑与数据相关的内容;测试系统开发人员提供处理XML用例脚本文件的测试引擎。测试人员使用测试引擎执行XML用例脚本文件完成测试过程。
但在复杂的测试情景下,为了确保测试步骤正确执行,需要增添各种验证点。比如,需要验证Web页面上的控件是否存在、或需要比较期望值与实际字符串是否相等、是否包含,是否包含前缀、后缀、或需要比较期望与实际数字是否相等,是否大于、等于、小于等。 然而现有技术的基于XML用例脚本的测试引擎并不能提供对验证点进行验证的功能;为了对测试步骤执行结果进行验证,测试人员不得不进行复杂的编程工作来实现验证点的自动验证;这使得测试人员无法专注于测试逻辑相关的内容,并且,也无法高效、快速的完成测试任务。
综上所述,现有技术的基于XML用例脚本的测试方法无法为测试人员提供验证测试步骤执行结果的功能,使得测试人员无法高效、快速的完成比较复杂的测试任务。发明内容
本发明的实施例提供了一种软件测试方法和测试装置,用以提供具有验证测试步骤执行结果的功能的基于测试用例脚本的测试方法,以便于测试人员高效、快速的完成比较复杂的测试任务。
根据本发明的一个方面,提供了一种软件测试方法,包括
对被测软件的测试用例脚本进行解析;所述测试用例脚本中记载了为各测试步骤 配置的步骤执行信息,以及为所述测试步骤中的需验证步骤配置的步骤验证信息,所述步 骤验证信息中包括验证方法名称、期望值、验证对象信息;
在根据解析结果依次执行各测试步骤的过程中,若当前的测试步骤为需验证步 骤,则根据该测试步骤的步骤执行信息执行完毕该测试步骤,得到执行结果后,调用该测试 步骤的验证方法名称所指示的方法,并将该测试步骤的期望值和验证对象信息传入到该方 法中对所述执行结果进行验证。
其中,所述验证对象信息具体为变量名;以及
所述调用该测试步骤的验证方法名称所指示的方法,并将该测试步骤的期望值和 验证对象信息传入到该方法中对所述执行结果进行验证,具体为
调用该测试步骤的验证方法名称所指示的方法,并将该测试步骤的期望值,以及 该测试步骤的验证对象信息传入到该方法中;该方法根据所述期望值,对所述执行结果中 由所述变量名指示的变量的值进行验证;
或者,所述验证对象信息具体为验证对象的定位信息;以及
所述调用该测试步骤的验证方法名称所指示的方法,并将该测试步骤的期望值和 验证对象信息传入到该方法中对所述执行结果进行验证,具体为
调用该测试步骤的验证方法名称所指示的方法,并将该测试步骤的期望值,以及 该测试步骤的验证对象的定位信息传入到该方法中,由该方法根据所述验证对象的定位信 息从作为执行结果的页面中定位验证对象,并根据所述期望值对定位的验证对象的值进行 验证。
进一步,所述步骤验证信息还包括重试次数设定值;以及
在所述将该测试步骤的期望值传入到该方法中对所述执行结果进行验证后,还包 括
若该方法返回的验证结果为失败,则依据该测试步骤的重试次数设定值进行重 试
在一次重试过程中,重新根据该测试步骤的步骤执行信息执行该测试步骤后,再 调用该测试步骤的验证方法名称所指示的方法,重新根据该测试步骤的期望值对该测试步 骤的执行结果进行验证;
若确定该次重试过程中该方法返回的验证结果仍为失败,则在确定重试的次数小 于该测试步骤的重试次数设定值后,进行下次重试过程;
若确定该次重试过程中该方法返回的验证结果为成功,则确定该测试步骤的最终 验证结果为成功。
进一步,所述步骤验证信息还包括验证点类别;以及
在所述依据该测试步骤的重试次数设定值进行重试后,还包括
若得到的该测试步骤的最终验证结果为失败,则
若确定该测试步骤的验证点类别为断言类别,则终止所述测试用例脚本的执行, 报告失败结果;
若确定该测试步骤的验证点类别为验证类别,则根据下个测试步骤的步骤执行信息执行下个测试步骤。
进一步,所述步骤验证信息还包括验证工具信息;以及
在所述调用该测试步骤的验证方法名称所指示的方法之前,还包括
确定所述方法所属工具;以及
所述测试用例脚本为可扩展标示语言XML格式的。
根据本发明的另一个方面,还提供了一种软件测试装置,包括
测试用例解析模块,用于对被测软件的测试用例脚本进行解析;所述测试用例脚 本中记载了为各测试步骤配置的步骤执行信息,以及为所述测试步骤中的需验证步骤配置 的步骤验证信息,所述步骤验证信息中包括验证方法名称、期望值、验证对象信息;
测试执行模块,用于在根据所述测试用例解析模块的解析结果依次执行各测试步 骤的过程中,若当前的测试步骤为需验证步骤,则根据该测试步骤的步骤执行信息执行完 毕该测试步骤,得到执行结果后,调用该测试步骤的验证方法名称所指示的方法,并将该测 试步骤的期望值和和验证对象信息传入到该方法中对所述执行结果进行验证。
进一步,所述步骤验证信息还包括重试次数设定值;以及
所述测试执行模块在所述将该测试步骤的期望值传入到该方法中对所述执行结 果进行验证后,还用于若确定该方法返回的验证结果为失败,则依据该测试步骤的重试次 数设定值进行重试
在一次重试过程中,所述测试执行模块重新根据该测试步骤的步骤执行信息执行 该测试步骤后,再调用该测试步骤的验证方法名称所指示的方法,重新根据该测试步骤的 期望值对该测试步骤的执行结果进行验证;
若所述测试执行模块确定该次重试过程中该方法返回的验证结果仍为失败,则在 确定重试的次数小于该测试步骤的重试次数设定值后,进行下次重试过程;
若所述测试执行模块确定该次重试过程中该方法返回的验证结果为成功,则确定 该测试步骤的最终验证结果为成功。
进一步,所述步骤验证信息还包括验证点类别;以及
所述测试执行模块还用于在所述依据该测试步骤的重试次数设定值进行重试后, 若得到的该测试步骤的最终验证结果为失败,则若确定该测试步骤的验证点类别为断言 类别,则终止所述测试用例脚本的执行,报告失败结果;若确定该测试步骤的验证点类别为 验证类别,则根据下个测试步骤的步骤执行信息执行下个测试步骤。
其中,所述测试执行模块包括测试步骤执行单元、验证单元、重试单元;
所述测试步骤执行单元用于根据所述解析结果依次执行各测试步骤的过程中,若 当前的测试步骤为需验证步骤,则根据该测试步骤的步骤执行信息执行完毕该测试步骤, 得到执行结果后,发送验证通知;
所述验证单元用于在接收到所述测试步骤执行单元发送的验证通知后,调用该测 试步骤的验证方法名称所指示的方法,并将该测试步骤的期望值和和验证对象信息传入到 该方法中对所述执行结果进行验证;以及
所述验证单元还用于在所述将该测试步骤的期望值传入到该方法中对所述执行 结果进行验证后,还用于若确定该方法返回的验证结果为失败,则向所述重试单元发送重 试通知;
所述重试单元用于对该测试步骤的重试次数计数,并在接收所述重试通知后,若 确定该测试步骤的重试次数小于该测试步骤的重试次数设定值,则决定对该测试步骤进行 一次重试,向所述测试步骤执行单元发送重试通知;
所述测试步骤执行单元还用于在接收到所述重试通知后,重新根据该测试步骤的 步骤执行信息执行该测试步骤,并得到执行结果后,发送所述验证通知;以及
所述重试单元还用于在接收所述重试通知后,若确定该测试步骤的重试次数等于 或大于该测试步骤的重试次数设定值,则若确定该测试步骤的验证点类别为断言类别,则 向所述测试执行模块发送终止通知;若确定该测试步骤的验证点类别为验证类别,则向所 述测试执行模块发送继续通知;以及
所述测试步骤执行单元还用于根据所述终止通知,终止所述测试用例脚本的执 行,报告失败结果;或根据所述继续通知执行下个测试步骤。
进一步,所述装置还包括
测试用例生成模块,用于接收测试人员为各测试步骤配置的步骤执行信息,以及 测试步骤中的需验证步骤的步骤验证信息;根据接收的信息按预定格式生成所述测试用例 脚本;
测试用例存储模块,用于存储所述测试用例生成模块生成的测试用例脚本;以及
所述测试用例解析模块还用于根据测试指令从所述测试用例存储模块获取所述 测试用例脚本。
本发明实施例的技术方案中,由于测试人员可以根据验证需求,在测试用例脚本 中配置相应的验证方法名称;在对测试用例脚本进行解析后,利用Java反射机制可动态 调用方法、类的特性,实现根据配置的验证方法名称调用相应方法的功能,从而实现验证需 求;在此过程中,测试人员不用涉及编程,而只需了解一些可实现验证需求的方法的名称, 使得测试人员更专注于测试逻辑相关的内容,可以高效、快速的完成比较复杂的测试任务。
进一步,测试人员还可在测试用例脚本中配置重试次数预定值;根据配置的重试 次数预定值来控制验证重试的次数,测试人员可以方便地实现验证的多次重试;进一步有 助于测试人员高效、快速的完成比较复杂的测试任务。


图1为本发明实施例的对被测软件进行测试的方法流程图2为本发明实施例的软件测试装置的内部结构框图3为本发明实施例的测试执行模块的内部结构框图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实 施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为 了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以 实现本发明的这些方面。
本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限 于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计 算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的 一个进程和/或线程内,一个模块也可以位于一台计算机上和/或分布于两台或更多台计 算机之间。
本发明的发明人发现测试过程中不同的验证需求需要不同的功能函数来实现;而 多数验证需求可通过利用Java (—种面向对象的程序设计语言)反射机制动态调用所提供 的功能函数来实现。
例如,对于验证控件是否存在的验证需求,以开放源代码的自动化测试工具 Selenium为例,可调用的方法包括如下
isElementPresent (String argO),用于判断某个页面元素是否存在;
isAlertPresent (String argO),用于判断某个提示对话框是否存在;
isConfirmationPresent O (String argO),用于判断某个确认对话框是否存在;
isTextPresent (String argO),用于判断某个文本字段是否存在。
对于字符串的验证需求,则可以利用JUnit (Java语言的单元测试框架)的 assertThat断言语法,其可调用的方法包括如下
assertThat (testedString, containsString (〃 期待值〃)),用于判断字符串是否 包含;
assertThat (testedString, endsWith(〃后缀〃)),用于判断字符串是否包含某个后缀;
assertThat (testedString, startsffith (〃 前缀〃)),用于判断字符串是否包含某 个前缀;
assertThat (testedValue, equalToIgnoringCase (expectedValue)),用于判断字 符串是否相等,并忽略大小写。
对于数值的验证需求,利用JUnit assertThat断言语法提供的可调用的方法包 括
assertThat (testedNumber, greaterThan (16. 0)),用于判断数值是否大于某个数 值比如数值16.0 ;
assertThat (testedNumber, IessThan (16. 0)),用于判断数值是否小于某个数值 比如数值16. O ;
assertThat (testedNumber, greaterThanOrEqualTo (16. 0)),用于判断数值是否 大于或等于某个数值比如数值16. O ;
assertThat (testedNumber, IessThanOrEqualTo (16. 0)),用于判断数值是否小于 或等于某个数值比如数值16.0;
JUnit assertThat断言语法提供的可调用方法还可以支持其他验证需求,比如集 合和列表等等。
利用Java反射机制动态调用Selenium、JUnit等提供的具有较佳的可读性的方 法,测试人员根据某个方法的方法名称就可以了解到该方法的大概功能;如果测试人员根 据验证需求编写程序代码来调用这些方法,并不能显著提高测试效率;然而,如果允许测试 人员将可以实现验证需求的方法的方法名称配置到测试用例脚本中;并对测试用例脚本进行解析后,利用Java反射机制可动态调用方法、类的特性,实现根据配置的方法名称调用 相应方法的功能,从而实现验证需求。这样,测试人员在实现验证需求时,只需在测试用例 脚本中配置相应的方法名称,而不用涉及编程;使得测试人员更专注于测试逻辑相关的内 容,可以高效、快速的完成比较复杂的测试任务。
下面结合附图详细说明本发明实施例的技术方案。本发明实施例提供的软件测 试装置可以为测试人员提供测试用例的配置界面;通过配置界面,测试人员可以输入各测 试步骤的步骤执行信息;测试步骤的步骤执行信息可以包括步骤编号(index)、步骤类型 (type)、步骤名称(name)、步骤参数。若测试步骤所涉及的是页面控件,则步骤参数为测试 元素对象的定位信息,在测试用例脚本中以XPath (XML Path Language,XML路径语言)标 签标示;若测试步骤需要输入数据,则步骤参数为需要输入的数据,以VALUE (数据)标签标/Jn ο
对于测试步骤中的需验证步骤,测试人员还可通过配置界面,输入该测试步骤的 步骤验证信息。测试步骤的步骤验证信息可以包括验证方法名称、期望值;
进一步,测试步骤的步骤验证信息还可包括重试次数设定值、验证点类别、验证 对象的定位信息;进一步,步骤验证信息还可包括验证工具信息。
配置界面在接收了测试人员输入的各测试步骤的相关信息后,软件测试装置按预 定格式生成测试用例脚本。
下面示出了一个具体的XML格式的测试用例脚本示例
权利要求
1.一种软件测试方法,包括 对被测软件的测试用例脚本进行解析;所述测试用例脚本中记载了为各测试步骤配置的步骤执行信息,以及为所述测试步骤中的需验证步骤配置的步骤验证信息,所述步骤验证信息中包括验证方法名称、期望值、验证对象信息; 在根据解析结果依次执行各测试步骤的过程中,若当前的测试步骤为需验证步骤,则根据该测试步骤的步骤执行信息执行完毕该测试步骤,得到执行结果后,调用该测试步骤的验证方法名称所指示的方法,并将该测试步骤的期望值和验证对象信息传入到该方法中对所述执行结果进行验证。
2.如权利要求I所述的方法,其特征在于,所述验证对象信息具体为变量名;以及 所述调用该测试步骤的验证方法名称所指示的方法,并将该测试步骤的期望值和验证对象信息传入到该方法中对所述执行结果进行验证,具体为 调用该测试步骤的验证方法名称所指示的方法,并将该测试步骤的期望值,以及该测试步骤的验证对象信息传入到该方法中;该方法根据所述期望值,对所述执行结果中由所述变量名指示的变量的值进行验证; 或者,所述验证对象信息具体为验证对象的定位信息;以及 所述调用该测试步骤的验证方法名称所指示的方法,并将该测试步骤的期望值和验证对象信息传入到该方法中对所述执行结果进行验证,具体为 调用该测试步骤的验证方法名称所指示的方法,并将该测试步骤的期望值,以及该测试步骤的验证对象的定位信息传入到该方法中,由该方法根据所述验证对象的定位信息从作为执行结果的页面中定位验证对象,并根据所述期望值对定位的验证对象的值进行验证。
3.如权利要求I或2所述的方法,其特征在于,所述步骤验证信息还包括重试次数设定值;以及在所述将该测试步骤的期望值传入到该方法中对所述执行结果进行验证后,还包括若该方法返回的验证结果为失败,则依据该测试步骤的重试次数设定值进行重试在一次重试过程中,重新根据该测试步骤的步骤执行信息执行该测试步骤后,再调用该测试步骤的验证方法名称所指示的方法,重新根据该测试步骤的期望值对该测试步骤的执行结果进行验证; 若确定该次重试过程中该方法返回的验证结果仍为失败,则在确定重试的次数小于该测试步骤的重试次数设定值后,进行下次重试过程; 若确定该次重试过程中该方法返回的验证结果为成功,则确定该测试步骤的最终验证结果为成功。
4.如权利要求3所述的方法,其特征在于,所述步骤验证信息还包括验证点类别;以及 在所述依据该测试步骤的重试次数设定值进行重试后,还包括 若得到的该测试步骤的最终验证结果为失败,则 若确定该测试步骤的验证点类别为断言类别,则终止所述测试用例脚本的执行,报告失败结果; 若确定该测试步骤的验证点类别为验证类别,则根据下个测试步骤的步骤执行信息执行下个测试步骤。
5.如权利要求4所述的方法,其特征在于,所述步骤验证信息还包括验证工具信息;以及 在所述调用该测试步骤的验证方法名称所指示的方法之前,还包括 确定所述方法所属工具;以及 所述测试用例脚本为可扩展标示语言XML格式的。
6.一种软件测试装置,包括 测试用例解析模块,用于对被测软件的测试用例脚本进行解析;所述测试用例脚本中记载了为各测试步骤配置的步骤执行信息,以及为所述测试步骤中的需验证步骤配置的步骤验证信息,所述步骤验证信息中包括验证方法名称、期望值、验证对象信息; 测试执行模块,用于在根据所述测试用例解析模块的解析结果依次执行各测试步骤的过程中,若当前的测试步骤为需验证步骤,则根据该测试步骤的步骤执行信息执行完毕该测试步骤,得到执行结果后,调用该测试步骤的验证方法名称所指示的方法,并将该测试步骤的期望值和和验证对象信息传入到该方法中对所述执行结果进行验证。
7.如权利要求6所述的装置,其特征在于,所述步骤验证信息还包括重试次数设定值;以及 所述测试执行模块在所述将该测试步骤的期望值传入到该方法中对所述执行结果进行验证后,还用于若确定该方法返回的验证结果为失败,则依据该测试步骤的重试次数设定值进行重试 在一次重试过程中,所述测试执行模块重新根据该测试步骤的步骤执行信息执行该测试步骤后,再调用该测试步骤的验证方法名称所指示的方法,重新根据该测试步骤的期望值对该测试步骤的执行结果进行验证; 若所述测试执行模块确定该次重试过程中该方法返回的验证结果仍为失败,则在确定重试的次数小于该测试步骤的重试次数设定值后,进行下次重试过程; 若所述测试执行模块确定该次重试过程中该方法返回的验证结果为成功,则确定该测试步骤的最终验证结果为成功。
8.如权利要求7所述的装置,其特征在于,所述步骤验证信息还包括验证点类别;以及 所述测试执行模块还用于在所述依据该测试步骤的重试次数设定值进行重试后,若得到的该测试步骤的最终验证结果为失败,则若确定该测试步骤的验证点类别为断言类别,则终止所述测试用例脚本的执行,报告失败结果;若确定该测试步骤的验证点类别为验证类别,则根据下个测试步骤的步骤执行信息执行下个测试步骤。
9.如权利要求8所述的装置,其特征在于,所述测试执行模块包括测试步骤执行单元、验证单元、重试单元; 所述测试步骤执行单元用于根据所述解析结果依次执行各测试步骤的过程中,若当前的测试步骤为需验证步骤,则根据该测试步骤的步骤执行信息执行完毕该测试步骤,得到执行结果后,发送验证通知; 所述验证单元用于在接收到所述测试步骤执行单元发送的验证通知后,调用该测试步骤的验证方法名称所指示的方法,并将该测试步骤的期望值和和验证对象信息传入到该方法中对所述执行结果进行验证;以及 所述验证单元还用于在所述将该测试步骤的期望值传入到该方法中对所述执行结果进行验证后,还用于若确定该方法返回的验证结果为失败,则向所述重试单元发送重试通知; 所述重试单元用于对该测试步骤的重试次数计数,并在接收所述重试通知后,若确定该测试步骤的重试次数小于该测试步骤的重试次数设定值,则决定对该测试步骤进行一次重试,向所述测试步骤执行单元发送重试通知; 所述测试步骤执行单元还用于在接收到所述重试通知后,重新根据该测试步骤的步骤执行信息执行该测试步骤,并得到执行结果后,发送所述验证通知;以及 所述重试单元还用于在接收所述重试通知后,若确定该测试步骤的重试次数等于或大于该测试步骤的重试次数设定值,则若确定该测试步骤的验证点类别为断言类别,则向所述测试执行模块发送终止通知;若确定该测试步骤的验证点类别为验证类别,则向所述测试执行模块发送继续通知;以及 所述测试步骤执行单元还用于根据所述终止通知,终止所述测试用例脚本的执行,报告失败结果;或根据所述继续通知执行下个测试步骤。
10.如权利要求6-9任一所述的装置,其特征在于,还包括 测试用例生成模块,用于接收测试人员为各测试步骤配置的步骤执行信息,以及测试步骤中的需验证步骤的步骤验证信息;根据接收的信息按预定格式生成所述测试用例脚本; 测试用例存储模块,用于存储所述测试用例生成模块生成的测试用例脚本;以及所述测试用例解析模块还用于根据测试指令从所述测试用例存储模块获取所述测试用例脚本。
全文摘要
本发明公开了一种软件测试方法和测试装置,所述方法包括对被测软件的测试用例脚本进行解析;在根据解析结果依次执行各测试步骤的过程中,若当前的测试步骤为需验证步骤,则根据该测试步骤的步骤执行信息执行完毕该测试步骤,得到执行结果后,调用该测试步骤的验证方法名称所指示的方法,并将该测试步骤的期望值和验证对象信息传入到该方法中对所述执行结果进行验证。由于测试人员可以根据验证需求,在测试用例脚本中方便地配置相应的验证方法名称;在对测试用例脚本进行解析后,可根据配置的验证方法名称动态调用相应方法实现验证需求;此过程中,测试人员不用涉及编程,使得测试人员更专注于测试逻辑相关的内容,高效、快速完成复杂测试任务。
文档编号G06F11/36GK102981958SQ201210557000
公开日2013年3月20日 申请日期2012年12月19日 优先权日2012年12月19日
发明者祝尚元 申请人:青岛海信传媒网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1