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

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

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

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

领测软件测试网

MILY: Arial">

清单 1. queuemgr.xml 中的 check-queue 函数

<function name="check-queue"> 
<sequence>
  <block name="'Queue Manager'">
  <sequence>
   <stafcmd name="'Check Queue'">
   <location>'local'</location>
   <service>'FS'</service>
   <request>'LIST DIRECTORY %s TYPE F SORTBYNAME' % queueDir</request>
   </stafcmd>
   <script>dirList = STAFResult</script>     
   <script>taskCount = len(dirList)</script>
   <script>      
   if (taskCount != 0):        # skip an empty list
    taskParam = dirList[0]        # get first entry      
   else:
    taskParam = "empty"            
   </script>
   <if expr=" taskParam != 'empty'">
   <if expr=" lastTaskParam != taskParam">
    <sequence>
    <if expr="TestRunInProgress[0] == 0">
     <script>
     TestRunInProgress[0] = 1
     TestRunStartTime[0] = now()
     </script>
    </if>
    <script>TestRunCtr[0] = TestRunCtr[0] + 1</script>
    <script> lastTaskParam = taskParam </script>
    <script> lastTaskParamJobID = taskParamJobID </script>
    <log>'QueueMgr: Executing taskParam %s' %(taskParam)</log>
    <stafcmd name="'Executing Task: %s' % taskParam">
     <location>'local'</location>
     <service>'STAX'</service>
     <request>'EXECUTE FILE %s CLEARLOGS JOBNAME %s SCRIPT " taskParam='%s'" WAIT
%s' %(TestExecuteFile, taskParam, taskParam,gblTestExecutionTimeoutMS)</request>
    </stafcmd>
    <script> taskParamJobID = STAFResult</script>
    <log>'QueueMgr: taskParam %s JobID = %s' %( taskParam, taskParamJobID)</log>
    <if expr="RC != STAFRC.Ok">
     <sequence>
     <log>'QueueMgr: Execute Test with Param File %s failed - RC: %s STAFResult: %s'
         %( taskParam,RC,STAFResult)</log>
     <terminate block="'main'"/>
     </sequence>
    </if>
    </sequence>
    <else>
    <sequence>
    <log>'QueueMgr: *** TERMINATING Queue Manager *** Task File %s is the same as the
        last one' %( taskParam)</log>
     <log>'QueueMgr: Please check the completion status of Test Record %s Job ID %s
and Re-Start the Queue Manager' %( lastTaskParam, lastTaskParamJobID)</log>
     <terminate block="'main'"/>
    </sequence>
    </else>
   </if>
   <else>
    <sequence>      
    <if expr="TestRunInProgress[0] == 1">
     <sequence>        
      <script>
      TestRunInProgress[0] = 0
      TestRunStopTime[0] = now()
      testTime = (TestRunStopTime[0] - TestRunStartTime[0])
      testHrs = int((testTime) / 3600)
      testMin = int((testTime - (testHrs * 3600)) / 60)
      testSec = int((testTime - (testHrs * 3600)) - (testMin * 60))
      TestRunCompletionDateTime = strftime('%a %b %d %Y %H:%M:%S', localtime())
      </script>
      <log>'All tests have been run; the testqueue is empty'</log>
      <log>'Test Run Completed: %s' % TestRunCompletionDateTime</log>
      <log>'%d Test Tasks Were Completed In %d Hrs %d Min %d Sec'
         % (TestRunCtr[0],testHrs,testMin,testSec)</log>         
      <script>TestRunCtr[0] = 0</script>
      <terminate block="'main'"/>
     </sequence>
    </if>  
    <block name="'Queue Check Delay'">
     <stafcmd name="'Checking TestQueue Every 5000 Sec' % gblCheckQueueDelayTimeSec">
     <location>'local'</location>
     <service>'DELAY'</service>
     <request>'DELAY 5000'</request>
     </stafcmd>     
    </block>
    </sequence>
   </else>
   </if>
   <block name="'Queue Process Delay'">
   <stafcmd name="'Checking TestQueue 5000 Sec After Last Task'">
   <location>'local'</location>
   <service>'DELAY'</service>
   <request>'DELAY 5000'</request>
   </stafcmd>     
  </block>
  </sequence>
 </block>
</sequence>
</function>

代码中第一个延时等待是对空任务队列的查看周期。测试执行人员根据个人习惯有时候希望先启动任务队列执行任务,再生成测试任务参数文件。这时查看队列的循环不能在第一次遇到队列为空时就退出,而是要不断反复查看任务队列。如果在循环之间不加延时,会造成进程对 CPU 开销过大,影响其他进程。第二个延时是前后两个测试任务执行之间的延时。这是为了让刚结束的测试进程有足够时间释放各种资源和执行多个文件操作,如日志文件和测试参数文件的转移。

  每次循环中获得测试任务文件列表时要判断第一个任务参数文件是否在上次循环中已经尝试执行过。若是,则上次任务肯定没有正常结束,否则应该将该任务文件转移到任务结果文件夹中。这时应该中止任务队列处理进程,提示测试执行人员查看 STAX 日志排除错误。

  生成任务参数文件并启动任务队列执行的 PHP 代码如下。该部分代码在测试者提交了图 3 所示的测试任务配置表单后执行。

延伸阅读

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

43/4<1234>

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

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