首页 > 代码库 > 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


最后生成HTML:

                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(三)---比对测试截图