如何做自动化测试
这个话题比较大,相信大家也都有自己的想法,我在这里写一些我自己的看法,请大家指教。
什么叫做自动化测试工程师
首先,会使用自动化测试工具的测试人员不能够称之为完全的自动化测试人员,这类测试人员被称为『工具小子』(Script Kid)。这个阶段还是处于自动化测试的一个比较低级的阶段,因为这些工具都不是测试人员开发的。
对于高手来说,要能写一些独立的测试脚本甚至测试工具。
更高的高手则是能脚本和工具和实际工作紧密结合起来,解决工作中遇到的问题。
自动化测试工程师应该具有开发能力吗
通过上述内容,应该可以看得出来,自动化测试人员一定要有开发能力,而这恰恰是测试人员目前所欠缺的。没有开发能力的测试人员虽然也可以做一些所谓的自动化,但是仅仅是一些皮毛,没有办法做到活学活用。根据某机构的调查数据,目前所有从事测试工作的人中,90%的人都没有任何开发能力。根据目前的市场行情,如果在精通一门开发语言,能够从纯手工测试转型为自动化测试工程师,月薪至少增加3~5k。
自动化测试的层级
一般来说,自动化测试分为三个层级:单元测试、接口测试和UI测试,这三层成一个金字塔形状分布。最底层是单元测试,接口测试在中间,UI测试在最上层。下面通过一个表格来对比着三层测试。
层级 |
所处位置 |
受益 |
测试对象 |
运行速度 |
定位问题难度 |
维护成本 |
单元测试 |
底层 |
70% |
类或者方法 |
极快 |
十分容易 |
低 |
接口测试 |
中间 |
20% |
服务接口 |
快 |
一般 |
低 |
UI测试 |
上层 |
10% |
UI |
慢 |
较难 |
非常高 |
从表格中我们可以看到,最适合做自动化的是单元测试层,而UI层则不是十分适合进行自动化。
测试人员应该怎么办
单元测试
单元测试无疑是最适合做自动化的,但是,大多数单元测试都是由研发人员自己完成。单元测试的代码行覆盖率能够达到70%,就是一个非常不错的程度了。测试人员不做单元测试,但是可以尝试推动研发人员来编写单元测试用例。
单元测试框架
- 单元测试常用的框架——XUnit,比如Java的JUnit,PHP的PHPUnit,Python的unittest等等;
- 一个测试用例通常由三部分组成——setUp,测试逻辑,tearDown。setUp用于准备测试数据,tearDown用于清理数据;
- 一般单元测试框架都支持装饰器设计模式的注解,比如跳过执行,测试套件的组织,测试用例依赖管理等等
单元测试框架可以无缝地在UI测试和接口测试中使用,它们的基本思想都是相通的。
UI测试
目前,大众眼中关注的比较多的是UI的自动化测试,这是由大家的思维惯性导致的。传统的测试行业,测试工程师都是从UI下手,来完成所有的测试工作,所以到自动化领域,大家也理所当然的喜欢从UI层来进行自动化。做UI自动化,最重要的是要能有一个好的自动化测试框架,这里有一些框架的基本设计思路供大家参考:
- 分布式——case增加到一定程度后,如何快速的运行所有的case,这就涉及到分布式的概念。对于Selenium,官方提供了一个Grid,感兴趣的同学可以研究一下;
- 行为驱动——也就是常说的Cucumber,这个领域笔者没有太多的涉足,不误导大家
- 关键字驱动——由『操作对象』、『操作』、『数据』关键字组合成测试用例,框架来把关键字解析为脚本并执行。这种框架最大的优点就是可以提供给不懂代码的测试人员使用,典型的代表是Robot framwork
- 数据驱动——同一段代码的业务逻辑通过更换数据输入来生成多个测试用例,我们只需维护测试数据就可以维护case,这种框架思想在很多测试工具中都有实现
- 关键字和数据混合驱动——目前最高级的框架,将上述两种框架结合起来
当然,这些思路不仅仅能用在UI层的自动化。
对于UI自动化,我个人的建议是只做冒烟测试用例的自动化,这样既可以从UI的角度来重复性的验证主业务主流程没有问题,又可以降低维护成本。
接口测试
接口的自动化是目前最适合测试工程师进行自动化的一层。接口不但变化小,运行速度快,受益高,还有着出现问题后能够很快定位的优点。
什么时候最适合做自动化
首先,自动化测试从来都不是用来发现新的bug的,它更多的是用来验证原有功能是没问题的,新的修改对原有代码逻辑没有影响。所以,当一个项目相对稳定之后,以后的项目都是基于原有代码进行迭代,这个时候自动化的介入是非常有效的。
另外,如果某个用例需要有大量的输入项,做手工测试比较繁琐,我们也可以引入自动化的手段做局部的自动化。比如,验证某个用户登录1000次是否能够登录成功,这种情况使用手工的方式基本是不可能的。
总结
服务端灰盒测试是一个很好的自动化测试的方向,从功能测试向服务端自动化测试转型,需要自己学习充足的编程知识,有一定的变成能力。同时还需要了解HTTP协议(或RPC协议)、设计模式、Linux、DB、前端开发、算法、架构等知识,需要很多积累。如果你不知道怎么做,先写10000行代码!
作为一名自动化测试工程师,你合格嘛?
听说长得好看的都在做 软件测试,测试界从不缺大神,比如张南( Google测试经理)、Lisa Crispin和 Janet Gregory等等这些。在软件测试变的越来越重要的今天, 自动化测试也在崭露头角。
那么,作为想在自动化测试方面大展宏图以及已经成文自动化测试工程师的你,那么以下的知识你究竟掌握了多少呢。
自动化测试框架及开发技术掌握
熟练掌握自动化测试框架的原理,和理论知识,以及在自动化测试框架基础上,完成对 测试用例设计。自动化测试,不仅仅需要掌握UI界面测试,对一些开发知识:如JAVA/C++等开发语言, 数据库知识掌握,代码结构等等技能往往会给自己的 工作添彩。
测试用例维护
手工测试相较于自动化测试来说,针对大型项目,维护不方便。而对于,自动化测试来说,UI测试的难点就在于一旦有了变化,利用TestWriter可以对测试用例进行维护,一般来说,测试用例的维护量很大时,在维护上便有难度。
自动化测试工具的使用
业界流行的自动化测试工具有 Selenium,UFT,TestWriter等,了解工具的特性并且掌握方法,结合项目对测试工具进行选择。自动化测试一般通过简单的方法,便可以实现简单自动化测试,比如:1.通过制脚本,录制/回放 2.驱动脚本执行手写脚本。同时对测试用例、计划进行管理。
自动化测试实践
作为一名合格的自动化测试工程师,对测试员以及团队是否起到帮助,这是相当重要的一个素质。针对测试人员自动化测试方向,给予推荐建设性的建议。明确的分析开发测试的成本,在工作中,对手工测试和自动化测试做出合适的选择。
赞 (0)