关于品质管理所做的事情


随着开发项目的规模的日益扩大,以及复杂性和技术难度逐渐加大,如何进行品质管理是一个很大的课题。
shanon是通过自动化的回归测试来解决这方面的问题。将重复性的测试工作都交给自动化测试工具来做。从而节省测试人员的宝贵时间。
接下来介绍我们在软件品质管理方面所做的工作。

Automated Web Application UI Tests

我们使用Selenium来模拟浏览器的操作进行自动化测试。
Selenium是在Web系统的UI测试中经常使用的开源框架。与此类似的工具有QTP等。

测试用例的制作

首先是测试用例的制作。我们使用firefox的插件 Selenium IDE 来制作测试用例。用Selenium IDE来进行脚本制作的原因是它有以下的一些便利之处。
  • 能够简单的记录浏览器的操作
  • 不需要特意的调查属性的name和path
  • 输入Selenium命令的时候可以自动完成
  • 可以设定断点,方便调试
  • 可以在user-extension.js里面加入共同方法,方便调用
测试脚本以HTML形式保存并进行版本管理。

测试执行的准备

执行测试的时候,先从代码库里checkout出测试脚本。然后将HTML的测试脚本转换成可执行的java程序。 并同时将下面的功能加到转换后的java程序之中。
  • 每次页面迁移的响应时间都写到测试结果报告里面
  • 可以保存每次页面迁移后的截屏,并将其显示在测试结果报告里面
  • 转换后的代码可同时支持Selenium 1.0和2.0(WebDriver)
脚本的转换使用了 Rhino

测试执行

实际的测试执行流程如下。
  • 执行上面所提到的转换后的java程序(以下成为客户端)。
  • 客户端和SeleniumRC服务器建立连接之后启动浏览器。浏览器启动之后,通过Selenium-Core里的Javascript执行页面动作。另外,浏览器将SeleniumRC作为代理服务器进行工作。
  • 客户端通过Selenium命令以HTTP GET/POST的方式向Selenium-Core发送指令。
  • Selenium-Core解析命令并操作浏览器。
  • 客户端通过SeleniumRC服务器取得页面内容
  • 客户端得到命令的执行结果(测试结果)

Continuous Integration Tool

shanon使用jenkins来作为持续集成工具。
现在,jenkins是众多持续集成工具中使用者最多的开源软件。它的特点是使用简单方便,另外可以通过插件来扩充新功能。

通过使用jenkins,使得selenium测试的执行变得更加容易。
上面所提及的,即从版本管理系统中checkout出测试用例,将HTML的测试用例转换成可执行的java测试脚本,执行java测试脚本这一流程定义成jenkins里面的job,无论什么时候,想执行多少次也好,都可以通过点击一次开始按钮来实现,此外也可以实现定时自动执行。
通过这种方式,在shanon每天晚上都进行自动化回归测试,以实现尽早发现并修正bug。

以下是shanon使用jenkins的三个特征。
 

使用多节点并行执行测试




Jenkins原本提供多节点执行测试的功能。

我们使用亚马逊的AWS来构筑测试环境,为了并行执行测试,需要始终启动所有的AWS实例。然而,因为AWS是根据实例的使用时间收费,所以当没有测试执行的时候仍然启动AWS会使测试成本很高。为了解决这个问题,我们制作了一个jenkins的插件。
这个插件的一个功能就是根据Jenkins的执行队列的大小来启动或是终止AWS的实例。
通过这个插件,我们实现了回归自动测试的时间以及成本的最小化。

测试多个版本




灵活运用版本管理系统是顺利进行团队开发中不可欠缺的一部分。 同时对系统多个版本进行测试的好处如下。

  • 即使在产品发布后发现bug,需要紧急对应的情况下,如果可以对生产环境的版本进行自动回归测试的话,可以比较放心的进行产品紧急发布。
  • 在对应紧急线上bug的同时,不影响下一个发布版本的开发及测试
  • 可以对每个团队的版本进行测试,另外向主分支提交前也可以进行自动测试。
通过我们自己开发的Jenkins插件、对于Jenkins上的每一个测试job都可以进行多版本的执行。

多操作系统,多浏览器下的测试




现阶段设备多样化、浏览器版本升级的速度越来越快。
我们准备了Windows、Linux、Mac操作系统以及IE、Chrome、Firefox、Safari等浏览器的测试环境。同一个自动化测试用例,可以在多个操作系统以及多个浏览器上进行测试。
这一方面的测试我们使用的工具是 Selenium WebDriver 。现阶段WebDriver支持的浏览器有Chrome、Firefox、IE、Opera、Safari、Android以及iPhone的浏览器等。

多浏览器测试的流程是
  • 固定或测试执行时动态指定该job运行在哪个操作系统以及哪种浏览器之下。
  • 将HTML的测试用例从版本管理系统里checkout出来
  • 将HTML的测试用例转换为指定浏览器用的java测试脚本。
  • Java测试脚本根据浏览器设置使用不同的驱动程序来控制浏览器、进行自动化测试
このページの先頭へ