既然选择远方,便只顾风雨兼程……

图像相似度算法的一点粗糙应用――GUI测试

上一篇 / 下一篇  2009-05-19 14:06:00

51Testing软件测试网:O*ZevQS

     因为一些私人的事情,本来早已经应该完成的一篇文章一直到今天才可以草草了结。在前面的两篇文章《图像相似度算法的C#实现及测评》《对“画条线”(Draw a line)的单元测试几点想法和实践》中,先后介绍了一个简单的会读直方图算法和一些关于GUI画图的测试想法。有必要说明的是,在《对“画条线”(Draw a line)的单元测试几点想法和实践》中提到的几种方法,最实用的是Mock法并不是今天的主题。

$KlrRP`&h0

&cUi+Uor,l0     这篇文章中继续前面的思路,简单写写有关GUI自动化测试的一点想法。51Testing软件测试网G[ `3{(Km6v

51Testing软件测试网p)u&q+A7j#Y[

问题

b hBjeG8G y9[0

6x/k p+}e0    对于画线,画图等应用程序的功能自动化测试的解决方案?51Testing软件测试网'aK8YReq:Y

+@3on(M3O im0解决思路

S1H2O~.j/tFO8@0

5JT_ mx2D0    采取截图法,即将用例中的输出截图,以图片作为输出结果,当然之前需要一个相应的图片作为预期结果,以便于比较。

!eDF2s h0G+h E0

v:J ?L/{I ?0    对于预期结果图片,可以采用的方式是先运行一次自动化测试代码截得一幅图片,然后手动检查图片是否为与其效果,如是则将该图片作为预期结果。(在功能自动化测试中,在第一次运行自动化测试脚本的时候,是应该在人工监视的条件下进行的,而更多时候在我们调试相应的脚本的时候就已经完成了相应的工作。)51Testing软件测试网8e U,w1l!^wS4x0f

y2kv&H a0示例代码51Testing软件测试网;{tv.Ur'x,t KFl

51Testing软件测试网)D%y%tZ#pv!N+a

     1,待测代码示例51Testing软件测试网*@*}a{W+f fPI

Draw A Line

V2p&M8FuU8K1SJP0      2,截图代码

%L5o7E"t5_6\"[.c%A0
SaveBMP
51Testing软件测试网%Q M!v1hNK8]4a!uH

       3,图像比较类51Testing软件测试网+ht4Iu&Y?-O M/|F

ImageComparator

&] g|`x!Rj0       4,调用输出51Testing软件测试网$\/nFC+DxIIt4{ Y

Main

%a%m]FX*J0 

%M.sd3V3x/|?|/nk051Testing软件测试网L0q&w?ts

方法改进和总结51Testing软件测试网8cu7_(T6o` y3qd

8jM|lU x"b"[Q w[0    我们可以看到这个方法存在着很多缺陷,这也是为什么我的标题中加入了“粗糙”的缘故:51Testing软件测试网? { o N2hSY T x

51Testing软件测试网9J;x"weW pd q a

     1, 部分代码植入到了源代码中,如我们在源代码中重写了Dispose方法,加入了对于保存图像的调用相关代码,也加入了保存图像的方法到应用程序中。51Testing软件测试网4|q1\#w1u ]*\-so1x3e

qBv*JK9t@+Mr0     当然,这一点我们可以通过重构以解决,把保存图片的代码抽离这个应该不会太让人纠结。把调用从Dispose方法中抽离出来,目前我的想法是使用多线程,一个线程用来运行待测程序,另外一个线程则用来截图。简单的多线程操作可以参见我的另外一篇介绍文章《Winform自动化测试解决对话框问题(多线程)》。

`?$NlK(e051Testing软件测试网j9` z[;Y)j7|

      2,截图方法使用了Windows API,我们应该使用其他更为合适的方法。

^KQt q ?`we051Testing软件测试网0r n9V`]N/`/~

      3,上面的示例代码只是为了说明一个大体思路,并不能作为一个完整的解决方案。不过笔者会利用业余时间尽快实现一个具有实践意义的解决方案。51Testing软件测试网#c|;u_N1P+[aD

51Testing软件测试网:}:L)]d$Gg.Bv1s

完整示例代码下载

/xG-bNp7L8j m051Testing软件测试网2fhp4o7szj Q

    示例代码下载51Testing软件测试网'^7fIH-m#o a6f3g\0o


TAG:

 

评分:0

我来说两句

Open Toolbar