APP下载

No Coding自动化测试框架

2016-05-14鲜文军

中国科技纵横 2016年6期

【摘 要】现阶段电网软件测试方面仍然处于传统手工测试阶段,为了有效解决常见自动化测试工具普遍存在的使用成本高、测试用例有效性低,以对不同Web技术测试方案不统一等问题。我们需要提供一个测试框架,来跨越“技术”与“用户”之间的鸿沟,简化脚本的编写和维护工作、及时全面的回归测试、稳定性测试、兼容性测试成为可能,并将测试人员从日常大量的重复性工作中解放出来,可以把更多的精力投入到针对业务场景的测试设计、用户体验测试、性能测试、安全性测试等工作中。

【关键词】软件自动化测试 自动生成测试用例 自动生成测试脚本

【Abstract】 Currently, for the software testing ,the manual testing is still the main approach in Power Grid Company. The usual automation testing tools are highly cost, low effectiveness of test case, different test scheme for different Web technology. To solve these problems above, we should supply a new automation testing framework which can cross the divide between “technology” and “customer”, to make coding and maintaining script easier and regression testing, stability testing, compatibility testing comprehensive and timely. Let our quality testing engineer focus on the work of test design, user experience test, load test, and security test.

【Keywords】Software automation testing, automation test case, automation test script.

1 引言

现在的软件项目中,对于测试工作,总是有更多的测试需要去做,功能需求改变后需要测试新的功能,测试不同的配置,或者是测试一个新的平台。但是随着项目时间的逼近,分配给每个测试周期的时间也就变少,而最后,我们发现,测试工程师的时间往往都集中在了验证修正的缺陷上面。

为了有效解决常见自动化测试工具普遍存在的使用成本高、测试用例有效性低,以及对不同Web技术测试方案不统一等问题。我们需要提供一个测试框架,来跨越“技术”与“用户”之间的鸿沟,简化脚本及断言条件的编写和维护工作、提高对UI框架和业务编码规范的支持程度,从而降低成本、提升效率。

现有的自动化测试框架,大多数采用的是“录制/回访”机制。首先,使用录制功能,手动操作一遍需要测试的动作,自动化测试框架会将所有的动作,包括数据转换为脚本,这样一个完整的测试脚本就此生成。但是,这种方式,无法应对需求多变的软件项目,往往一个页面上的UI改变,随之而来的便是脚本的改动,这时需要测试人员需要打开测试脚本,定位修改。这样,测试脚本的维护往往占用了大量的时间,使得自动化测试工作效率低下。

再次,维护测试脚本,需要测试人员有着一定的编程知识,这对于不是专注于开发工作的测试人员,往往修改测试脚本便意味着需要掌握一门新的编程语言,了解编程思想,加大了测试人员的工作量,使其无法专注于测试的本质工作。因此,如何选择一个合适的测试自动化框架,是一个自动化测试小组开始启动前需要最优先考虑得一个问题。

2 自动化测试框架原理

在自动化测试中,测试用例设计的好坏是关于这个自动化测试是否成功的重要因素之一。一个好的测试用例,能够找到软件被测软件中更多的缺陷,使得软件质量能够得到更好的保障。在这个软件测试过程中,绝大部分时间都是花在测试用例的设计和测试用例的执行上,而其中公共测试用例在整个测试用例中占据了很大部分的比例。结果平时的工作实践,将公共测试用例部分的规则提取出来,形成公共测试用例生成规则库,根据界面不同的组件,自动组合生成公共测试用例和测试脚本,可以大大减少测试工作人员的工作量,提高测试的工作效率。测试框架需要应对需求变化,根据界面快速编写测试用例。应对设计/开发的变化,隔离对技术实现((UI框架、页面样式/布局)的依赖)。应对环境的变化,支持跨浏览器稳定回放。

3 跨平台应用自动化测试框架

根据上面对自动化测试框架关键成功因素的分析,结合在软件测试方面的实践,提出一个跨平台应用的自动化测试框架。在这里首先阐述该自动化测试框架的体系结构。如图1。

图1中的Dorado开发框架,业务移动化平台,网站开发框架中,已经做到了高度组件化,使得NoCoding自动化测试框架能够容易定位页面元素,提取公共测试用例组成部分。NoCoding自动化测试框架使用Selenium进行元素交互,TestNG管理测试用例,DBunit进行数据库初始化工作。

3.1 自动生成测试用例和测试脚本

