自动化测试理论知识
- 什么是自动化测试?
让程序或工具代替人为执行测试用例
- 什么样的项目适合做自动化?
1、项目周期长 --多长算长?(自己公司运营项目)
2、需求稳定(更多具体功能/模块)
3、需要回归测试(电商、金融、部队、对外运营的项目)
- 自动化测试用例覆盖率?
上限:全部的功能用例执行自动化。--基本不可能。
1、有些用例能去做,而不去做(配置功能,不常用)
2、有些用例都不能做自动化(如:图片上的文字)
公司:
1、如果自动化用例只覆盖业务线,覆盖率10~20%
2、好点的公司,自动化覆盖40%~60%
- 自动化测试与功能测试的区别?–脚本执行层面
1、自动化脚本可重复执行
2、功能脚本是靠人眼睛进行断言,自动化是靠工具或程序进行断言。
- 自动化测试归属什么测试?
归属:功能测试(原因:自动化测试使用的用例都是功能的用例)
- 自动化测试实现方式?
1、工具
2、代码
- 自动化测试分类
1、ui自动化(web、app、win32)
2、接口自动化
自动化脚本
- 如何设置自动化脚本
1、使用程序或工具断言
2、可重复运行
添加断言
- 注册、登录
提示:
1、图片验证码使用响应断言->断言状态码
2、其他全部使用响应断言
3、依赖接口不用断言,只需断言被测接口。(如:注册依赖图片验证码、短信验证码,只需要断言注册即可)
- 认证、充值、开户、投资
提示:
1、断言内容来源预期结果,预期结果一般情况与实际结果一致。文字偏差大概看意思是否一样,
如果不一样,那就是缺陷。
2、看实际结果是否有明确提示错误原因和引导信息。如果有就通过,否则就失败。
可重复执行
- 如何可以做到可重复执行?
1、清除测试数据(已注册数据、造借款数据)
2、脚本按指定顺序执行
-
清除测试数据
- 明确清除哪些数据?
1、删除已注册的手机号 2、造数据(借款标)
- 这些数据在哪个库、哪个表?
库:czbk_member 表: mb_member(会员主表) mb_member_info(信息表) mb_member_login_log(登录日志) mb_member_register_log(注册日志)
- 确定sql语句
分析
1、mb_member、mb_member_register_log直接使用phone字段进行过滤删除 2、mb_member_info、mb_member_login_log必须配合mb_member表的id进行关联查询,在删除。
查询sql(确认sql语句是否正确)
-- 一、确认表中是否有数据
# 1、查询确认语句 mb_member
select * from mb_member where phone in
("13600001111","13600001112","13600001113","13600001114")
# 2、mb_member_info
select * from mb_member_info i INNER JOIN mb_member m on i.member_id=m.id
where m.phone in
("13600001111","13600001112","13600001113","13600001114")
# 3、mb_member_login_log
select * from mb_member_login_log l INNER JOIN mb_member m on
l.member_id=m.id where m.phone in
("13600001111","13600001112","13600001113","13600001114")
# 4、mb_member_register_log
select * from mb_member_register_log where phone in
("13600001111","13600001112","13600001113","13600001114")
删除sql
-- 二、删除sql语句
# 1、删除 mb_member_info
delete i.* from mb_member_info i INNER JOIN mb_member m on
i.member_id=m.id where m.phone in
("13600001111","13600001112","13600001113","13600001114")
# 2、删除 mb_member_login_log
delete l.* from mb_member_login_log l INNER JOIN mb_member m on
l.member_id=m.id where m.phone in
("13600001111","13600001112","13600001113","13600001114")
# 3、删除 mb_member_register_log
delete from mb_member_register_log where phone in
("13600001111","13600001112","13600001113","13600001114")
# 4、删除 mb_member
delete from mb_member where phone in
("13600001111","13600001112","13600001113","13600001114")
-- 二、删除sql语句
# 1、删除 mb_member_info
delete i.* from mb_member_info i INNER JOIN mb_member m on
i.member_id=m.id where m.phone in
("${phone1}","${phone2}","${phone3}","${phone4}")
# 2、删除 mb_member_login_log
delete l.* from mb_member_login_log l INNER JOIN mb_member m on
l.member_id=m.id where m.phone in
("${phone1}","${phone2}","${phone3}","${phone4}")
# 3、删除 mb_member_register_log
delete from mb_member_register_log where phone in
("${phone1}","${phone2}","${phone3}","${phone4}")
# 4、删除 mb_member
delete from mb_member where phone in
("${phone1}","${phone2}","${phone3}","${phone4}")
- 使用jmeter连接数据库、执行sql语句。
- 添加数据库连接池并配置
jdbc:mysql://121.43.169.97/czbk_member?allowMultiQueries=true
allowMultiQueries=true :开启批量执行sql语句
- 添加jdbc请求执行sql语句
注意:
1、每个sql语句结尾需要使用;
2、Query Type:选中Callable Statement
- 脚本按指定顺序执行
持续集成
持续集成理论
- 什么是持续集成?
通过一款工具(Jenkins)持续自动集成代码
- CI工具最常用啥?
Jenkins
- 通过Jenkins工具运行脚本的本质是啥?
运行脚本的命令
jmeter -n -t 脚本.jmx -l 结果.txt -e -o 目录
- 持续集成所依赖的环境是啥?
1、jenkins环境:jdk jenkins.war
2、运行脚本的环境:newman、jmeter、jdk、python、pytest
- 持续集成运行脚本的方式有哪些?–脚本在哪里放?
1、项目托管平台(github、gitree、gitlabe)
2、Jenkins服务器(将脚本从托管平台下载到jenkins服务器本地,调用命令去执行)
脚本管理
- 通过工具上传托管平台
- 通过命令上传
创建git仓库:
配置
- 执行脚本
配置:
1、源码管理(将脚本下载到jenkins服务器)
2、构建(在jenkins本地服务器执行脚本的命令)
1、执行删除报告目录和结果目录命令
mac/linux:rm -rf re*
windows: del result.txt rmdir /Q/S report
2、x:/xx/apache-jmeter-5.1.1/bin/jmeter.bat -n -t 02-auto_script.jmx -l
resut.txt -e -o report
- 测试报告
报告无内容或无样式:
jenkins 管理->执行命令
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
- 发送邮件