UI自动化最关键的一点是要选择一个适合自己项目的工具。每个测试工具都有它的优点,有它的缺点,每个被测试的项目也有它自己本身的特点。比如,项目是用什么语言编写的,C, C++, Java, or C#? 还有就是项目是什么类型的,Desktop or Web Application? 很难说一种工具就可以搞定所有或者大部分的项目,也很难说一个项目就能单纯的靠一种工具来搞定。也不太可能你专门开发一个工具来100%或者90%以上适合自己的项目,除非你的公司是微软,Google才有这个实力。因此对测试人员来说就有两个要求,一是要掌握尽可能多的工具,要了解它们的优缺点。这样才能在不同的项目中,一个项目不同的components去合理的应用它们。第二就是要有一定的开发功底,在测试工具不能胜任的时候,自己开发工具来作为补充。当然更可能的情况是每个公司只是拥有一种工具的license, 你没有选择的权利,这样你的开发能力就更加的重要了。(这里所说的开发能力不是自动化脚本的编写,主要是指C, C++, 至少是C#, Java的开发能力)。
下面说说如何去使用测试工具。最初接触就是record and replay, 感觉非常的简单。也碰到有些人竟然认为自动化测试就是record and replay。我必须说他们很无知,有这种思维的人可能以后都很难成大器,因为他们理解问题的能力太浅显了。希望论坛没有朋友会这么认为。(这里我说话不太好听,是因为为这种人生了太多的气了,希望大家谅解)。其实,我们record的script基本上每一句话都需要进行修改和优化。
UI自动化最重要的一件事情就是得到要操作的对象,比如一个textbox or button。必须先能够访问他们,得到他们才能够操作他们。这其实也是recording script的唯一的用途,告诉我们如何能够得到这个对象。这里会有两个问题,一是测试工具不能够得到这个对象。另外就是测试工具的脚本得到了这个对象,可是在replay的时候,对象却不存在。可以说UI自动化最核心的chanllenge就是是否能够得到对象了。得到了对象其他的相对来说都会容易很多。那么如果出现这两个问题怎么办呢?首先要分析是谁的问题?如果是测试工具本身的对象识别能力的问题,那只能找其他的方法绕过去了。比如自己用高级语言编些程序,或者用其他的方法来跳过操作这个对象来执行同样的操作。这个地方最能考查一个人水平的高低了,有些人束手无策,有些人就能够想到有效的办法。而且这个地方的chanllenge往往比一般的开发人员的工作要有难度。如果是程序本身的问题,就可以报bug了,让开发人员来修正。其实,程序的accessibility的bug是很多的,而且大部分公司或者开发人员都不重视,也许你报了也没用,没人理。可是他们如果不fix就会block你的Automation。对accessibility的重视程度也可以看出一个公司的自动化测试水平的高低。