在自动化测试中,函数库起到很大作用。在QC的自动化项目中,适当的编目函数库,将项目无关的函数放在公共的函数库中,将项目有关的函数放在项目根目录下。我们此次项目编写了大量的自定义函数,主要有两类:一类是起到简化主脚本代码的作用,使测试脚本看起来更加简洁,例如InitCom,FreeCom 函数等(用于进行串口的初始化);一类是起到检查点的作用,例如CheckDb,Check_Object_SelectedText函数等(检查点函数)。我们这次的自动化测试项目,很少去用工具自带的检查点。QTP本身包含一些检查点,但是有局限性,有些需要直录产生的图片的支持,有些需要对象库的支持,不利于手工编码,也很不简洁。通过直接调用检查点函数,就能很方便的检查软件功能的期望效果,不依赖对象库,也不依赖图片。
代码的配置管理没有做,这是缺陷,直接后果是对于测试代码形成的版本历史无法追溯。这跟公司使用的CVS有关。事实上使用QC+QTP的架构后,我们的版本控制依赖QC所支持的配管工具,其中微软的VSS和开源的Subversion是比较著名的2个,但是这些都不能和CVS兼容。
2.3 无法识别的对象
项目中比较棘手的是遇到对象无法识别,或者识别程度不够好。对象无法识别表示计算机对该对象一无所知,也就无法正常的操作对象或者获取该对象的运行时属性,涉及到该对象的功能就无法验证它的期望值。对象无法识别有两种原因造成,一种是测试工具本身的插件就不支持识别该对象,另一种是由于将要识别的对象放在容器里边而这种容器本身不能识别。举例来说:测试工具能够识别VB中的Label控件,但是当Label控件放置在PictureBox中,就无法识别了。原因:QTP的VB插件不能识别PictureBox,因为它这个插件本身就不支持该对象;PictureBox是个容器,将Label放在其中就有了嵌套关系,工具就不能直接定位和识别到Label了。对于类似PictureBox这样的对象,一般没有办法正常的识别,所幸的是自动化测试的检查点一般不会对容器做检查;对于放置在容器中的原来可以识别的对象,可以采用遍历函数来对整个Form进行遍历,找到名称和开发名称相同的,然后再返回所需要的属性值。
对象识别程度不够好,一般指该对象的所有属性值不能唯一定义这个对象。测试工具针对这种缺陷提供了一个解决方案,就是在对象描述中有一个描述位置的属性 Ordinal Identifiers。这个属性值确定了相似对象在窗体中出现的顺序,从而能够让测试工具唯一识别。但是当某个类似对象脱离界面时,窗体中的所有类似对象就会重新排序,用之前的对象描述识别的是一个其他的类似对象。这种缺陷导致测试运行与界面的相关性提高,但目前没有更好的解决方法。在VS系列软件中,左侧菜单栏就存在这种缺陷。
文章来源于领测软件测试网 https://www.ltesting.net/