Python助力性能测试——报文批量生成

1979 篇文章 51 订阅
1221 篇文章 21 订阅

在这里插入图片描述
当前,我国金融体系内交易量持续增长,业务场景日趋复杂。系统交易量的增加,临时产生的集中业务需求,都会使服务器面临考验,因此,需要对系统进行性能测试。

在金融系统中,报文处理是必不可少的。各大金融机构间通过报文的交换进行信息流的传递,从而最终实现资金的跨机构流转。在对金融系统的性能测试中,自然也少不了与报文打交道,而性能测试往往伴随着大量数据准备。

那么,如何高效地生成大量报文呢?

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

批量报文准备

上述例子中提到的报文一般可分为单交易报文和批量交易报文两种。单交易报文的获取是非常容易的,而批量交易报文则可通过单交易报文生成,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>

交易号生成

在一笔交易中,往往包含标志交易唯一性的定长交易号。从上一步中,我们得到了拥有相同信息的若干笔交易,但由于交易号相同,直接发送上述交易报文会因重复编号导致记账失败。

我们很容易想到,可以通过random函数生成随机数来模拟不同交易,但如何确保编号的唯一性呢?random模块中包含一个名为sample的方法,通过它,可以生成不重复的随机数。例如,通过以下代码可得到5个不重复的8位随机数:

import random

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

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

[69244291, 71447069, 95104116, 91919619, 50861438]

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

在前面步骤均已完成的前提下,下一步就可以进行编号的替换了。报文中的交易号一般形式为“<标签>编号</标签>”,对于此类数据的替换,正则表达式是非常有效的手段。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)

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

图片

图片

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

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
在这里插入图片描述

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IEC 104报文生成器是一个用于生成IEC 104协议报文的工具。IEC 104是国际电工委员会(IEC)制定的用于电力系统自动化的通信协议,主要用于监控和控制远程站点。 IEC 104报文生成器可以根据用户输入的参数和要求生成符合IEC 104协议标准的报文。用户可以通过该工具模拟发送各种类型的报文,如传输启动报文、心跳报文、测试报文等。 该工具的主要功能包括: 1. 报文类型设定:用户可以选择生成不同类型的报文,根据具体需要生成传输启动报文、传输停止报文、心跳报文、测试报文等。 2. 报文参数设置:用户可以设置各种报文参数,如传输原因、传输原因限定词、信息元素识别等。这些参数决定了报文的具体内容和功能。 3. 报文内容编辑:用户可以编辑报文中的具体信息元素,如传输原因描述、信息对象地址、信息体类型等。 4. 报文发送模拟:用户可以模拟发送生成报文,以便测试和验证远程站点的响应和通信功能。 IEC 104报文生成器的使用可以帮助用户进行协议的测试和调试。通过生成各种类型的报文,用户可以验证远程站点的通信能力和正确性,并确保系统的稳定性和可靠性。 总之,IEC 104报文生成器是一个方便实用的工具,可以帮助用户生成符合IEC 104协议标准的报文,并用于测试和调试电力系统自动化的通信功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值