「原创声明:保留所有权利,禁止转载」
前段时间做了一次参数需要签名的接口性能测试,有文为证:线程安全类在性能测试中应用。在处理测试结果时候遇到一个问题:因为本机签名耗时较多,10ms 级别,并发情况能达到 100ms 级别。所以进行数据校验尤为重要。自研的性能测试框架:性能测试框架第三版。
在两次请求间歇,本地只是做了测试结果的收集,测试数据的生成和签名,其中签名是最耗时的。这个时候在收集完测试数据之后,就需要进行一轮甚至几轮的微基准测试。
微基准测试用来测量微小代码单元的性能,包括调用同步方法的用时与非同步方法的用时比较,创建线程的代价与使用线程池的代价,执行某种算法的耗时与其替代实现的耗时,等等。
下面是我组装参数和参数签名方法,注释掉请求和处理相应的方法之后:
@Override
protected void doing() throws Exception {
String url = com.okayqa.studentapd.base.OkayBase.HOST + "/api/member/createOrRenewMember"
Map<String, String> p = new HashMap<>();
p.put("days", "1");
p.put("memberId", "208");
p.put("orderNo", "F" + RString.getString(4) + i.getAndAdd(1));
p.put("orderPaySystemId", "85123213");
p.put("orderPayTime", "2020-02-09 10:00:00");
p.put("payMoney", "30");
p.put("recordSources", "3");
p.put("renewal", "false");
def user = Users.getStuUser(i.getAndAdd(1) % 1000)
// output(user)
p.put("systemId", user);
String sign = RSAUtilLJT.sign(p, RSAUtilLJT.getPrivateKey(RSAUtilLJT.RSA_PRIVATE_KEY));
p.put("sign", sign);
HttpPost post = getHttpPost(url, JSON.toJSONString(p));
def s = "F" + getNanoMark()
// post.addHeader(getHeader("requestid", s));
//
// def simlple = FanLibrary.excuteSimlple(post)
// if (!simlple.contains("success")) {
// logger.warn(s + OR + user + simlple.toString())
// fail()
// }
}
```
这样再运行接口压测脚本:
```Groovy
public static void main(String[] args) {
def argsUtil = new ArgsUtil(args)
def thread = argsUtil.getIntOrdefault(0, 1)
def times = argsUtil.getIntOrdefault(1, 100)
def reqs = []
thread.times {
// def mark = new HeaderMark("requestid")
reqs << new Thr(times)
}
new Concurrent(reqs, "会员支付和续费接口").start()
testOver()
}
用同样的线程和次数来测试非请求消耗的时间,然后再从接口性能测试时间中减去这块时间就好了。这样做还有一个问题:经过数据校准后的吞吐量应该是高于实际值的,因为本机请求间隙相当于进行了等待,实际服务器承受的压测并不是修正后的数据。关于这一点,我将在下一期文章分享如何减少本机误差。
- 郑重声明:文章首发于公众号 “FunTester”,禁止第三方(腾讯云除外)转载、发表。
技术类文章精选
- Linux 性能监控软件 netdata 中文汉化版
- 性能测试框架第三版
- 如何在 Linux 命令行界面愉快进行性能测试
- 图解 HTTP 脑图
- 将 swagger 文档自动变成测试代码
- Selenium 4.0 Alpha 更新日志
- Selenium 4.0 Alpha 更新实践
- 如何统一接口测试的功能、自动化和性能测试用例
非技术文章精选
TesterHome 为用户提供「保留所有权利,禁止转载」的选项。
除非获得原作者的单独授权,任何第三方不得转载标注了「原创声明:保留所有权利,禁止转载」的内容,否则均视为侵权。
具体请参见TesterHome 知识产权保护协议。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。