测试是软件制造过程中很重要的一个环节,很多NB的厂家为了宣传自己的质量或者效率或者技术,都喜欢鼓吹自动化测试。
啥是自动化?
啥能自动化?
为啥要自动化?
啥时候不要自动化?
很多家伙没考虑清楚这几个问题就走向了大规模分布式云自动化测试的不归路。
目前IT业产品无非分为:
1、c/s产品,以windows平台为主,unix系列和手机平台占少数
2、b/s产品,以ie和firefox为主,chrome和safari占少数
我就说说这两种产品类型的自动化测试。
1、啥是自动化?
这篇文章针对的自动化是指模拟手工测试人员的动作和指令,对测试行为的记录和回放。
这个测试要和单元测试,接口测试甚至性能测试区分开来。这是功能测试的自动化,不是代码和接口级别的,这两种很容易自动去跑测试任务,更不是性能测试,性能测试不太需要自动化,那个需要有人认真的冷静的观察,自动化了反而不好。
2、啥能自动化?
a)c/s产品:
用过qtp么?用过autoit么?用过ahk么?
知道窗体,知道控件,知道消息么?
如果都有了解,那就大概能知道什么东西可以自动化测试了。
上面说过,自动化测试主要是模拟功能测试人员的行为,从程序上实现这种行为就是:
识别控件,发送消息,监听事件,判断结果。
其中最难的是识别控件,不是说技术上难,所有的技术都是简单的!
是有的控件就是不能识别,你又有什么办法?
MS很人性化,他的sdk很多很多控件几乎都可以识别,而如果你们自己公司的一款c/s产品的控件无法识别,那你就要思考你们公司和MS的差距了,为啥自己写的控件无法识别?
因为你们的规范太差,或者不够人性,或者就根本不考虑可测试性,在程序上来说就是没有实现: IAccessible接口!
这个接口是干嘛的?如果不知道,你需要去了解一下MSAA(Microsoft Active Accessibility)
如果没有实现这个标准的接口,当然就很难用QTP或者AutoIT这种常规的测试工具去测试了(开发时留了钩子的除外),也就是说这个产品从设计的时候就没有考虑到自动化测试的可测性,那还做个屁的自动化?
如果决定要对一个产品做自动化测试,那请在设计的时候就考虑周全,不要为了节省开发人员的工时而不实现IAccessible接口,却要求测试人员能够做自动化的测试。
我经常听到不专业的家伙说,我们要对这个或那个产品做自动化测试,但哥哥,你能不能先考虑一下这玩意到底能不能做自动化测试啊?