• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

用 STAF/STAX + LAMP 实现多任务的自动化测试框架

发布: 2009-5-25 18:55 | 作者: 网络转载 | 来源: 测试时代采编 | 查看: 145次 | 进入软件测试论坛讨论

领测软件测试网

  清单 2. 生成任务参数文件并启动任务队列的代码

MILY: Verdana, Arial, 新宋体; BACKGROUND-COLOR: rgb(230,230,230); WORD-WRAP: break-word">$isTestStarted = false;
$testQueueDir=opendir("$testQueuePath");
      
while($fileName=readdir($testQueueDir)){        
  if ($fileName!="." and $fileName!="..") {
    $isTestStarted = true;    
    break;
  }
}
//Here should be the code to create a parameter file for this task, using parameters set
by user from the web UI.
if(!$isTestStarted){
 exec("STAF local STAX EXECUTE FILE /usr/local/staf/xml/queuemanager.xml CLEARLOGS");
}
header('Location: / viewTestList.PHP');

在这里我们并没有去检查任务处理进程是否在系统中存在,而是根据任务文件文件夹是否为空来判断。这一判断是基于若队列中有未执行完的任务,则应该有队列处理进程在进行处理的简单假设。当然偶尔也会有测试任务出错,任务处理进程非正常中止的情况发生,使得该假设失准。因此,我们要在 PHP 代码中查询任务处理进程的日志,判断其运行状态,并在页面中向测试执行人员显示出来。如果任务文件夹中尚有文件未执行,而队列处理进程又处于停止状态,就要提示测试人员排查错误并手动重启任务队列处理进程。

  STAX 任务启动后,我们也可以随时让 PHP 代码执行 exec("STAF local STAX TERMINATE JOB $JobID") 来中止任务编号为 JobID 的 STAX 任务。

  监控 STAX 运行情况:

  STAX 一旦出错,意味着任务无法运行,如果能够实时监控 STAX 任务运行状态,可提高可靠性

  清单 3. 监控 STAX 任务状态

exec("./viewStaxLog.sh $staxJobID 2>&1", $outPut);
$isStopped = false;
foreach($outPut as $outputline){
  $pos = strpos($outputline, "Stop  JobID:");
  if($pos !== false){
    $isStopped = true;
  }
}
if($isStopped){
  echo "<fond color="blue">Stopped</font><br>";
}
else{
  echo "<fond color="red">Running</font><br>";
}

  上面清单中调用了查看 STAX 日志的 shell 脚本。STAX 日志分为两种,一种是系统对任务运行情况和错误的自动记录,另一种是测试开发人员在 STAX 任务脚本中用 <log></log> 标签主动记录的日志。可以通过 STAF 命令实时查询任何 STAX 任务的日志。在获得日志后可以根据日志中的关键字(如上面代码中的“Stop JobID: ”)判断 STAX 任务的状态。

 STAX 的日志可以用 STAF 命令进行查询,其代码如下。

  清单 4. 查询 STAX 日志

if [ $1 = “user” ]
then
staf local log query machine mytest.cn.ibm.com logname STAX_Job_$2_User
else
staf local log query machine mytest.cn.ibm.com logname STAX_Job_$1
fi

  远程程序调用:

  在测试过程中,可以让 STAX 远程执行要运行的程序,这里给出实际应用中经常会调用 shell 脚本的示例,其 STAX 代码如下。

  清单 5. STAX 远程调用 shell 脚本

<process>
  <location>'local'</location>
  <command mode="'shell'" >'"./%" result %s %s'
                  % (testScriptName,testParam1,testParam2)</command>
  <workdir>'%s' % testScriptDir</workdir>
  <stderr mode="'stdout'"/>
  <returnstdout/>
</process>
<if expr="RC != 0">
  <log>'Error: RC=%s, STAXResult=%s, Error running test script'
     % (RC, STAXResult)</log>
  <else>
   <log>'Running test script: STAXResult=%s' % (STAXResult)</log>
  </else>
</if>

  分析测试结果:

  STAX 使用 Python 处理其脚本中的表达式。为了便于文本分析,使用者可以在 STAX 脚本中嵌入 Python 脚本。用这种方式可以方便地利用 Python 强大的正则表达式处理能力。下面的代码示范如何从日志文件中提取相关文字并进行对比判断。

<stafcmd>
  <location>'%s' % logServer</location>
  <service>'fileman'</service> 
  <request>'grep file "%s" machine "%s" for "%s" last CODEPAGE ascii'
        % (testLogName,logServer,testCaseName)</request>
</stafcmd>
<!—- Some other code here -->
<script>
  import re
  import string
  result = str(STAFResult[0])
  testCaseMatch = re.search("%s %s"
   % (testCaseName.upper(),expectedResult.upper()),result.upper())
</script>

  配置使用

  配置这样一个自动化测试框架,需要安装 Apache Server,MySQL,PHP,如何安装该环境,这里就不赘述。我们开发的测试框架由于其功能比较多,也需要在测试中不断的更改配置,有时还要增加测试内容。为了便于其配置,我们将PHP代码中有可能需要修改的变量都放在一个单独的 PHP 文件中,而与测试用例相关的变量用 PHP 数组的形式存放在另一个 PHP 文件中。所有要用到这些配置的 PHP 文件对其进行包含。

  总结

  LAMP 是功能强大的 Web 应用程序平台,STAF/STAX 具有很好的自动测试功能,把二者结合起来就可以形成更加灵活可靠,易于功能扩展的新的自动化测试框架,本文也通过在 WVS 产品测试中使用该框架从而获得了很好的测试效果。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

44/4<1234

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网