【金融项目实战】6_接口测试 _Jmeter自动化脚本实现(重点)

文章目录

  • 一、自动化测试理论
  • 二、自动化脚本
    • [2.1 添加断言](#2.1 添加断言)
      • [2.1.1 获取图片验证码接口](#2.1.1 获取图片验证码接口)
      • [2.1.2 获取短信验证码接口](#2.1.2 获取短信验证码接口)
      • [2.1.3 注册接口](#2.1.3 注册接口)
      • [2.1.4 登录接口](#2.1.4 登录接口)
      • [2.1.5 认证开户接口](#2.1.5 认证开户接口)
      • [2.1.6 投资业务链接口](#2.1.6 投资业务链接口)
    • [2.2 可重复执行](#2.2 可重复执行)
      • [2.2.1 清除测试数据](#2.2.1 清除测试数据)
    • [2.3 Jmeter配置jdbc请求](#2.3 Jmeter配置jdbc请求)
      • [2.3.1 连接数据库](#2.3.1 连接数据库)
      • [2.3.2 jmeter中清除数据](#2.3.2 jmeter中清除数据)
  • 三、持续集成(CI)
    • [3.1 持续集成理论](#3.1 持续集成理论)
    • [3.2 脚本管理](#3.2 脚本管理)
    • [3.3 执行脚本](#3.3 执行脚本)
  • 四、Jenkins配置
    • [4.1 邮件报告模板](#4.1 邮件报告模板)
    • [4.2 解决读取报告无数据问题](#4.2 解决读取报告无数据问题)
    • [4.3 别人能访问报告](#4.3 别人能访问报告)

一、自动化测试理论

  • 什么是自动化测试?
yacas 复制代码
让程序或工具代替人为执行测试用例
  • 什么样的项目适合做自动化?
yacas 复制代码
1、项目周期长--多长算长?(自己公司运营项目)  比如:阿里自己的淘宝app
2、需求稳定(更多指具体功能/模块)
3、需要回归测试(电商、金融、部队、对外运营的项目)
  • 自动化测试与功能测试说明
yacas 复制代码
自动化测试就是功能测试。(原因:自动化测试使用的用例都是功能的用例)
  • 自动化测试用例覆盖率?
yacas 复制代码
上限:全部的功能用例执行自动化。--基本不可能。
  1、有些用例,能去做而不去做(配置功能,不常用的)
  2、有些用例,都不能做自动化(如:图片上的文字)

公司:
  1、如果自动化用例只覆盖业务线,覆盖率10~20%
  2、好点的公司,自动化覆盖40%~60%
  • 手工功能测试与自动化功能测试的区别
yacas 复制代码
1、自动化脚本可重复执行(批量执行)
-①确定脚本执行顺序
-②构造数据和清除数据进行操作 
2、功能脚本是靠人眼睛进行断言,自动化是靠工具或程序进行断言。
  • 自动化测试实现方式?
yacas 复制代码
1、工具
2、代码
  • 自动化测试分类
yacas 复制代码
ui (User Interface 界面)  自动化:(web、app、win32)
接口自动化

二、自动化脚本

  • 如何设置自动化脚本?
yacas 复制代码
1、使用程序或工具断言
2、可重复运行

2.1 添加断言

2.1.1 获取图片验证码接口

2.1.2 获取短信验证码接口

2.1.3 注册接口

2.1.4 登录接口

2.1.5 认证开户接口

2.1.6 投资业务链接口

yacas 复制代码
充值接口和投资接口参照上面断言即可。

投资业务链接口只把关键数据断言即可。

2.2 可重复执行

  • 如何可以做到可重复执行?
yacas 复制代码
1、清除测试数据(先造数据,再清除数据)
2、脚本按指定顺序执行
   --脚本从上到下执行,在测试计划:勾选√ 独立运行每个线程组(例如在一个组运行结束后启动下一个)

2.2.1 清除测试数据

1、明确清除那些数据?

yacas 复制代码
1、删除已注册的手机号
2、造数据(借款标)
提示:在工作中找开发确认。

2、这些数据在那个库、那个表?

yacas 复制代码
库:czbk_member
表:
  mb_member(会员主表)
  mb_member_info(信息表)
  mb_member_login_log(登录日志)
  mb_member_register_log(注册日志)
提示:以上表找开发获取。

3、确定SQL语句

yacas 复制代码
1、删除4张表有关手机号数据,删除mb_member_info(信息表)和mb_member_login_log(登录日志),必须使用连表进行删除,通过id进行关联
2、 mb_member(会员主表)和mb_member_register_log(注册日志)可以单独删除
3、不能先删除mb_member(会员主表),因为把 mb_member(会员主表)手机号删除,后面无法关联
sql 复制代码
#  一、确定查询语句
--1、 mb_member_info(信息表)表中查询指定手机号数据
select * from mb_member as mb inner join mb_member_info as info on info.member_id = mb.id where mb.phone in ("13600001111","13600001112","13600001113","13600001114");
--2、mb_member_login_log(登录日志)表查询指定手机号数据
select * from mb_member as mb inner join mb_member_login_log as login on login.member_id = mb.id where mb.phone in ("13600001111","13600001112","13600001113","13600001114");
--3、mb_member(会员主表)表查询指定手机号数据
select * from mb_member where phone in ("13600001111","13600001112","13600001113","13600001114");
--4、mb_member_register_log(注册日志)表查询指定手机号数据
select * from mb_member_register_log where phone in ("13600001111","13600001112","13600001113","13600001114");


# 二、确定删除语句
--1、 mb_member_info(信息表)表中查询指定手机号数据
delete info.* from mb_member as mb inner join mb_member_info as info on info.member_id = mb.id where mb.phone in ("13600001111","13600001112","13600001113","13600001114");
--2、mb_member_login_log(登录日志)表查询指定手机号数据
delete login.* from mb_member as mb inner join mb_member_login_log as login on login.member_id = mb.id where mb.phone in ("13600001111","13600001112","13600001113","13600001114");
--3、mb_member(会员主表)表查询指定手机号数据
delete from mb_member where phone in ("13600001111","13600001112","13600001113","13600001114");
--4、mb_member_register_log(注册日志)表查询指定手机号数据
delete from mb_member_register_log where phone in ("13600001111","13600001112","13600001113","13600001114");

2.3 Jmeter配置jdbc请求

2.3.1 连接数据库

yacas 复制代码
jmeter连接数据库:测试计划--->添加:配置元件--->JDBC Connection Configuration

2.3.2 jmeter中清除数据

yacas 复制代码
测试计划:√ 独立运行每个线程组(例如在一个组运行结束后启动下一个)

三、持续集成(CI)

3.1 持续集成理论

  • 什么是持续集成?
yacas 复制代码
通过一款工具(jenkins)持续自动集成代码。
  • CI工具最常用啥?
yacas 复制代码
Jenkins
  • 通过jenkins工具运行脚本的本质啥?
yacas 复制代码
本质:通过执行命令来运行脚本:
  1、将脚本(postman\jmeter\python)下载到jenkins所在电脑
  2、调用命令去执行下载的脚本
   
jmeter -n -t脚本.jmx -l结果.txt -e -o 目录
  • 持续集成所依赖的环境是啥?
yacas 复制代码
1、jenkins环境:jdk + jenkins.war
2、运行脚本本环境: newman、jmeter、jdK、python、pytest
  • 持续集成运行脚本的方式有哪些?--脚本在哪里放?
yacas 复制代码
1、项目托管平台(github、gitee、gitlab)
2、jenkins服务器(将脚本从托管平台下载到jenkins服务器本地,调用命令去执行)

3.2 脚本管理

yacas 复制代码
p2p.jmx  不能有中文

1、gitee新建仓库,把仓库地址进行复制。

2、在含有脚本的文件夹中,执行相关git命令。

3.3 执行脚本

1、启动 jenkins.war包。

shell 复制代码
java -jar jenkins.war

2、在jekins中,新建一个任务,选择"构建一个自由风格的软件项目"。

shell 复制代码
配置:
  1、源码管理(将脚本下载到jenkins服务器)
  2、构建(在jenkins本地服务器执行脚本的命令)
  3、执行删除报告目录和结果目录命令
   ①mac/linux : 
     - rm -rf r*
     - /xx/apache-jmeter-5.1.1/bin/jmeter -n -t脚本.jmx -l结果.txt -e -o 目录
   ②windows: 
     - del result.txt   # 删除文件
     - rmdir /Q/S report  # 删除目录
     - /xx/apache-jmeter-5.1.1/bin/jmeter.bat -n -t脚本.jmx -l结果.txt -e -o 目录

5、立即构建。

复制代码
先从gitee上克隆仓库代码,然后运行

四、Jenkins配置

4.1 邮件报告模板

html 复制代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
<div>
<h2>项目信息</h2>
<ul>
<li>项目名称:${PROJECT_NAME}</li>
<li>详细测试报告:<a href="${PROJECT_URL}HTML_20Report/">${PROJECT_URL}HTML_20Report/</a></li>
<li>触发原因:${CAUSE}</li>
<li>项目Url:<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
</ul>
<hr/>
<h2>构建日志</h2>
<div>${JELLY_SCRIPT,template="html"}</div>
<hr/>
</div>
</body>
</html>

4.2 解决读取报告无数据问题

jenkins管理--->执行命令:

4.3 别人能访问报告

yacas 复制代码
别人能访问报告,换成 jenkins服务器地址
相关推荐
renhongxia113 小时前
PostTrainBench:LLM 代理能否自动化 LLM 后培训?
运维·人工智能·深度学习·机器学习·架构·自动化·transformer
里欧跑得慢13 小时前
Flutter 三方库 mobx_codegen — 自动化驱动的高性能响应式状态管理(适配鸿蒙 HarmonyOS Next ohos)
flutter·自动化·harmonyos
码农阿豪13 小时前
MySQL 动态分区管理:自动化与优化实践
数据库·mysql·自动化
IT go13 小时前
用 Trae + Stitch MCP 打造 UI 自动化产出工作流(从设计到本地预览)
ui·自动化
志栋智能14 小时前
运维超自动化:从成本中心到价值创造者的蜕变
运维·人工智能·自动化
acheding14 小时前
OpenClaw浏览器自动化实战:让AI拥有“眼睛“和“双手“
运维·人工智能·自动化
焦耳热科技前沿15 小时前
复旦大学Nat. Commun.:等离子体辅助碳热闪烧合成突破Hume-Rothery极限的亚5纳米高熵合金
人工智能·科技·自动化·能源·材料工程
ckm紫韵17 小时前
影刀自动化工作流RPA采集教程
运维·自动化·rpa
焦耳热科技前沿19 小时前
厦门大学Nat. Commun.:闪蒸焦耳热诱导富镍层状氧化物正极表面尖晶石化以稳定晶格氧
人工智能·科技·自动化·能源·材料工程
达之云*驭影19 小时前
告别“大龙虾”式内卷:LangGraph+PlayWright自动化玩转新媒体营销
搜索引擎·自动化·媒体