我们产品的架构是:
底层能力经过一些列的处理生成待入库文件→由dubbo调用入库组件dic通知easyes向elasticsearch插入数据。
底层能力包含:语音转码、语音转写、转写文本添加标签(音量,时间戳等信息)
不BB了。。。晚点再补充。
先说需求:
客户要求我们系统在特定条件下,实现数据预览查询、模型检索上线,报表预览查询、报表下载响应等场景作限制处理:
1、不要报错
2、接受数据范围限定
3、接受任务排队机制
4、系统别报错
根据客户需求确定了几个使用场景,目前设定了时间:一年、半年、三个月;数据量大小都保证检出数在十万只百万级别。
不BB了。。。晚点再补充。
实现:
jmeter前置信息:公共变量、模型名称、mysql/oracle数据库连接(需要对应的jar包)、HTTP Cookie管理器、察看结果数、聚合报告
以其中一个场景(报表预览)为例:
http请求:登录系统(loginIn),设置IP、端口、协议、方法、编码格式以及路径
传用户名和密码参数,使用base64加密方式,所以提前导入,accountName传参值设置为${__base64Encode(${user_name},)}
http请求:报表预览(getTableData),设置IP、端口、协议、方法、编码格式以及路径
1、设置对应Form Data的参数值
2、补充HTTP头信息:Request Headers,此时的Cookie可不添加
3、可添加响应断言:响应文本包括“登陆成功”
测试时发现jmeter的响应结果和页面的response不一致,接口虽然请求成功了,但是返回的结果缺少一部分字段。
仔细检查才发现,报表预览getTableData接口在发送请求时在参数中并没有带TableId字段,所以直接调用此接口来测试是行不通的.
然后刷新此页面后,再次点击预览,才发现在预览前有获取报表Id的接口getReportById,逐个按顺序添加至TestSuite,执行后返回结果正常。
结果查看:
从察看结果数中可以看到每个具体的请求的响应情况
从聚合报告中查看到每个线程组的执行次数,最高最低响应时间、错误率等信息
总结:
1、数据库或加密等信息需要提前准备好,向研发人员咨询支持的包
2、若涉及到验证码等信息,可以加入后门,使用万能验证码,或临时关闭验证码校验
3、对于session保持的请求,需要提前加入HTTP Cookie管理器
4、若请求中没有带有关键参数,可查看前置相关请求或检查隐藏参数