编码方法有3种,一种是直录,一种是手工编,还有一种是混编。直录的长处是速度快而不便,缺点是它发生的新对象不会存到共享对象库,脚真绝对负担。手工编的长处是代码清楚简约,可读性更好,缺点是绝对费事,编码速度稍慢。混编是指重要采取手工编码方法,在人机交互庞杂时用直录进步效力,实现脚本后再运用手工编码简化脚本。咱们采取的就是混编方法。假如运用描写性编程,那就必须要完全运用手工编码了。
在主动化测试中,函数库起到很大作用。在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系列软件中,左侧菜单栏就存在这种缺点。
2。4 测试复用
主动化测试名目开发历程中,尤其要注重复用。测试复用有2种方法:第一种是通过函数复用使得测试脚本简约,并且为将来其余上位软件的测试供给效劳;第二种是测试案例的复用,包含Test的复用和Action的复用。一个Test可以蕴含多个Action,假如这个Test有特别性,无法复用,就让 Action可以复用。做用每个Action的时分,要注重它的原子性。举例:在做流程测试的时分,实践上有很多的Action在不同的流程测试中都被蕴含,此时Action就可以被设计成可复用的。然而不能简朴的将Action置成可复用就算完结,肯定要注重它的原子性。流程测试中每个Action都触及到串口,假如要让Action任务,就要在这个Action的扫尾初始化串口,在扫尾开释串口。这样当Action被其余流程引用的时分,它能力正常的运行并且不会形成串口的抵触。
2。5 对象的性命期
在手工编制脚本的历程中,会碰到这样一种状况:在脚本扫尾定义了一切在脚本中要运用的对象变量,运用这些变量操作对象。然而在测试运行时,测试工具忽然提醒找不到这个对象,测试被中断,而软件窗体还在那开着,对象并没有被遮挡和消逝。为什么会涌现这种怪异的景象呢?本来在测试运行历程中,蕴含对象的窗体被封闭过一次而被从新关上,变量指向的原有对象消逝了,新窗体的对象尽管属性和本来截然不同,然而变量所代表的对象却并不是以后窗体的对象。在这种状况下,只要从新定义对象变量,能力够操作以后窗体对象。咱们可以说,对象的性命期在对象被封闭后完结。
文章来源于领测软件测试网 https://www.ltesting.net/