自动化测试一直是一个比较热门的话题,我不是谈怎样去做自动化的框架或具体的自动化技术的细节,其实自己在这方面也只是个外行,主要谈一下自动化测试在国际化测试中应用的一些注意点。我所谓的自动化指的是基于GUI回放机制的功能自动化。

  以我个人在自动化方面的经验,指望自动化工具去帮你发现测试遗漏的问题基本不可能,自动化需要测试的测试点基本上是从手工测试的用例中挑选的,在自动化测试中的检查点在手工测试用例中肯定都有,如果你的目的是靠自动化去发现问题,建议放弃这个打算。目前自动化测试应用基本上都是在做回归测试或者BAT(Build Acceptance Test)测试。

  当维护一个已经比较成熟的产品时,如果经常需要对当前产品做一些小改动,测试人员往往关注的是改动的功能点测试,但是没有改动的部分不会有问题吗?没有经过测试谁也不敢保证。如果每次改动都是很小的一部分,而其他功能的核心部分都需要重新测试一遍,测试人员的压力会相当大,而且这样重复的工作也会导致测试人员工作的积极性下降,如果对于产品的核心功能中绝大多数可以自动化的测试点进行自动化,测试人员在做测试时只重点关注改动的部分和各个功能之间有关联的部分,这样测试人员的精力将更集中,也可以花更多的时间去考虑改动对关联功能的影响,整个测试效率会大大提高,而且可以保证产品的核心功能没有问题。

  另一种使用自动化的场景是BAT测试,我们在测试过程中经常会选择一些非常重要的测试用例作为BAT的case,如果这些case全部pass,我们才会进行下面的测试,如果这些Case中有一个或多个fail了,我们会要求开发人员重新出build,这些case的选择其实和维护产品过程中回归测试的核心功能测试case选择差不多。这样出现了一个问题,我们测试人员拿到的build可能过不了BAT测试,而且有时候是连着几个build过不了BAT测试,这样会使测试人员产生抱怨,也影响大家工作的积极性,如果有可能的话,将这些BAT里面的Case做成自动化的Case,这样新build来的时候,自动化工具可以帮你判断这个build是否有问题。如果没有问题,测试人员才进行正式的测试。

  其实国际化的测试如果想去做自动化测试,也和上面两种情况类似,而且通常国际化需要自动化的case都是基于英文对应的自动化case进行修改或复用。我们现在是假设已经有了一套可以在英文上正常运行的脚本,怎么让他们能在本地化的操作系统上运行,以自动化测试工具QTP为例,首先,原来的自动化脚本是在英文操作系统上面运行的,你需要让脚本能在本地化的操作系统上面运行,其次,如果要支持本地化字符的输入输出,你要将每一个和输入有关的地方都写在脚本里,比如输入框,下拉框的选择等,因为一般做BAT脚本时,输入框如果有默认值,一般会使用默认值,下拉框也是用默认值。如果你要测试输入本地化字符,用默认值肯定是不行的。

  我们以第一个点为例,要保证脚本能在各种本地化操作系统上运行,这个其实和手工测试差不多,你要考虑哪些因素可能会影响脚本在本地化操作系统上运行,比如一般情况下软件默认会安装到C:Program Files,但是德语等语言不是这个目录,那么你的脚本需要修改,当安装软件时脚本要考虑不同的操作系统使用不同的默认安装路径。还有,对于messagebox等,在英文下显示为yes,no, 在中文会显示为是(Y),否(N),还有一些其他类似的标准控件,他们都是实现了MUI的,在不同的操作系统下他们的text属性不一样。如果你的对像识别属性中包含了text属性,脚本在本地化操作系统上运行识别不了针对这些标准控件的操作,因为找不到对象,在QTP中,针对每一个需要测试的本地化的操作系统都必须有自己的object repository,你可以在英文的object repository基础上,使用update from application功能,直接去更新对象的属性可以了。以上两个点是我在用QTP做国际化的自动化测试中感觉需要注意的地方。并不是所有的国际化测试点都适合用自动化来做的,比如UI上面的check,如果你去写脚本去check,脚本的check点会很多,维护也不好维护,成本太高,一般可以采用让QTP运行时将跑过的所有界面都抓图下来,然后人工检查的方式,你只要在options-->run里面设置Save still image captures to results 为always可以了。这样通过运行时自动抓的图可以发现一些UI方面的问题。

  其实在实际过程中也遇到过一些其他问题,有些可能是QTP自己对国际化支持的问题,比如一个输入框,脚本中有给其输入值的语句,在英文操作系统下跑没有问题,但是在日文操作系统下运行有问题,通过回放脚本,你可以发现运行时有输入的动作,但是没有回车事件,这种情况需要针对问题出现的问题进行特殊处理,这些实际上又都回到了自动化脚本的写法问题上,不详细写了。至于其他的自动化测试工具如何来做国际化的测试,可能和用QTP有些细节的不同。但是我想核心的东西应该是一样的。

注:本文出自lj1981727的51Testing软件测试博客:http://www.51testing.com/?27176