运行完Squish脚本以后,只看软件界面里的绿条和红条肯定是不行的,因为真正在做回归测试的时候,用例结果、失败报错、日志和图片这些都是需要留存下来的,而且最好还能让自动构建平台读懂。怎么把报告弄出来,还有里面没有截图该怎么找,这些问题其实就是要去配好格式、存文件的路径、怎么出截图以及归档的办法,要不然脚本跑了以后,后面想看失败原因就找不到证据了。
一、Squish测试报告怎么生成
想看这个测试结果的话,在软件界面里能看,用命令控制台也能弄出来,一般本地调试的时候就在软件里看,要是弄自动构建或者批量跑测试,用控制台命令行就更合适一些。软件里面的测试结果窗口能看到最近跑的一次情况,而且点击失败或者报错能直接跳过去,要是想看之前的,在历史记录里切换一下就可以了。
1、在软件界面里面看还有导出来
在本地调试的时候,把测试套件跑完,直接去把【Test Results】这个窗口打开,把里面的套件和用例一层层点开,就能看到通过、失败还有日志这些信息,要是有些结果能对应到代码,双击一下就能跳到代码那一行;如果里面有图片,双击也就能把图片打开。
要是想把这个结果给别人看,可以用【Export】导出来,不过这里有个地方要注意,这个软件导入结果的时候能支持XML和ZIP两种,ZIP里面是带着图片和视频这些文件的,所以要发给别人看失败现场的话,用ZIP会比较好,要是只弄一个XML文件,里面是没有附件的,后面再打开可能就看不到图了。
2、用squishrunner在命令行弄出报告
如果要批量跑的话,通常是用squishrunner--testsuite把整个套件跑起来,然后再用--reportgen去指定要什么格式的报告,它支持好几种格式,像是stdout、junit、html、xml3.x或者testcenter这些,要是自己不写的话,控制台默认就是打印出stdout那种文字。
squishrunner--testsuite./suite_demo--reportgen junit,report.xml
要是想把里面的附件、图片还有报错追踪弄得更全一点,可以用xml3.4或者更新的格式,因为从xml3.4开始,结果里面的附件、图还有脚本追踪就都能看到了,到了xml3.5连录屏文件都能支持了。
3、看什么情况选什么格式
如果只是自己本地随便看看,软件自带的结果窗口就够了;要是想跟Jenkins这些自动构建平台连起来,用JUnit XML会省事很多,因为很多平台自己就能读这种文件;要是需要管理很多个版本、很多批次还有不同平台的结果,那可能得用Test Center那种方式。这里面的junit生成器弄出来的是一个XML文件,而testcenter那个则是用来往测试中心上传的。
网页那种HTML报告虽然看起来直观,但它用的是老版静态生成器,有些新的软件特性它可能支持得不全,所以时间长的项目不能只靠HTML,比较稳妥的办法是自动构建平台用JUnit去判断输赢,同时把xml3.x的结果文件夹也存下来,这样就能把更细的截图和附件留住了。
二、Squish测试报告里截图缺失怎么排查
发现报告里没有截图的时候,先别急着觉得是报告工具坏了,很多时候是因为图片根本就没存下来,或者是存了但没放进报告里,又或者是报告格式本身就不带附件,再就是自动构建平台没把结果文件夹给存全。
1、先弄清楚图片是存成了文件还是放进了报告
这里面有两个动作挺容易搞混的,saveDesktopScreenshot()这个是把屏幕截下来,然后把图片存到运行脚本的这台机器上,要是没写具体的路径,它默认就丢到squishrunner跑起来的那个工作目录里了。
但要是想让截图在最后的报告里露面,那就得用test.attachDesktopScreenshot(),这个函数会把当前系统的桌面截个图,而且会把图片放进测试报告的文件夹里面,同时在报告里把图片的路径和说明写进去。
2、失败自动截图的功能开没开
要是想让它在失败或者报错的时候自己截图,那得去改testSettings.logScreenshotOnFail或者testSettings.logScreenshotOnError的设置,把这个打开以后,失败的提示里就会带上图片路径,在软件里双击这一条就能看到图了。
这种设置最好是写在公共的初始化脚本里面,不要只写在某一个用例里,要不然就会变成有的用例失败了有图,有的失败了没图,看着就像是报告漏掉了一样。
3、看看报告格式和附件文件夹是不是丢了
要是最后手里的报告就只有一个XML文件,没有放图片的文件夹,那就算图片生成了也是看不到的,特别是把结果从一个电脑传到另一个电脑的时候,光复制一个results.xml肯定不行,软件里既然分了不带附件的XML和带附件的ZIP,那要给别人看肯定优先拿ZIP。
用命令行弄报告也是这个道理,xml3.4后面虽然能支持附件和截图,但前提是得把整个报告文件夹都留下来,要是自动构建平台最后只存了一个JUnit XML,把放截图的文件夹给漏了,那网页上肯定是看不到图片的。
三、测试报告的时候还要注意什么
报告这个东西不是跑完以后才去想办法补救的,在刚开始写脚本的时候就得想好,把用例的日志写明白,截图的地方放对,文件夹存完整,后面找失败原因的时候才不用瞎猜。
1、关键的地方自己手动加个截图
不能光等着失败了让它自动去截,像是登录进去的主界面、弹出保存成功的提示、导出完了的页面,还有那些复杂的弹窗,在这些重要的地方可以自己写一句test.attachDesktopScreenshot()把场面留住,这样就算最后用例跑成功了,也能在报告里看看关键界面对不对。
2、存图片的路径别写到临时文件夹里
要是用saveDesktopScreenshot()把图片存下来再用别的方法放进报告,得确认这个路径能用、文件夹允许写文件,而且自动构建的用户有权限去弄,像临时文件夹、个人桌面或者下载目录这些都不好用,换一台机器跑可能就找不到了。
3、自动构建平台里要把整个结果文件夹都存下来
在自动集成环境里,截图不见了最常见的原因就是归档规则写得太少了,只把report.xml留了,结果附件文件夹、失败截图文件夹还有视频文件夹都没管,那测试平台最后就只能显示几行字,比较稳的做法是专门定一个results/文件夹,把XML、xml3.x结果、截图附件还有控制台日志一股脑全存下来。
总结
总的看下来,怎么出报告还有截图没了怎么找,关键不在于是不是只会加一个--reportgen的参数,而是得把报告和附件的关系弄明白,软件里看适合调试,命令行适合自动集成,截图要么失败时自己生成,要么手动塞进报告,最后分发和保存的时候得留着全套文件夹或者ZIP,这样报告才能变成后面找问题的证据。