前言
什么是自动化测试?自动化测试可以理解为把测试工作交给代码来做,即把以人为驱动的测试行为转化为机器执行的一种过程,即模拟手工测试步骤通过执行程序语言编制的测试脚本自动地测试软件。自动化测试可以帮助测试人员省下测试时间,不必把时间浪费在一些较为简单但是繁琐的测试内容上。
那么为什么会有自动化测试的概念?自动化测试与手工测试又有什么不同?自动化测试又有哪些局限性?他有什么优点?能给我们带来什么样的收益?相信这些问题在你刚接触自动化测试的时候都有遇到过。那么接下来来讲一讲为什么我们要做自动化测试。
为什么要做自动化测试
接下来举一个例子来告诉你为什么自动化测试现在这么流行。请想象,你负责测试的系统是一个功能已经非常完善,有着上百个页面的系统。每一次的上线会改动到哪些地方你已经没法确认,为了避免上线后系统出现bug,你只能手工对所有的流程进行回归测试。这需要花费的时间是不敢想象的。这时,你会不会有一个想法:要是能让代码帮我进行回归测试就好了。这就是自动化测试的根本目的:帮助测试人员节省时间,把时间精力投入到更重要的内容上。
不同点
手工测试:耗时长,灵活度高(可以进行各种逻辑复杂的测试),容易因为各种因素造成漏测
自动化测试:测试速度快,代码没问题就不会出现漏测,灵活度低(仅能根据代码写好的内容进行测试)
优缺点
自动化测试是一把双刃剑,优点和缺点都很明显。
优点:
1)最显著的一点,就是在编写完自动化脚本后,可以帮助我们节省很多时间。包括但不限于回归测试、大量数据对比等方面。这也是自动化测试存在的根本原因,发挥机器的长处让他干适合的事情。
2)漏测率极低,机器与人不一样的地方就在于他只会根据你的代码进行工作。因此只要你的代码没有问题,理论上是不存在漏测的情况的。而人可能因为粗心大意等原因出现漏测的情况
3)测试速度快,其实自动化测试的工作人也是能做的,之所以交给机器去做就是以为他的速度快。比如有一万条数据要对比时,若是靠人工比对,那可能需要比对好几天。而交给机器,可能一小时就处理完了,且准确度极高。
缺点:
1)前置准备工作长,要让自动化测试真正发挥他的用处,所需要的的前置准备时间是非常长的,从框架的搭建,到数据的准备,再到脚本的编写,测试,这中间需要耗费的功夫是很大的。不是一两个月就能处理好的事情,需要长期迭代更新
2)维护成本高,系统是一直在迭代更新的,因此你写好的脚本可能因为系统发生了更新而失效。可能一个接口的变动就会导致数十条自动化用例需要更新
3)并不能替代手工测试,很多需要人脑进行判断的工作还是只能交给手工测试
4)并不能完全保障测试的正确性,自动化脚本归根结底也是由人编写的代码,只要是代码就一定存在漏洞,因此对测试人员的技术依赖较大
适用场景
1)功能较为完善,不会有大改动的系统
2)还会长期进行迭代更新维护的系统
3)测试内容大部分不依赖人脑判断,能靠程序执行判断的系统
自动化测试框架
自动化测试目前总的来分分为两种,一种是UI自动化,一种是接口自动化,也可以抽象地理解为前端自动化测试与后端自动化测试
UI自动化
UI自动化较为多样,目前人们关注较多的是WEB端UI自动化、APP端UI自动化、小程序端UI自动化。目前应用较广泛的技术有以下几种
WEB端UI自动化:
1)robotframework
2)unittest/pytest + selenium
APP端UI自动化:
1)unittest/pytest + appium
小程序端UI自动化:
1)minium+云测平台
接口自动化
接口自动化并没有多种客户端的区分,但是实现方式较多,目前应用较广泛的技术有以下几种
1)代码实现:unittest/pytest + requests (通过yaml/excel存放测试用例)
2)工具实现:robotframework/postman/jmeter
总结
自动化测试是一个很广阔的领域,入门难度较低但是要深入比较难。相信随着时代的发展,以后对测试人员的要求会越来越高,自动化测试会成为一个普遍性要求掌握的技能