综合近来相关接口和性能相关的测试工作,今天突发“奇想”,总结出一套自己适用的性能测试套路。草草记录想法如下:

性能测试=接口+多线程+服务器监控 +java熟悉(问题定位)

当然以上目前已python脚本为主要工具。
所需要的辅助技术如下:

接口测试: 接口调用  python 、postman、jmeter、 接口分析:fiddler,chrome
多线程: 并发  锁
服务监控:linux资源 top命令 dstat命令  jmeter。 内存、磁盘、网络、cpu、gpu
java:gc 服务进程分析

接口模拟配合并发 完成压测环境的模拟和结果的获取分析。资源监控的了解可对服务是否正常是否存在异常瓶颈进行参看。因为目前大部分web项目使用java,所以了解gc和服务异常分析等对于定位问题很关键。
从目前个人使用来看还比较顺手。当然服务器监控和java方面还未进行过多的尝试。尤其java放下很久了…

这里python使用requests包进行接口模拟,需要对http请求相关header参数和尤其是Content-type类型进行了解。多线程threading中的锁和阻塞。接下来给个简单的接口模拟和多线程调用
脚本如下:
接口模拟:

#coding=utf-8
import requests
import time
import struct
import jsoncookie ="JSESSIONID=6B2CECAE8A6182A2496E1C23C630FC35"
##上传单个文档进行翻译
def upfile_trans():header = {# "Content-type":"multipart/form-data; boundary=----WebKitFormBoundaryDiCQum0CmBUJMRZk","Cookie": cookie}####初始化一个任务  获取任务id 和批idinit_host="http://ip/zy/transTask/initTask"init_body ={"type":1}init_req= requests.get(url=init_host,data=init_body,headers=header)print (init_req.text)j_init_req_res = json.loads(init_req.text)print (j_init_req_res)task_id = j_init_req_res["data"]["taskId"]batch_id = j_init_req_res["data"]["batchId"]task_name = j_init_req_res["data"]["taskName"]print (task_id,batch_id)####上传文件host = "http://ip/zy//transFile/uploadTransFile"fbin = open("D:\英文文章.docx","rb")files={"file":('英文文章.docx',fbin,'application/vnd.openxmlformats-officedocument.wordprocessingml.document,{}')}body ={"taskId":task_id,"batchId":batch_id,}upfile_req_res = requests.post(url=host,data=body,headers=header,files=files)print (upfile_req_res.text)ids = json.loads(upfile_req_res.text)["data"]time.sleep(5)#####任务保存提交sub_host="http://ip/zy/transTask/submitTransTask"sub_body={"language":"","taskId":task_id,"batchId":batch_id,"ids":ids,"taskName":task_name,"toLanguage":"cn","type":1}submit_req= requests.post(url=sub_host,data=sub_body,headers=header)print (submit_req.text)####获取任务翻译状态task_status_host = "http://ip/zy/transFile/getTransFileList"status_body ={"fileName":"","pageNum":1,"pageSize":10,"taskId":task_id,"language":"","fileStatus":""}status_req= requests.get(url=task_status_host,headers=header,params=status_body)print (status_req.text)####方法 在已经创建好的任务中 继续上传文件 并提交任务
def task_add_file(task_id,batch_id,task_name):header = {# "Content-type":"multipart/form-data; boundary=----WebKitFormBoundaryDiCQum0CmBUJMRZk","Cookie": cookie}##上传文件host = "http://ip/zy//transFile/uploadTransFile"fbin_1 = open("D:\\China Int\'l big data expo opens.docx", "rb")files_2 = {"file": ('China Int\'l big data expo opens.docx', fbin_1,'application/vnd.openxmlformats-officedocument.wordprocessingml.document,{}')}body = {"taskId": task_id,"batchId": batch_id,}upfile_req_res_1 = requests.post(url=host, data=body, headers=header, files=files_2)print("上传文件结果",upfile_req_res_1.text)ids_1 = json.loads(upfile_req_res_1.text)["data"]###追加任务保存add_host = "http://ip/zy/transTask/addTaskFile"add_body_1 = {"language": "","taskId": task_id,"batchId": batch_id,"ids": ids_1,"taskName": task_name,"toLanguage": "cn",}submit_req_1 = requests.post(url=add_host, data=add_body_1, headers=header)print("追加文档任务提交结果", submit_req_1.text)####获取任务翻译状态task_status_host = "http://ip/zy/transFile/getTransFileList"status_body = {"fileName":" ","pageNum":1,"pageSize":10,"taskId":task_id,"language":" ","fileStatus":" "}print ("消息为",status_body)status_req = requests.get(url=task_status_host,params=status_body,headers=header)print ("任务状态为",status_req.text)
# for i in range(10):
#     upfile_trans()
#upfile_trans()
# for i in range(1):
#     task_add_file("540e56d288254aac8462ee96dff54318","694930276698030080","文本翻译 14:30:59")
#upfile_trans()

线程调用如下:

#coding=utf-8
import threading
import  time
import json
from ztxt import req_file_transclass myThread(threading.Thread):def __init__(self):threading.Thread.__init__(self)def run(self):req_file_trans.upfile_trans()
thread_list =[]
#启动10个线程进行调用
for i in range(10):thread_real = myThread()thread_list.append(thread_real)thread_list[i].start()#print (len(thread_list))

这里还不涉及线程锁这块的内容(后续补充)。

杂谈 python脚本调用接口进行性能和稳定性测试(套路)相关推荐

  1. Python脚本调用腾讯地图接口

    Python脚本调用腾讯地图接口 腾讯地图提供的有公开的webServerAPI,BAT在很多领域三分天下,地图领域也是如此.腾讯地图在几年以前还是烂的掉渣,自从腾讯的很多生态合作伙伴使用了之后,现状 ...

  2. 金蝶云 python脚本调用管易接口

    金蝶云 python脚本调用管易接口 appkey等加密信息已修改,自行替换处理. import clr clr.AddReference("System") clr.AddRef ...

  3. Python脚本调用谷歌浏览器的谷歌翻译

    Python脚本调用谷歌浏览器的谷歌翻译 前言 一.使用方法 1.下载驱动 2.配置启动方式 3.翻译方式 二.硬核代码 三.注意事项 前言 相继做完有道翻译,百度API翻译,代理IP池翻译翻译后,各 ...

  4. 人生苦短,使用百度云SDK,编写python代码调用接口的车牌识别

    两个想法 调云在线的接口或者使用SDK做开发(配置环境和编译第三方库很麻烦,当然使用python可以避免这些问题) 自己实现车牌识别算法(复杂) 一开始准备使用百度云文字识别C++ SDK来做,发现需 ...

  5. 【C++Python】C++调用Python(二):Python脚本调用

    系列文章目录 [C++&Python]C++调用Python(一):Hello World [C++&Python]C++调用Python(二):Python脚本调用 目录 系列文章目 ...

  6. 手把手教你用Python脚本调用 DeepL API Pro 进电子书的行进行中英文自动翻译

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 洛阳亲友如相问,一片冰心在玉壶. ...

  7. 64测试cpu稳定性_SuperPI-圆周率计算与CPU性能与稳定性测试

    Super PI是由东京大学Kanada lab出品的一款专用于检测CPU稳定性的软件,目前最新版本是1.9版,更新于2013年了.Super PI软件通过计算预定的圆周率让CPU高负荷运作,从而达到 ...

  8. libreoffice python_如何从python脚本调用现有LibreOffice python宏

    最后,我有一个可行的解决方案.叮!东!在#!/usr/bin/python3 # -*- coding: utf-8 -*- ## # a python script to run a libreof ...

  9. 编写Python脚本调用企查查股东信息接口将数据导出为excel文件

    此文章已同步更新至我的个人博客https://simonting.gitee.io 前言 调用企查查的API获取一万多家公司股东信息数据导出为excel文件. 1.设置IP白名单 IP获取建议使用百度 ...

最新文章

  1. 介绍Visual Studio的Android模拟器
  2. 【NLP】如何系统性的学习NLP,有三AI-NLP知识星球等你来
  3. mysql数据库连接ado_mysql:2种连接数据库方式:ADO连接、mysql的API连接 | 学步园...
  4. linux下串口的阻塞和非阻塞操作
  5. 2013驾考科目三考试难点解析
  6. vijos P1001 谁拿了最多奖学金
  7. 如何做中台战略分析模型?
  8. 简单细胞自动机代码实现
  9. VC 控件的字体控制 若将字体设置成“宋体、仿宋—GB2312、隶书、幼圆”中的某一字体时,需将lfCharSet设置成GB2312—CHARSET才使设置的字体有效...
  10. springcloud记录篇10-thymeleaf模板引擎
  11. 城通网盘API的链接研究
  12. 【Java】P1957 口算练习题—(洛谷OJ)
  13. 做硬件真的没有前途吗?看看资深工程师是怎么说的
  14. 评估分形指数和HURST指数预测金融时间序列的能力
  15. 本人初中生 历时5个月时间 我自己研制的基于Windows的操作系统终于开发完成
  16. badboy简介和回放
  17. 十一届蓝桥模拟赛 元辅音字母 JAVA
  18. vue使用sort实现json数据中字母排序
  19. 2012-04-28
  20. ArcMap 打不开

热门文章

  1. AI和测试自动化的真相
  2. mysql5.7查看数据库,【查看和修改mysql5.7端口】
  3. linux的普通用户不能执行关机命令,linux:root用户让普通用户可以使用关机命令...
  4. Ubuntu安装待办事项工具gnome-todo
  5. tomcat11、tomcat10 安装配置(Windows环境)(详细图文)
  6. 关于WinExec的问题?
  7. OpenCV 单目测距实现
  8. 世界区块链大会,ZJUBCA再出发
  9. python简易老虎机小游戏
  10. RabbitMQ后台管理界面