• 0
  • 0
分享
  • Python助力性能测试:报文批量生成——软件测试圈
  • 曼倩诙谐 2021-03-04 10:42:25 字数 1890 阅读 1282 收藏 0

  当前,我国金融体系内交易量持续增长,业务场景日趋复杂。系统交易量的增加,临时产生的集中业务需求,都会使服务器面临考验,因此,需要对系统进行性能测试。在金融系统中,报文处理是必不可少的。各大金融机构间通过报文的交换进行信息流的传递,从而最终实现资金的跨机构流转。在对金融系统的性能测试中,自然也少不了与报文打交道,而性能测试往往伴随着大量数据准备。那么,如何高效地生成大量报文呢?

  试想这样一种场景:某金融机构需在特定时间内进行一波资金划转,该业务是新增交易,且交易数量较大,需要准备大量报文对服务器进行性能测试。数据的准备有很多方法,其中Python由于易上手且兼具灵活性而逐渐受到测试工程师们的青睐。今天,我们就来介绍一下如何通过Python批量生成测试报文。

  1.批量报文准备

  上述例子中提到的报文一般可分为单交易报文和批量交易报文两种。单交易报文的获取是非常容易的,而批量交易报文则可通过单交易报文生成,Python中的pyperclip模块为实现这一功能提供了便捷的支持。pyperclip中的copy和paste方法分别可实现向剪切板发送文本和从剪切板读取文本。下面的代码实现了读取单交易信息,并生成指定数量批量交易的功能:

import pyperclip
# 交易数量
dealNum = 2
# 读取单交易信息并复制到剪贴板
with open(r'test.txt', encoding='utf-8') as f:
    txt = f.read()
pyperclip.copy(txt)
# 生成批量交易
res = ''
dealInfo = pyperclip.paste()
for i in range(dealNum):
    res = '{}\n{}'.format(res, dealInfo)
print(res)

  当交易数量为2时,生成报文示例如下:

<tag>测试报文</tag>
<tag>测试报文</tag>

  2.交易号生成

  在一笔交易中,往往包含标志交易唯一性的定长交易号。从上一步中,我们得到了拥有相同信息的若干笔交易,但由于交易号相同,直接发送上述交易报文会因重复编号导致记账失败。我们很容易想到,可以通过random函数生成随机数来模拟不同交易,但如何确保编号的唯一性呢?random模块中包含一个名为sample的方法,通过它,可以生成不重复的随机数。例如,通过以下代码可得到5个不重复的8位随机数:

import random
# 随机生成8位交易号
traNo = random.sample(range(10**7, 10**8), 5)
print(traNo)

  返回生成的随机数列表,如下:

[69244291, 71447069, 95104116, 91919619, 50861438]

  3.交易号替换,目标报文生成

  在前面步骤均已完成的前提下,下一步就可以进行编号的替换了。报文中的交易号一般形式为“<标签>编号</标签>”,对于此类数据的替换,正则表达式是非常有效的手段。Python中的re模块可通过正则表达式进行字符串的匹配,下面的代码通过查找交易标签,对其中的交易编号进行了替换:

import re
# file:待替换文件
# numberList:随机交易号列表
def alter_file(file, numberList):
    fileData = ''
    i = 0
    with open(file, 'r', encoding='utf-8') as f:
        for line in f:
            if '<tag>' in line:
                newStr = '<tag>{}</tag>'.format(numberList[i])
                i += 1
                line = re.sub(r'<tag>\d+</tag>', newStr, line)
            fileData += line
    with open('result.txt', 'w', encoding='utf-8') as f:
        f.write(fileData)

  在以下示例中,原有的编号已被替换成为了不重复随机数。

1-1.png

1-2.png

  实际测试中,结合以上方法,即使上万条交易报文也能轻松准备,为性能测试的开展提供了有力的支持。


作者:许思琦   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •       Airtest支持iOS自动化测试,在Mac上为iOS手机部署iOS-Tagent之后,就可以使用AirtestIDE连接设备,像连接安卓设备一样,实时投影、控制手机。iOS测试不仅限于真机测试,iOS模拟器也可以进行。Mac端上部署完成后还可以提供给同一局域网内的windows上远程连接使用。同时支持airtest图像识别和pocoUI检索。      本文介绍iOS自动化测试的部署过程,提供一个简单的测试脚本,列举了iOS测试过程中常见的问题。      功能支持支持A...
            0 0 2345
            分享
          •   笔者从08年开始做软件测试,到现在有10多年的时间了,以功能测试为主,做过将近两年的自动化测试,目前在家里做电商。  大家都知道今年的行情不太好,前段时间在各大网站上投了几百份简历,只收到了一个面试通知,公司在宝安的一个工业园,坐车过去需要一个多小时。  笔试  约好的面试时间是上午10点,为了不迟到,我8点就出发了,大概9点45分到达公司。然后前台让我填了一下表,接着给了我一份面试题,让我做完以后交给她。  我看了一下题目并不难,基本上都是问答题,主要是关于逻辑思维能力以及如何设计测试用例方面的。由于我有一年多的时间没做测试了,所以很多东西都荒废了,导致有几道题没答好,卷子做完之后就交给...
            0 0 949
            分享
          •   79元的国货套餐你也可以带回家,点击链接填测试行业调查问卷,并参与分享活动!链接:http://vote.51testing.com/   最近《罗刹海市》这首歌火了,连打出租车,司机都在循环播放。  还有一个火出圈半年的ChatGPT也“火出圈”半年了,在今年3月份我被ChatGPT爆火新闻震惊到,7月份又被《罗刹海市》火爆新闻震惊到了。  一年之内被震惊到两次,2023年确实是不平凡的一年。既然这两把火这么牛,那我就不得不把做点什么了。不如,做一个小小的测验,嘿嘿......  《罗刹海市》火的时候,有很多人分析这首歌的歌词是否在影射人或事,今天我们不管歌词在影射谁,单纯用几个常见AI...
            0 0 1898
            分享
          •   测试工作中,新人对于测试流程、测试方法都有可以直接拿来用的教材,但是对于回归测试中的bug处理的细节,往往需要我们更多的经历才能更好的完成自己的工作,下面我们来谈一谈回归测试bug的处理中需要关注的点:  一、什么是回归测试?  回归测试是指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,对软件的任何新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再现,并确认曾经通过的功能不会出现问题。  二、回归测试做多少次?  很多资料都有具体指定回归的次数,在我看来,回归测试不能确却的给出一个项目具体做多少轮回归测试,因为,版本不可控的因素太多了,需求的更改、人员的...
            0 0 1077
            分享
          • 我是从开发半道转去做测试的,当时刚从事测试这个行业的时候也是意气奋发,对未来充满无限憧憬,但是在这个行业摸爬滚打了十多年后,渐渐发现这个行业不像当初描绘的那么美好,特别是网上看了一篇文章,文中对软件测试前景和发展方向的分析,真是给我们泼了一盆冷水,但比起很多粉饰测试行业多么有前景,鼓吹自动化测试、性能测试多么有前途的文章,我更喜欢这些引人反思的内容,我现在把这篇文章的关键部分转出来(做了一些改动,加些自己的想法)。一、功能测试的现状和未来目前入门的门槛很低,不少人可能都不是计算机专业毕业的,对计算机一窍不通,或者不是大学毕业的,进入测试岗位,通过中介机构的几个月的培训,良莠不齐的基础,进入某些...
            15 15 1476
            分享
      • 51testing软件测试圈微信