常用的自动化测试shell脚本

张开发
2026/4/19 6:56:06 15 分钟阅读

分享文章

常用的自动化测试shell脚本
常用自动化测试 Shell 脚本合集测试工作中最常用、直接可运行的 Shell 脚本覆盖接口测试、UI 自动化启动、测试报告打包、环境部署、日志清理、定时任务等场景复制即可用。1. 接口自动化测试执行脚本最常用适用于Postman/Newman、JMeter、curl 接口测试bash运行#!/bin/bash # 接口自动化测试执行脚本 # 定义变量 TEST_DIR/opt/test/api_test # 测试脚本目录 REPORT_DIR${TEST_DIR}/reports # 报告目录 DATE$(date %Y%m%d_%H%M%S) # 时间戳 # 创建报告目录不存在则创建 mkdir -p ${REPORT_DIR} echo 开始执行接口自动化测试 cd ${TEST_DIR} # 1. Newman执行Postman脚本需安装nodejsnewman newman run test_collection.json -e test_env.json \ -r html,cli \ --reporter-html-export ${REPORT_DIR}/test_report_${DATE}.html # 2. JMeter接口测试注释上面启用下面 # jmeter -n -t test.jmx -l ${REPORT_DIR}/result_${DATE}.jtl -e -o ${REPORT_DIR}/html_report_${DATE} # 判断执行结果 if [ $? -eq 0 ]; then echo 接口测试执行成功报告路径${REPORT_DIR} else echo 接口测试执行失败 exit 1 fi2. 自动化测试环境一键部署脚本适用于测试前拉取最新代码、安装依赖、启动服务bash运行#!/bin/bash # 测试环境一键部署脚本 PROJECT_DIR/opt/test/project echo 开始部署测试环境 # 进入项目目录 cd ${PROJECT_DIR} # 拉取最新代码 echo 拉取最新代码... git pull origin main # 安装依赖 echo 安装项目依赖... npm install # Node项目 # pip install -r requirements.txt # Python项目 # 停止旧服务如果存在 echo 停止旧服务... pkill -f node app.js # 根据实际进程修改 sleep 2 # 启动新服务 echo 启动测试服务... nohup node app.js app.log 21 sleep 3 # 检查服务是否启动成功 if ps -ef | grep node app.js | grep -v grep; then echo 测试环境部署启动成功 else echo 服务启动失败 exit 1 fi3. 测试报告自动打包 邮件发送脚本适用于测试完成后自动发报告给测试 / 开发bash运行#!/bin/bash # 测试报告打包邮件发送脚本 REPORT_DIR/opt/test/api_test/reports DATE$(date %Y%m%d) ZIP_NAMEtest_report_${DATE}.zip MAIL_TOtestxxx.com,devxxx.com # 收件人 echo 打包测试报告 # 压缩报告 zip -r ${ZIP_NAME} ${REPORT_DIR}/* echo 发送邮件 # 发送邮件需安装mailx echo 接口自动化测试已完成测试报告见附件 | mail -s 接口自动化测试报告_${DATE} \ -a ${ZIP_NAME} \ ${MAIL_TO} if [ $? -eq 0 ]; then echo 报告邮件发送成功 else echo 邮件发送失败 fi4. UI 自动化Selenium/Cypress启动脚本bash运行#!/bin/bash # UI自动化执行脚本 TEST_DIR/opt/test/ui_test cd ${TEST_DIR} echo 开始执行UI自动化测试 # Cypress UI自动化 npx cypress run --reporter mochawesome # Selenium Python UI自动化启用下面 # python3 run_ui_test.py # 生成测试报告 npx mochawesome-merge cypress/reports/*.json cypress/reports/final_report.json npx marge cypress/reports/final_report.json -o cypress/reports echo UI自动化测试完成5. 测试服务器日志清理脚本防止磁盘爆满bash运行#!/bin/bash # 自动清理7天前的测试日志/报告 LOG_DIR/opt/test/logs REPORT_DIR/opt/test/reports echo 清理过期测试文件 # 删除7天前的日志文件 find ${LOG_DIR} -name *.log -mtime 7 -delete find ${REPORT_DIR} -name *.html -o -name *.zip -mtime 7 -delete echo 过期文件清理完成 df -h # 查看磁盘空间6. 定时执行自动化测试配合 crontab把上面脚本加入定时任务每天 / 每小时自动跑测试bash运行# 查看定时任务 crontab -l # 编辑定时任务 crontab -e # 示例每天凌晨2点执行接口自动化测试 0 2 * * * /bin/bash /opt/test/run_api_test.sh /opt/test/cron_test.log 21 # 示例每小时执行一次冒烟测试 0 * * * * /bin/bash /opt/test/smoke_test.sh7. 冒烟测试Smoke Test快速校验脚本bash运行#!/bin/bash # 冒烟测试快速检查核心接口是否可用 TEST_URLhttp://test.xxx.com/health # 健康检查接口 TIMEOUT5 echo 执行冒烟测试 # 访问接口获取状态码 HTTP_CODE$(curl -s -o /dev/null -w %{http_code} --connect-timeout ${TIMEOUT} ${TEST_URL}) if [ ${HTTP_CODE} -eq 200 ]; then echo ✅ 冒烟测试通过接口正常访问 exit 0 else echo ❌ 冒烟测试失败接口状态码${HTTP_CODE} exit 1 fi脚本使用说明所有脚本复制后修改路径、地址即可直接运行赋予执行权限chmod x test.sh执行./test.sh依赖工具按需安装接口测试newmanPostman、jmeter邮件yum install mailx压缩zip/unzip总结这些脚本覆盖接口 / UI 自动化、环境部署、报告、定时、清理、冒烟测试满足日常测试需求全部开箱即用只需修改路径、地址、收件人等变量配合crontab可实现无人值守自动化测试除了文中提到的场景Shell 脚本还可以应用于哪些测试场景当然可以我给你整理测试领域里 Shell 脚本真正高频、实用、但很少被系统总结的场景全部是测试工程师日常真的会用的不是空泛理论。我直接给你场景 用途 一句话脚本示例让你马上能用。除了你已看到的Shell 脚本还能做这些测试场景1.测试数据准备 / 造数测试前自动造测试数据、清空脏数据、初始化数据库。自动插入 MySQL/Redis 数据自动生成文件、账号、订单自动清理历史数据示例bash运行# 插入测试用户 mysql -u root -p123456 testdb -e INSERT INTO user(name,phone) VALUES(test,13800138000);2.接口批量压测 / 并发测试不用 JMeter简单快速批量请求接口看稳定性。批量 curl简单并发压测快速验证接口极限示例bash运行# 并发 20 次请求接口 for i in {1..20}; do curl http://api.com/test done3.测试环境监控CPU / 内存 / 磁盘 / 端口自动化测试前 / 中 / 后自动检查环境是否正常。检查服务端口是否存活检查 CPU / 内存是否过高检查磁盘是否快满检查容器是否正常运行示例bash运行# 检查端口是否启动 netstat -tuln | grep 8080 || echo 端口未启动4.Docker / K8s 测试环境一键管理测试环境经常要重启、重建容器Shell 最方便。重启服务重建容器查看日志批量操作测试环境示例bash运行docker restart test-service kubectl delete pod -n test $(kubectl get pod -n test | grep Crash)5.测试日志自动分析错误率、关键字排查自动化跑完后自动扫日志不用人工看。查找 error、exception、fail统计接口错误率自动提取关键报错示例bash运行grep -i error app.log | wc -l6.多环境一键切换测试 / 预发 / 生产快速切换测试环境配置不用手动改文件。自动替换配置文件 IP / 域名自动切换环境变量一键切环境跑测试示例bash运行sed -i s/prod.env/test.env/g config.ini7.批量执行测试用例多套件、多模块一次跑几十个测试脚本自动汇总结果。按模块批量执行自动统计成功 / 失败数失败自动标记示例bash运行for case in test_*.sh; do bash $case; done8.测试机器资源释放测试后自动杀进程、清缓存、关服务避免占资源。bash运行pkill -f test sync echo 3 /proc/sys/vm/drop_caches9.自动化测试失败自动截图 / 录屏UI 自动化失败时自动抓日志、抓截图、打包。bash运行adb shell screencap -p /sdcard/screen.png adb pull /sdcard/screen.png ./fail.png10.接口返回值校验简单断言不用写代码直接 Shell 校验接口返回是否正确。bash运行result$(curl -s http://api.com/user) echo $result | grep -q success echo 通过 || echo 失败11.测试报告自动上传到 Jenkins / 钉钉 / 企业微信测试完成自动上传报告发通知。bash运行curl -X POST -F filereport.html https://upload.com/api12.APP 自动化打包 / 安装 / 启动 / 卸载移动端测试必备全自动流程。bash运行adb install app.apk adb shell am start com.xxx.app/.MainActivity13.弱网 / 异常场景模拟测试接口在网络差、丢包、延迟下的表现。bash运行tc qdisc add dev eth0 root netem delay 1000ms # 加延迟 tc qdisc del dev eth0 root netem # 恢复14.定时清理测试环境定时任务增强定时重启服务定时清理日志定时恢复数据库定时拉最新代码超简总结你记这 4 类就够环境类部署、监控、重启、清理、切环境数据类造数、清数、初始化 DB执行类批量用例、并发压测、简单接口校验运维类日志分析、异常排查、报告上传

更多文章