美文网首页软件测试
记于一次写性能测试工具的经历

记于一次写性能测试工具的经历

作者: 点点寒彬 | 来源:发表于2018-07-26 20:22 被阅读90次

背景

最近接到一个需求,就是对我们的某个产品线进行压测,实际上主要还是看系统的稳定性,比如压个一晚上,看看系统是否稳定。基于这个需求,我专门去看了一些协程的知识,整个开发过程有了那么一点点的想法,作文以记之。

数据准备

要对接口做压测,很基本的一个前提,数据的准备必须要很充分。比如压一晚上,那么几万条数据你得准备好,用传统的Excel或者CSV的方式来做,那数据准备得搞死你,我之前面过一个小哥,他们准备一次压测,数据就要准备一周,要是其中某些数据做的被人破坏了,只能重新来过,整个过程非常痛苦。

  • 以数据平台的方式来造数据

我们已经有了一个现成的数据平台,每次只要从这个数据平台啦数据就行了。

但是这里依然有一个问题,我们的平台并发量只有20,我在测试的时候拉取数据并发量太大就会导致数据丢失,因此在获取数据的时候,我必须要分批次的拉取数据,比如每次我只拉取10条数据保存在内存中。这样就导致了,如果每次要并发1000个请求,那么我就要先从数据平台拉取100次,然后才能往下请求,整个拉取过程中如果服务器出了点什么问题,就必须重来了。

  • 性能建模

我们造数据的时候还要考虑到性能建模的问题。所谓的性能建模,也就是把生产的数据拉下来,按照一定的业务比例去造数据。比如生产上10%是成功的,%10是由于A原因导致失败的,%10是由于B原因导致失败的等等。这类数据也是需要在生成的时候去考虑的,能够配置化生成则最好。

  • 业务流

涉及到业务流的接口也是非常的麻烦,尤其是业务流多的时候,比如我们信贷业务,如果要测一下还款的接口,那么就必须有授信和借款的数据,整体操作起来非常麻烦,要么就直接往数据库插数据,然后把下游给Mock掉,要么就真的去发一堆交易。

发送请求

发送请求这块我目前是用协程去做的,但是有一点问题,我做的是单进程单线程的协程,具体并发量有多大我也没有测试过,根据我统计的结果来看,响应时间是一直在递增的,所以统计的结果具体是否正确,这个必须要从服务端的角度来监控,并且并发量等内容还有待测试。理论上最好还是多进程带着协程一起玩,效果可能会好很多,这块不具体描述,主要是现阶段我也还没研究透,不便记录一些误导性的信息。

结果收集

结果收集这块我是分为公共字段和私有字段。

公共字段就是我自己有做的埋点的数据(非服务端埋点),主要是请求的耗时,返回码等信息

私有字段,大多是根据业务需要自定义的,比如授信交易有对应授信的字段,借款交易有对应借款的字段。

在压测执行完毕之后,所有结果都是保存在内存中,最终会根据一个模板来生成最终的测试报告。

关于结果收集这块,我建议最好还是由服务端来做。服务端的埋点数据精准度一定是高于发起端记录的数据,在发起端收集的报告仅限于参考,除了一些业务数据的记录是正确的,性能相关的记录或多或少都会有一些误差。

总结

所有跟性能相关的事情,都会比平时多几倍的工作量。从最初的数据准备开始,一直到最后的结果反馈,中间可做的事情非常多。如果整体要做成一个平台的话,难度非常大,不仅仅是脚本的灵活度要高,周边的支持也非常重要。

比如我们的数据平台,说句实话,有20的并发量,完全能满足我们日常工作中的需要,但是用来压测数据的生成,显然还是有些低了。如果要做一些性能建模,那么实现难度将会再上一个层次,或者说再兼容一下业务流?

其他支持包括独立的环境,独立的数据库,针对性能监控的埋点,外部接口的Mock,还有系统的监控这一整套体系的支持,可能需要开发和运维都一起参与进来。

路漫漫其修远兮,吾将上下而求索。

相关文章

  • 记于一次写性能测试工具的经历

    背景 最近接到一个需求,就是对我们的某个产品线进行压测,实际上主要还是看系统的稳定性,比如压个一晚上,看看系统是否...

  • 测试类型划分

    功能测试 性能测试 性能测试主要包含以下方面: 性能测试指标 性能测试常用工具 安全测试 安全测试常用工具 安全测...

  • Redis_测试性能

    redis-benchmark是一个压力测试工具,官方自带的性能测试工具!redis性能测试工具可选参数如下所示:...

  • apache-ab并发负载压力测试

    ab 介绍 apache ab(Apache Bench)性能测试工具,这是[apache]免费自带的性能测试工具...

  • locust学习(一)

    最近需要做性能测试,着手使用locust写性能测试脚本,下面记录一下学习过程 使用的开发工具是:pycharm,安...

  • 【转转QA】ZLJ卖场-全链路压测演进

    背景 原ZLJ卖场的压测流程,是依托于阿里云PTS工具,团队自身缺乏性能测试能力自建,缺少性能分析和数据沉淀,测试...

  • 做好性能测试,应该需掌握些什么

    1、精通性能测试的一些基本:概念、过程、方法论、性能工程等.. 2、精通性能测试工具:商业性测试工具也好,开源性能...

  • 性能测试学习日记一

    首先理解理念,再学习工具; 性能测试流程 完整的性能测试流程包括以下几点:性能需求获取、性能测试场景设计、性能测试...

  • 常见性能测试工具

    性能测试工具,从理论上来讲在性能测试过程中使用到的所有工具都可以称其为性能测试工具,通常分为以下几类: 说明: 服...

  • 这 5 款实用性能测试工具,你会如何选择?

    当我们做性能测试的时候,测试协议需要用到性能测试工具。市场上有很多可以做性能测试的工具。有些是收费的,有些是开源免...

网友评论

    本文标题:记于一次写性能测试工具的经历

    本文链接:https://www.haomeiwen.com/subject/xslimftx.html