你是否还在为开发说你就会点点点而烦恼?
你是否还在为测试工作听上去没有逼格而烦恼?
你是否还在为快速迭代导致频繁冒烟回归而烦恼?
让本文来带你走进自动化测试,将你的“烦恼”一扫而空!
何为自动化测试?广义的来看,凡是能够使用工具代替人工操作的测试方法,都可以称为自动化测试。一般自动测试分为web自动化测试、app(移动)自动化测试、接口自动化测试、单元测试自动化测试、性能自动化测试等等。
自动化看上去这么好,那是不是可以完全代替手工测试呢,答案是否定的。那什么情况下使用自动化会更加契合,这里给出几种情况,供大家参考。
第一种:项目有较长的开发周期或较为稳定的运维迭代。
因为编写自动化测试用例也是有维护成本的。如果需求变动快,维护成本会更高,如果项目周期过短,编写的自动化测试可能用不上几次就要含泪封存。
第二种:软件发布频繁且功能生命周期长。
每次发布版本前都需要进行回归测试,可以通过开发一些自动化工具帮助我们执行这些产品的回归测试。亦或出单、理赔等不常变动的流程,每次测试人员都需要登录不同账号系统进行审核与确定,这些步骤都是重复性工作,这样的步骤也可以使用自动化测试来提升效率。
接下来将介绍UI自动化与接口自动化的使用场景与思路。
本篇文章所用技术栈
UI自动化:Selenium + JAVA
接口自动化:HTTP Client + JAVA
对于 web 自动化测试,我们一般使用市场成熟技术,比如 Selenium 、QTP等。
接下来使用 Selenium 来演示 web 自动化怎么上手工作,在做之前我们先了解下它的工作原理。
它的工作原理简单概括为:WebDriver通过http协议与浏览器driver程序(如chromeDriver)建立通信,向chromeDriver传递相关指令,chromeDriver接受指令并控制浏览器启动、运行、测试和退出,这就像真正的用户正在操作浏览器一样。
乘客:告诉出租车司机去哪里。
(自动化测试代码:兄弟,找到登陆页面上的账号密码输入框,填好了点确定按钮执行登陆操作)
出租车司机:他按照乘客的要求来操控出租车。
(浏览器驱动:拍拍浏览器的肩膀,起床干活了,按照我说的顺序,“&*%¥#@¥……”)
出租车:出租车按照司机的操控完成真正的行驶,把乘客送到目的地。
(浏览器:收到,登录页面,输入账号密码,确定,起飞~)
了解上面信息后就可以用Selenium 简单一个案例入门 web 自动化测试。
第一步
下载原生的浏览器组件,下载地址chromeDriver(https://registry.npmmirror.com/binary.html?path=chromedriver/)。
第二步
选择自己擅长的开发语言,这里使用JAVA进行演示:
在实际工作中最常用方参考如下,大家在学习过程中需要单独去学习xpath、id、name、class等技巧定位。
第三步
设计自动化测试案例,让代码帮助我们执行测试用例,记得增加断言,如果没有断言,自动执行它可不认识案例是否正确。
大家可以选择适合自己的工具完成工作,如果想把自动化做好,还需要设计自动化测试框架,对于框架设计可以用平台,也可以是代码,对于执行思想可以使用数据驱动测试、行为驱动测试、分布式执行测试等等方法。
接口一般来说有两种:一种系统对外接口,一种程序内部接口。
接口测试:接口测试位于单元测试与UI测试之间,它工作原理是通过接口测试工具模拟客户端向服务器发送请求,服务器接受请求并做出响应向客户端返回响应信息,验证返回结果,这就是接口测试。
系统对外接口:例如WebService。
程序内部接口:方法与方法之间,模块与模块之间的交互,比如保单查询。
从测试金字塔自上而下依次是UI测试、接口测试、单元测试。
常用的接口测试工具有 cURL、Jmeter Postman、SoapUI、HttpClient等等。
HttpClient介绍:
HttpClient 不是一个浏览器。它是一个客户端的 HTTP 通信实现库,HttpClient 的目标是发送和接收 HTTP 报文,ttpClient 不会去缓存内容javascript 代码,猜测内容类型,重新格式化请求/重定向 URI。
创建一个 HTTP 客户端来发送请求和接收请求的实例演示:
相比较web自动化,接口自动化,是当前自动化测试中的首选,对于前后端分离的应用我们只要模拟不同接口的协议来验证接口响应是否达到预期结果,而且接口自动化测试是自动化测试中最基本的、收益最能体现的测试工作;如果项目要做自动化测试,建议先通过接口测试覆盖项目逻辑,再做前端业务测试。
对于新手来说掌握自动化测试本质很重要,无论怎么变化,本质不变,自动化测试的本质是先写一段代码,然后去测试另一段代码,实现自动化测试用例本身属于开发工作。
如果维护自动化测试的代价高于人工测试成本,那么这样的项目中推进自动化测试就会得不偿失,我们实际自动化测试时需要灵活掌握自动化测试本质,节约测试人员时间,让测试人员将更多的精力放在新功能的测试、产品思考还有测试用例设计上。
最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取【保证100%免费】
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。