2)组织方面,很多公司都建立了系统测试部,但真正有独立自动化测试小组的公司廖廖无几,有的公司也试图让系统测试人员来从事自动化测试,这是一个误区。因为系统测试人员往往偏向于黑盒测试, 他们对于代码逻辑和模块接口方面了解非常少, 很难从事测试工具的开发和自动化测试工具的应用。共创力咨询认为, 自动化测试小组应独立于测系统测试团队, 自动化测试小组更多的职责在于提高测试用例的自动化率, 和维护自动化测试脚本。测试工具开发小组可以独立于测试工具应用小组, 因为前者更偏向于开发, 这个团队的身份其实跟开发团队没有什么两样,他们负责收集自动化工具开发需求,并进行设计开发和验证。后者主要负责工具应用, 他们需要把工具应用到公司的业务中去。自动化测试工具应用小组可以参与一部分的系统测试工作,以撑握和熟悉具体的业务知识, 更好的提高软件自动化率。因此,在组织方面,共创力建议企业开发过程中自动化测试和手工测试分开, 自动化测试分为两个小组, 一个是做工具开发, 一个是自动化工具的应用,两个小组如果人数不多,可以合二为一, 如果人数超过一定规模, 如10个以上, 则可以成立两个单独的小组。
3)在流程方面, 自动化测试需要有相关测试流程的保障。自动化测试不再跟手工测试一样, 在软件打完包之后进行测试, 自动化测试在编写脚本或写测试用例的时候需要跟开发人员人间作深入的沟通, 了解软件的逻辑实现和模块之间的接口, 如UI的控件实现方式变化之后,开发人员应及时通知测试开发人员, 对测试的脚本进行调整和维护, 对开发人员提交文档的规范性有更高的要求。案例2中的K公司采用了敏捷开发模式, 对于自动化测试工具的应用,显然不太适合, 因为频繁的UI变更,将导致测试用例的维护工作量较大, 还不如做手工测试, 针对K公司这种情况, 共创力建议除了使用自动化测试做一些后台的测试之外,前台依然采用手工测试。
4)在人方面,自动化测试如何得到保障呢? 最近笔者统计了一下目前研发职位的招聘情况,软件测试人员的招聘职位较多,尤其是高级测试工程师供不应求, 究其原因, 目前很多企业已经意识到了测试这块短板, 但缺乏高水平的测试工程师, 懂开发的工程师都不愿从事测试, 从事测试的工程师基本不懂开发。。。。。这是一种不好的现象, 在华为公司,许多测试工程师同样懂软件开发,在进入公司前需要考查C++基本编程,而且,测试人员的工资待遇不比开发人员差,这就为公司开展各项自动化测试提供了一个基本条件,人员可以得到保证。国内除了几家大公司如华为,中兴,迈瑞,阿里,腾讯等之外,许多公司的测试人员都是不懂开发的,很难真正的推行自动化测试。。。。。
综上所述, 企业要推行软件自动化测试,不是一件容易的事, 领导不但需要支持建立测试开发团队,而且需要招聘有经验的自测试化测试人员,并树立自动化测试部门的权威性,真正给企业带来效益,降低人工测试的成本。随着国内软件企业对质量意识的提升,相信自动化测试逐渐会取代一部分的手工测试,自动化测试的地位也将逐渐显现出来。
最后,笔者根据多年的自动化测试实践经验, 总结出一些经验和教训, 给大家分享:
1)并不是所有的软件都适合自动化测试, 像有些需要人机界面进行测试的, 只能使用手工测试。如需要通过眼睛判断颜色或通过人操作键盘等等。
2)自动化测试工具并不能帮助我们找出更多的BUG, 而只能提高测试的效率和质量。自动化测试工具也是需要人去操作和维护的,它只能机械的重复人的动作,而并不比人聪明。
3)对于版本频繁变更或需求变化较快的软件,尽量不要使用自动化测试工具,因为使用工具维护的成本太高。
4)对于自动化测试尽量在版本稳定后进行,如前面三轮采用人工测试,软件基本稳定后再使用自动化工具进行回归测试,如果版本不稳定,使用自动化工具将事倍功半,得不偿失。
5)对于自动化测试技术,需要做长期的规划,针对自身业务的发展状况和开发技术的规划,组织自动化测试小组研究测试方面新的技术,在产品测试的过程中,慢慢积累,不断总结,让测试技术得以沉淀。
6)自动化测试工程师最好有开发的背景和经验,对于自动化测试工具应用的工程师最好有成功的工具实践经验。因为只有具备成功的经验,对于自动化工具在软件开发过程中的应用会如鱼得水,取得事半功倍的效果。