本讲,我们讲HIL自动化测试的实现原理,开始本讲之前,师子一号先介绍一下当代软件技术的一大现状。
安装在电脑上的软件,尤其是专业软件,一般不会独立存在,而是在Windows系统中注册了自己的类,方便别的软件按照某一标准,调用自己(当然,自己也都有调用别人的能力),实现一些功能。
这是Wintel生态的决定性优势,它使得一大批优秀的软件开发商更加牢牢地占据着市场的中心,使自己的产品更加好用、更加方便被使用,也更加有利于专业化分工,利用打包共享、平台化。
其中的ActiveX自动化技术,是其中的佼佼者,通用性很强。而HIL自动化技术即是利用它而实现的。通俗地将,我们通过一个软件(绝大多数开发工具都可以实现),在操作系统中找到Veristand注册的类(以及类中定义的方法和属性),然后自动打开测试工程,自动控制变量的值,自动核对变量的输出,从而实现自动化测试。
关于ActiveX,我们有必要介绍一下它。
ActiveX控件是Microsoft的ActiveX技术的一部分。ActiveX控件是可以在应用程序和网络中计算机上重复使用的程序对象。创建它的主要技术是Microsoft的ActiveX技术,其中主要是组件对象模型(COM)。ActiveX控件可以以小程序下载装入网页,也可以用在一般的Windows和Macintosh应用程序环境中。一般说来,ActiveX控件代替了原先的OCX,它与JAVAapplet的概念和功能差不多。ActiveX控件可以由不同的可以
识别Microsoft的COM技术的语言开发,它是一个组件或自包含的软件包,它可以在同一个或分布式的计算环境中开发或使用。COM的分布式支持技术称为DCOM。在实现中,ActiveX控件是一个动态链接库(DLL)模块,它包括在容器(包括COM程序接口的应用程序)当中。这种可重复使用的组件技术可以加快开发速度和质量,Windows95 /NT应用程序开发程序如Powerbuilder和Access都利用了ActiveX控件 [2] 。
Windows操作系统中以OCX结尾的文件,OCX代表“对象链接与嵌入控件”(OLE),这个技术是Microsoft提出的程序技术,用于处理桌面文件的混合使用。COM的概念已经取代OLE的一部分,Microsoft也使用ActiveX控件代表组件对象。
控件分类
自动化服务器
可以由其他应用程序编程驱动的组件。自动化服务器至少包括一个,也许是多个供其他应用程序生成和连接的基于IDispatch的接口。自动化服务器可以含有也可以没有用户界面(UI),这取决于服务器的特性和功能。
自动化控制器
那些使用和操纵自动化服务器的应用程序。
……
……
以上内容来自百度百科,挺枯燥的,就不多说了。感兴趣的朋友们自己搜索一下,或者找本书看看(反正师子一号是没有买书的)。我们直接举个应用的例子吧,matlab调用excel。
Excel=actxGetRunningServer('Excel.Application');
% 通过Excel在系统中注册的类,打开应用程序excel,%
Excel.Visible = 1;
% 设置excel可见%
Workbook = Excel.Workbooks.Add;
%通过excel的workbooks成员的Add方法,新建一个excel文件%
Workbook.SaveAs(filename);
%保存新建的excel%
Sheets = Excel.ActiveWorkbook.Sheets;
%把这个excel文件的sheets拿出来%
Sheet1 = Sheets.Item(1);
%提取其中第一个sheet%
Sheet1.Activate;
%设置sheet1为活动sheet,相当于鼠标点到这个sheet%
ColorData=背景色矩阵;
[mm,nn,pp]=size(ColorData);
for k = 1:mm
for m = 1:nn
Sheet1.Range(position).Interior.Color = Color((ColorData)(k,m));
end
end
%把ColorData矩阵中的颜色值填充到excel中%
OK,例子举完了,这就是一个简单的,通过Matlab调用Excel在系统中注册的类,从而实现对Excel批量自动操作,的例子,它们都是ActiveX的基本应用,实现了对多个单元格背景颜色的控制。
调用Veristand,做自动化测试,也是类似的原理,按照Veristand的注册规范,一步步调用就可以了,最底层的那一步,基本上就是一个循环。
额,马上5.20又到了,师子一号瞥了一眼上面的代码,又代表群众摸了摸钱包,觉得,广大男同胞们可以用excel给妹子画一张像。这个,我们的目的不是为了省钱啊,而是为了体会不一样的、很用心的感觉,恩,不是为了省钱,读书人的事情,能用钱衡量吗?肯定不能的,是吧…
可以这样做,找个周末,找来一张妹子的美哒哒的图片,取出它每个像素点的颜色,然后在excel的对应位置的单元格里,设置同样的背景颜色,一个像素一个像素地描,全描完了,就大功告成了。
只要功夫深铁杵磨成针,只要时间长肯定能做完,最后,一张神奇的图片就出来了。
很明显,excel的单元格需要设置得很小,要接近于图片中一个像素的尺寸。
这个劳动量还是很大的,所以,师子一号并不打算这么做,因为师子一号想到一个更方便的做法,来替代这种惨无人道的实现方式。
能不能把像素值的颜色数值,直接转变成上段代码中的ColorData矩阵的值呢?如果二者定义一致,那就方便多了呀,直接填进去就行了。
师子一号查阅了一下相关文档,发现,当matlab用U32值读取rgb图片时,获得的数据格式,恰好就是和ColorData兼容的。
在此,我们再次感谢那些在无数学科中创建了形形色色技术标准的伟大科学家、企业家,是他们让吾等小老百姓也可以不费力地过日子,能直接拿来套用。
然后就出现了下图视频中非常神奇的一幕(视频请移步公众号原文查看):
说实话,非常慢,时间很长,一张1M的图片大约就需要十几分钟,但是时间长也不全是坏事,也是挺享受的,尤其是看着它一笔一笔地描、一个点一个点地插入颜色,还是挺有意思的。
选择的图片,像素不要太高了,像素太高、太清晰,妹子或者哥哥可能不相信是你亲自做的,然后得到未必是被肯定,反而有可能是被数落,出力还不讨好。80*80就可以了,100*100也行,略微模糊一点点,残缺美。
就说是自己花了整整两天给准备的礼物,然后观察她的反应,如果她的反应还算让人欣慰,那你就老实交代是怎么做的,如果她的反应不太对劲,那你还是及时转换话题吧,免得生事端哈…
如果愿意的话,还可以做成黑白的,也很有韵味,很有年代感,效果很好。
师子一号还干脆做了个软件安装包,运行一下,选择个图片,它就开始画图了,稍等一会儿就完成了。有需要的朋友,可以后台联系索取哈~
关于HIL自动化测试的底层原理,确实很枯燥,所以师子一号找了个好玩的例子来介绍它们,使它们显得不那么尴尬。
后续我们不打算在它上面花太多时间,也不再介绍了,因为确实挺无趣、挺没意思的,晦涩难懂,而且师子们已经有做好的、现成的自动化测试软件可以提供给您用,连demo什么的都完全做好了,您拿去直接用就可以了。
后续我们在自动化测试方面主要讲应用和方法论、测试case设计、测试报告分析等内容,期待您的关注。