首页 > 代码库 > Android自动化测试之UIAutomator(三)---比对测试截图
Android自动化测试之UIAutomator(三)---比对测试截图
系列回顾:本系列主要从开发的角度介绍UiAutomator的使用,总共包括三篇:
基础入门: Android自动化测试之UiAutomator(一)
技巧篇: Android自动化测试之UiAutomator(二)(未完成)
比较工具篇 :Android自动化测试之UiAutomator(三)---比对测试截图
本文是第三篇。
转载请注明出处:http://blog.csdn.net/xzy2046/
以下是正文:
1.简介:
本文适合所有以图片作为输出的自动化开发工具(不仅限于Android)。
当我们进行一组自动化测试后,除了通过断言,往往还会采用截图比对的方式分析测试结果,这种情况下人力再次成为效率的瓶颈,能否通过一定的方式对图片进行预处理,将Diff 的区域标出,方便开发人员进行分析呢?
本文的方法是通过一个bash脚本获得图片的不同之处,并生成一个可视化的html文件。以帮助开发/测试人员快速分析测试结果。
2.环境安装:
适用环境:ubuntu,其他平台未测试。
依赖程序:imagemagick
安装方法:sudo apt-get install imagemagick
3.正文
首先介绍一下ImageMagick,这是一个图像处理工具,今天我们只会用它的两个功能:1、图片比较 2、生成缩略图。
第一步,我们准备一组基准图片,用于测试完成后的比对标准。这里我们将图片放在/tmp/base目录下。下图为我们的示例图片:
第二步,我们将自动化测试获得的截图放在/tmp/new目录下。下图为我们测试后获得的图片:
接下来我们执行imagemagick的compare命令:
compare -metric AE /tmp/base/test.png /tmp/new/test.png /tmp/result/test.png
执行该命令后我们将获得一个Diff图片,如下:
通过该命令,我们将两张图片不同的地方高亮显示了,肉眼确认时只需要关注高亮的部分。
第二步:生成HTML文件,将目录下所有文件和Diff出的图片做成缩略图,并以列表的方式显示:
首先,通过Shell遍历目录:
<pre name="code" class="html">function compare_png(){ for file in ` ls $BASEPATH ` do if [ -d $BASEPATH$file ] then compare_png $BASEPATH$file else fi fi done
接下来在else语句中加入比对语句:
diff_count=`compare -metric AE $BASEPATH$file $NEWPATH$file $EXPORTPATH$file 2>&1`
将比较出的Diff像素数传入diff_count变量。
然后通过imagemagick 的convert命令获取宽度为160像素的缩略图,这些缩略图将用于HTML文件的显示
convert -thumbnail 160 $BASEPATH$file $File1 convert -thumbnail 160 $NEWPATH$file $File2 convert -thumbnail 160 $EXPORTPATH$file $File3
echo "<br><tr>">>$result_html echo "<td><font style=\"color:red;\">$file</font></td>">>$result_html echo "<td><font style=\"color:red;\">$diff_count</font></td>">>$result_html echo "<td><font style=\"color:red;\">"Failed"</font></td>">>$result_html echo "<td><a target=_blank href=http://www.mamicode.com/$BASEPATH$file> ">>$result_html>
以下为处理结果:第一列为图片名称,第二列为差异像素数。三幅图片分别为基准图片,测试截图,和生成的Diff图片。
Shell脚本下载地址:
http://download.csdn.net/detail/xzy2046/8167831
Android自动化测试之UIAutomator(三)---比对测试截图