自动化测试概念
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
好处
自动化测试可以替代大量的手工机械重复性操作,测试工程师可以把更多的时间花在更全面的用例设计和新功能的测试上;
自动化测试可以大幅提升回归测试的效率;
自动化测试适合在非工作时间执行测试,工作时间分析失败用例;
自动化测试可以高效地实现某些手工测试无法完成或者代价巨大的测试类型,比如关键业务 7×24 小时持续运行的系统稳定性测试和高并发场景的压力测试等;
自动化测试能够保证每次测试执行的操作以及验证的一致性和可重复性,避免人为想当然的遗漏或疏忽,例如:这个功能之前运行都是OK的,这次我就可以不测试了,结果这次悲剧却发生了。
弊端
自动化测试比较脆弱,无法快速的应对软件的需求变化。
自动化测试初期效率往往不高,开发自动化测试用例的成本比手工测试成本高很多。
优秀的自动化测试工程师薪酬很高,加大了企业的人员成本。
本质
编程测试,即编写一个程序测试另一个程序。所以,编写自动化测试用例属于开发工作,需要测试人员投入大量的时间和精力。当后期产品的页面元素和业务发生变化时,还需要付出维护自动测试脚本的成本。
过程
通常自动化测试的开发过程如下:
录制脚本>修改录制脚本>回放脚本>查看报告
入门自动化测试都是从录制脚本开始的,录制脚本就是在手工操作软件的时候,你的操作过程被自动化测试工具完整的记录了下来,然后工具把这一系列动作转化成与其对应的API。优秀的自动化测试工具都有自己的录制脚本工具,例如,Web
UI自动化测试的代表性工具Selenium就使用Katalon Recorder或者Selenium IDE进行脚本录制工作。
录制的脚本往往都不够稳定,我们在实际工作中要对录制的脚本进行修改,即二次开发。
回放脚本的过程就是运行在录制过程中录制工具生成的测试脚本。
自动化脚本运行完毕后会生成测试报告,以便于我们查看自动化测试脚本运行的实际情况。
自动化测试与手工测试对比投资回报率
从下图中可以看到,从第6次回归测试以后,自动化测试回报率开始显现(第6次是个经验值)。
(1) 软件需求变动不频繁;
自动化测试最怕的就是需求不稳定,需求的频繁变更会导致自动化测试用例的维护成本直线上升。刚刚开发完成的脚本可能因为产品页面的变化和业务的变化,不得不重新开发。因此自动化测试要从需求稳定的功能模块入手。
(2) 项目周期足够长,需要频繁执行回归测试;
开展自动化测试要选择产品生命周期足够长并有多个持续版本发布计划的项目,通常在有6次回归测试以上的项目中自动化测试的优势才会大于手工测试。
(3) 需要在多个平台上重复执行相同测试的场景。
如果你公司的产品符合如下需求,那么投入自动化测试会带来良好的收益。
产品支持多浏览器;
移动端应用需要在近千台手机中运行;
对于一些企业级软件,如果对于不同的客户有不同的定制版本,各个定制版本的主体功能绝大多数是一致的,可能只有个别功能有轻微差别。
(4) 无法通过手工实现或者手工实现成本过高的项目
通常在执行关键业务 7×24 小时持续运行的系统稳定性测试和高并发场景的压力测试时必须使用自动化测试,因为人工测试几乎不可能完成测试任务。
不适合做自动化测试的项目
除了需求变动频繁、项目周期短这种典型的不适合做自动化测试的项目,在以下列举的体验类的项目中也不适合做自动化测试,包括:
视频体验、美观体验、声音体验、易用性体验和多用户交互体验。
作者:测试小哥
链接:https://zhuanlan.zhihu.com/p/97476578