写给想做自动化的我和我们
写在前面
进入测试行业多年,一直都是在做手工测试或者半自动测试。也接触了很多同行,都很迫切的希望能做自动化测试,其中不乏工作5年以上的人群。 我也做测试多年,因没有编程能力,没有拿得出手的测试高技能,经常为换工作苦苦挣扎,切身体会到没有自动化技能的痛楚。在此,借鉴下前辈们大牛们的经验,总结些个人体验和所得。
想做自动化,首先得了解自动化测试一些常见的问题
1、什么叫自动化?
自动化测试,就是把以人为驱动的测试行为转化为机器执行的一种过程。即模拟手工测试步骤通过执行程序语言编制的测试脚本自动地测试软件。一般所有测试阶段都适用,多平台多语言都适用。
2、为什么要进行自动化测试?
随着国家计算机信息化的发展,软件都是需要快速迭代,像一些重复性的工作可以通过自动化来完成,从而提高工作的效率和准确性,达到快速迭代的目的。更实际的说:
a. 自动化测试节约成本(根据项目)
毕竟自动化测试确实解放了一批人力(人力成本才是IT公司最大的成本),可以让机器没日没夜的执行一些重复劳动。
b. 有些测试项目手工很难实现 (手工成本较高)
比如12306的压力测试、负载测试,同时找那么多人去测试不现实可以通过机器去模拟。
c. 项目质量流程需要
比如版本管理需要build verify,以保证check in的code不会影响版本库。
3、自动化测试的优缺点
A、优点
避免测试人员因重复劳动产生厌倦
提高测试效率
保证每次测试地一致性和可重复性
更好的利用无人值守时间
进行一些手工无法进行的测试
维护成本相对比较高
B、缺点
系统开发时间不一定能缩短
没有手工测试发现缺陷多
UI layout issue 不容易发现
4、什么样的项目适合做自动化测试(Dev手一抖,Auto忙一宿)
有以下几个特点的项目比较适合自动化测试:
- 软件需求变动不频繁
- 项目周期长
- 项目资源充裕
- 自动化测试脚本可重复利用
5、自动化测试的学习步骤
1. 做好手工测试(了解各种测试的知识)-> 2. 学习编程语言-> 3. 学习Web基础-> 4. 学习自动化测试工具 ->5. 学习自动化测试框架 -> 6. 实现自动化测试用例 -> 7. 开发自动化测试工具 ->8. 开发自动化测试框架
6、什么样的人适合做自动化测试?
a. 拥有代码能力
掌握一门开发语言,java、Python、ruby、c#
b. 熟悉被测系统
比如你是web测试,你就得懂js、css、html、xpath
你是移动端测试,你就得具备Android 开发基础和iOS开发基础,会Debug app
你是 C/S测试你就要很熟悉TCP、IP协议
c. 掌握一套自动化测试框架(工具)
比如 selenium/appium
nunit/testng
robot framework/cucumber
d. 善于学习,达到知其然知其所以然
曾经QTP很火,曾经Selenium也很火,现在Appium也很火。
IT行业变化太快,软件行业从桌面软件到web端,又从web端迁移到移动端,谁也没法预测将来有什么新技术出现。而我们作为软件行业的从业者,最为核心的能力就是学习能力。
7、选择什么工具进行自动化测试
首先要先确认你所测试的产品是桌面程序(C/S)还是Web应用(B/S)。
桌面程序的工具有:QTP、AutoRunner
Web应用的工具有:QTP、AutoRunner、Robot Framework、Watir、Selenium
由于B/S架构的诸多优势,早几年前大量C/S架构的应用转为B/S结构。从而也推动了web开发与测试技术的发展。假如,被测试有产品是C/S架构的,那么推荐QTP ,QTP在UI自动化测试领域占到了一半的试用率。所以,足以说明QTP在自动化领域强大,易用性等。学习主流的工具也可以使你获得更多的机会。市面上关于QTP的书籍也非常丰富。当然,要想学好QTP ,你必须要掌握VBS脚本语言。
如果,被测产品是B/S 结构,那么推荐Selenium ,为什么不是QTP 或其它工具?因为Selenium 对B/S应用支持很好,更重要的一点,它支持多语言的开发,真正的试用Selenium ,你所要掌握的不仅仅是一个工具而已,你还需要学习一门语言。我为什么要选择Selenium?还要学一门语言,这无疑增加了我的学习成本。增加成本的同时,也增加的你的竞争力,而且,在这个过程中你不单单只是学会了一个自动化工具而已,你完全可以使用所学的语言去做更多的事情。
好吧!假如你决定试用Selenium 了之后,你又面临了一个新的问题,选择一门语言。selenium 是支持java、python、ruby、php、C#、JavaScript 。
从语言易学性来讲,首选 ruby ,python
从语言应用广度来讲,首选 java、C#、php、
从语言相关测试技术成度(及 资料)来讲:ruby ,python ,java
或者你可以考虑整个技术团队主流用什么语言,然后选择相应的语言。