Maven实现Web应用集成测试自动化 -- 测试自动化(WebTest Maven Plugin)

最近在appfuse看到使用webtest-maven-plugin实现Web应用的集成测试,研究了下,感觉非常不错,对于Web应用自动构建非常有帮助,在性能测试之前可以保证Web应用的基本功能工作正常,分享给大家。

WetTest工作原理

它是基于Ant来运行的Web页面的测试工具。通过运行不同的target,测试页面上面提供的所有功能。它的工作原理是运用比较出名的HtmlUnit来实现对一个页面功能的测试。它的工作流程就是模拟一个浏览器的事件(页面提供的功能:可以调用一个Url,可以点击一个button,label等,可以为页面上的元素赋值),然后通过抓取返回的页面上的Title或者是element的值来校验是否返回预期的结果。

WetTest与Maven的集成配置

Maven的配置

在Web应用的pom.xml中引入webtest-maven-plugin,定义集成测试阶段执行测试,验证阶段执行结果验证,系统集成测试之后生成报告。同时指定Web应用的地址,测试用例所在文件,生成文件所在路径,日志级别以及遇到错误的时候采取的策略。这样在Maven构建阶段就会自动执行WebTest的测试用例。具体配置如下:

在build节点加入webtest插件  (插件具体参数参考)
                    
                        org.codehaus.mojo
                        webtest-maven-plugin
                        1.0.0
                        
                            
                                webtest-test
                                integration-test
                                
                                    test
                                
                            
                            
                                webtest-verify
                                verify
                                
                                    verify-result
                                
                            
                            
                                webtest-report-html
                                post-integration-test
                                
                                    report
                                
                            
                        
                        
                            ${project.cargo.host}
                            ${project.cargo.port}
                            src/test/resources
                            web-tests.xml
                            ${project.webtest.target}
                            ${project.build.finalName}
                            target/webtest/webtest-results
                            target/webtest/webtest-results
                            false
                            false
                            true
                            fatal
                        
                    
 
   

WebTest用例文件(Web-tests.xml)配置

 
    
   
?xml version="1.0" encoding="UTF-8"?>

 
    
]>



       

    

     
    
     
     
     
     
     
     
     
     Successfully ran all User UI tests! 
     
     
               
                    
         

            

            &config;                                       
                        
             &login;  
         
      
      
      
          
             &config; 
              
                 &login; 
                  
                 login.service}.*" regex="true"/> 
              
           
      
      
      
           
               &config; 
                
                   &login; 
                    
                   
                
            
     
  
由于一般的测试都离不开这个Login界面,所以把Login的target抽出了,还有连接服务器的配置config任务也可以抽出来放成两个 单独的文件了。login.xmlf:登陆页面具体操作





config.xmlf:webtest的配置,使用webtest-maven-plugin中configuration值做为输入参数一部分

    

配置web-tests.xml的细节可以看:官方manual
小心地雷:
1. webtest-maven-plugin很久木有更新了,里面依赖的htmlunit的版本太旧了,之前我直接使用plugin自带的依赖htmlunit2.8直接导致测试挂死,jstack dump出来的线程是running状态,把log改成debug也看不出来为什么挂死,幸好看到appfuse里面说更新了htmlunit的版本解决和jquery的兼容性问题,这是个很大的坑,一定要去htmlunit看看它兼容什么js,或者在appfuse里面看也行。
2. 在测试的时候遇到了以下异常,当时以为是语法写错了,研究了一阵子才发现是resource file中没有定义login.title,定义被改成了login.service,这里不是语法问题。。。具体复杂配置语法参考java reg官方文档
java.util.regex.PatternSyntaxException: Illegal repetition near index 2
.*${login.title}.*
3. 最开始没有把autorefresh打开,结果login page spring security3默认是回给客户端一个自刷新页面,导致测试失败


下篇:Maven实现Web应用集成测试自动化 -- 部署自动化(Cargo Maven Plugin)

你可能感兴趣的:(Java,Java,Web,maven)