分析我们工作中的测试用例,可以看出,增、删、改、查这些公共测试用例占了很大一部分,这些公共测试用例与业务无关,只与组件功能相关(如:对于一个表单来说,一个常用的公共测试用例是:输入必填字段后提交),将测试用例中的公共部分提取出来,设置为一个公共测试用例生成的规则库。测试系统时,将待测系统的页面组件提取(字符输入框,提交按钮等),根据公共测试用例生成库规则,将测试用例自动生成,并自动转化为测试脚本。这样,当界面组件更改时,只需要更新一下,便可以自动将测试用例和测试脚本生成,节省了测试人员维护脚本的工作量。

3.2 手动生成测试用例和测试脚本

因为公共测试用例无法覆盖到系统业务方面的需求,所以提供了手动生成测试用例的方法,测试人员可以像搭积木一样编写测试用例,以图2为例。

当我们在日常测试的工作时,看到上面的页面,是否会在心中默念:账号”输入***、“密码”输入***、“姓名”输入***、“性别”选择***、生日”输入***、国籍”选择***,点击“保存”按钮。

类似的,当我们日常使用各种系统时,心里还会默念:“展开/收拢”树(Tree)的某个节点、关闭某个Tab页、数据表格(Grid)的下一页/上一页、 选中数据表格(Grid)的某一行……

在跨平台应用自动化测试框架中,我们不需要知道Webdriver脚本语言的写法,我们只需要将页面组件和动作拖拽,然后像搭积木一样的组合我们的测试用例,并自动转换为相应的自动化测试脚本。

可以看到,图3上面的测试用例设计方法和我们在日常生活中使用的语言习惯是一样的。这样,测试工作人员并不需要具备开发人员的编程技能和编程思想,就可以写出自动化测试脚本,使得开发人员能够有更多的时间和精力去专注于编写好的测试用例,找出系统中更多的缺陷。

3.3 兼容性测试

Selenium,一个开源的自动化测试框架,可以通过录制和手动编写生成线性的测试脚本,测试脚本可以直接在浏览器中运行,就像真是用户所做的一样。Selenium测试可以在Windows,Linux上的Internet Explorer,Chrome,FireFox中运行。更为重要的是Selenium支持提供了强大的Webdriver API,可以支持多种语言、Java、Ruby、Python等。

4 自动化测试框架技术方案

图4自动化测试流程

使用Selenium中的webdriver api封装待测系统中的组件模块,将每个组件的操作封装,比如组件中的打开、输入、提交等操作。系统和测试人员可以根据不同的测试组件选择相对应的方法去生成测试脚本。之所以选择它的原因是它是开源的,且有强大的元素定位功能,可以通过name、id、xpath、css等方式定位元素,而且它测试直接在浏览器中运行,就像真实用户所做的一样。Selenium测试可以在 Windows、Linux上的 Internet Explorer、Mozilla和 Firefox 中运行。更重要的是Selenium支持多种语言、JAVA、Ruby、Python等。

使用TestNG来管理测试用例,TestNG是一个测试 Java应用程序的新框架。我选择TestNG是因为它是一种基于注释的测试框架,它有如下几个有点:

参数化:

一个被测试方法根据不同的入参组合出20个CASE,根据数据驱动测试的思想,我们只需要写一个测试方法,然后准备20种参数组合的数据。

失败和重运行:

一旦 TestNG中出现失败,它就会创建一个 XML配置文件,对失败的测试加以说明。如果利用这个文件执行 TestNG运行程序,TestNG就只运行失败的测试。所以,1000项测试有3项 Failed,这种场景你只需重新运行三个失败的测试脚本,而不是整个测试套件。

自动化测试中,某些测试用例可能需要前置数据才能完成,同样在每次测试过后,我们的系统中会产生大量的测试数据,而这些数据可能会影响到我们的测试结果,所以往往,我们可能需要一个“干净”的数据库。所以,在本自动化测试框架中,引入DBUnit,它通过有效地管理测试场景中的数据简化了使用数据库的工作。其设计理念就是在测试之前,备份数据库,然后给对象数据库植入我们需要的准备数据,最后,在测试完毕后,读入备份数据库,回溯到测试前的状态。

5 结语

跨平台自动化测试框架可以应用在各种不同类型项目的测试过程。当然作为一个自动测试框架,其结构也是开放的,不固定的,使用时可以根据项目自身的特点对其进行扩展和改进。

参考文献:

[1] Mosley DJ,PoseyBA.软件测试自动化 Just Enough Software Test Automation[M].邓波,黄丽娟,曹青春译.北京:机械工业出版社,2003.

作者简介:鲜文军(1982一),男,青海西宁人,本科,工程师,主要电网调度自动化工作。