Unix下自动化测试实践

发表于:2007-11-07 16:32

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:方耀    来源:51Testing投稿

【举例2】
背景:
        某系统M对外开放了3个基于SOAP协议的接口,而每个接口都提供了多达数十种的业务操作,而业务操作可能有先后依赖关系。
  
 工作平台:
  OS:Solaris 9.0
  DB:Oracle
  WebService:Weblogic 8.1
  Develop Language:Java
  
测试工作场景:
        构造不同业务的xml文件,比如开帐号(addUser.xml),修改帐号信息(mdifyUser.xml)等,用xmlspy发送,然后验证返回信息是否
正确;
  
测试困难分析:
        1、 然后用xmlspy工具一次发一条的方式来进行回归,需要大量的重复劳动;每次回归测试接口,都要制作达30个以上的xml文件,由于系统M的特殊性,工作环境不能直连,只能通过一台Linux服务器或者一台windows 2003server服务器中转,此windows服务器上安装有xmlspy,但windows服务器的远程连接license只有2个,经常抢不到连接,后果就是延误测试时间或者加班测试;

需求分析:
        由于Linux服务器不受连接限制,我们可以通过Linux服务器来发送
        xml文件给接口,不受windows的license限制;
        2、 需要编写工具,能批量发送xml文件给接口服务;
        3、 需要该工具能按定义顺序发送xml文件并检查返回结果是否正确,并打印出返回结果的关键字信息,供判断出错问题所在;
        4、 对于该测试工具,更主要的是要能实现可配置,比如接口个数、文件发送顺序、参数化字段、主关键字值等;
  
工具实现步骤:
        对于需求1,我们需要知道如何发送xml文件到接口服务端口(笔者开始在此事想用基于soap协议的jar来构建xml文件,后来由于需要回归的xml文件太多,全部参数化不太现实,就改用文件发送方式。此处可以共享一下笔者借鉴的东西,大家可以到网上搜索SOAPClient4XG关键字);
        对于需求2,其实很简单,知道Java取文件夹和文件操作、循环操作即可;
        对于需求3,也很简单,知道Java的文件流操作和BufferedReader类操作即可;
        对于需求4,在上面例子1中的测试工具编写要求中的第5点已说明;
 部分代码:
  try{
   // 建立同接口之间的连接,以备发送接口文件。
         URL url = new URL(SOAPUrl);
         URLConnection connection = url.openConnection();
         HttpURLConnection httpConn = (HttpURLConnection) connection;
        
         // 打开输入的接口xml文件
         FileInputStream fin = new FileInputStream(xmlFile2Send);
         // 初始一个空的字节输出流
         ByteArrayOutputStream bout = new ByteArrayOutputStream();
         copy(fin,bout);
         fin.close();
        
         byte[] b =null;
         // 进行模板的参数替换
         b=getReplace(bout,interface_index,xml_file);
        
         // 设置HTTP参数         httpConn.setRequestProperty("Content-Length",String.valueOf(b.length));
         httpConn.setRequestProperty("Content-Type","text/xml; charset=utf-8");
   httpConn.setRequestProperty("SOAPAction",SOAPAction);
         httpConn.setRequestMethod( "POST" );
         httpConn.setDoOutput(true);
         httpConn.setDoInput(true);
        
         // 发送接口文件,发送完毕后关闭输出流
         OutputStream out = httpConn.getOutputStream();
         out.write(b);   
         out.close();
        
         // 从对话通道中读取接口返回信息。
         //System.out.println(xml_file);
         outlog.println("------"+xml_path+"------");
         InputStreamReader isr = new InputStreamReader(httpConn.getInputStream());
         BufferedReader in = new BufferedReader(isr);
         String inputLine;
         int int_start;
         int int_end;
         String str_inputLine="";
        
         // 不断循环从通道中读取返回信息,直至读取为空
   while ((inputLine = in.readLine()) != null){
    str_inputLine=str_inputLine+inputLine;
   }
   
   // 打印resultNo节点的信息
   int_start=str_inputLine.indexOf("ext:resultNo");
   int_end=str_inputLine.indexOf("/ext:resultNo");
   if(str_inputLine.indexOf("ext:resultNo")>=0){
    outlog.println(xml_file+" : "+str_inputLine.substring(int_start-1,int_end+14));
   }

54/5<12345>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • hyper
    2007-12-21 11:46:33

    呵呵 思路清晰
    区别就是,windows有现成工具(QTP之类),Unix下自己编码实现

  • thefirstred
    2007-12-19 09:35:59

    例子写得很清楚,可是没看出来与其他平台有什么区别

  • cckaji
    2007-12-01 14:32:47

    hehe

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号