Unix下自动化测试实践

发表于:2011-10-20来源:未知作者:领测软件测试网采编点击数: 标签:Unix
网上看到很多关于用qtp、winrunner等工具来进行页面自动化测试的应用,但随着软件产业的发展,越来越多更大型的系统得到应用,随之变化的就是后台的变换,比如unix、linux、solaris、aix等。早期的很多系统都是基于windows server的应用和部署,qtp等工具很好

  【前言】

  网上看到很多关于用qtpwinrunner等工具来进行页面自动化测试的应用,但随着软件产业的发展,越来越多更大型的系统得到应用,随之变化的就是后台的变换,比如unix、linux、solaris、aix等。早期的很多系统都是基于windows server的应用和部署,qtp等工具很好的解决了自动化回归测试的问题,但对于unix平台下的测试,它就有点无能为力。而截止目前,还没有出现unix下的自动化回归测试工具,所以,我们工作中的自动化测试工具或脚本都是自己分析、设计、编码和测试,最终达到我们自己测试的需求,目的就是要提高在后台测试工作中的效率,让计算机帮我们完成大部分的手工劳动。笔者根据工作的过程和体会,把工作中unix平台下自动化测试应用的经验跟大家分享,希望能够起到抛砖引玉的效果。闲话少说,我们“挨踢”人喜欢直接,还是用例子来说明一下。

  【举例1】

  背景:

  某应用系统T作为一个信息处理平台,要接收处理各种外部系统的电子单,而这种电子单是根据一定协议进行发送和接收、并处理返回的,但这种协议不是基于通用的TCP、UDP等协议,是各系统之间统一定制的特殊行业协议。而在这种电子单中,包含了各种各样的业务信息,系统会根据这些不同的信息进行不同的处理,得到的处理结果自然也是不同的。

  应用系统T的前身是应用系统N,系统N所管理的外部系统比较分散,所用的协议与系统T也有差别,但有一个共同点就是,它们对于同样的业务信息所处理的结果应是一样,而且都会持久化保存数据库。下面的图是系统T的大概业务逻辑图:

  工作平台:

  OS:HP_UNIX

  DB:Sybase

  WebService:Tomcat

  Develop Language:Java

  测试工作场景:

  1、 按照不同业务制造大量电子单,然后发送到系统T的指定端口;

  2、 发送电子单后,将系统T执行的结果与系统N的结果进行对比,检查系统T的结果是否执行正确;

  测试困难分析:

  1、 我们没有外部系统,如何模拟外部系统发送电子单?

  2、 系统T管理了7中业务类型,而每种业务类型大概有100种业务,如果全部覆盖,大概需要700多条测试数据,手工制作不太现实;

  3、 大量的电子单的处理结果,难道都用肉眼比对?

  需求分析

  1、 编写模拟外部系统的发单客户端(基于socket协议);

  2、 使用系统N的海量电子单,然后按系统T的协议进行转换,用第一步的客户端发送(能保证覆盖所有业务);

  3、 编写程序,对系统N的处理结果和系统T的处理结果进行比对,然后打印出详细的对比结果,以供开发员定位错误问题所在;

  工具实现步骤:

  1、 由于开发平台都是java,为了跟系统T衔接的更好,我们选用java编写自动化测试工具。当然,测试工具编写人要对Java比较熟悉;

  2、 对于需求1,我们需要知道如何进行socket数据的收发(网上资源大把,可以参考);

  3、 对于需求2,我们需要知道如何进行数据库的操作(JDBC资源网上也是大把)。数据库操作的目的,就是要从系统N的数据库中把旧的电子单取出来;

  4、 对于需求3,在基于上面的第2和第3点上,当电子单发送后,系统T中会记录处理结果,然后就是要编写算法,对新旧结果进行比对;

  5、 对于测试工具还应该实现可配置化,比如服务器IP、服务端口,旧数据库的IP、用户名、密码,新数据库的IP、用户名、密码,业务类型等,这就要求引入第三方的jar包,对xml文件进行解析;

原文转自:http://www.ltesting.net