在接口测试中,签名(sign)是一种重要的加密方式,用于保障数据传输的安全性和完整性。在这篇文章中,我们将通过一个具体的案例来学习如何使用 JMeter 进行签名接口的测试,并用 Python 代码进行实战演示。
比喻:就像是把一个礼物装进了一个盒子里,然后用精美的包装纸和细带子把它封起来,让别人无法轻易地看到里面的内容,只有用正确的方法才能打开盒子,看到里面的惊喜。
同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档
软件测试视频教程观看处:
自动化测试篇—实战案例:自动化及接口自动化本质及适用场景
第一步:生成签名
首先,我们需要根据特定的规则生成签名,以确保数据的安全性和完整性。签名的生成过程可以使用 Python 编写脚本实现。我们可以使用 hashlib 模块对请求参数进行加密,并将加密结果作为签名的值。
比喻:就好像是做一道菜,需要按照特定的配方和步骤进行烹饪,最终才能得到美味的佳肴。而生成签名就像是添加各种香料和调味料,让菜肴更加美味可口。
下面是一个 Python 脚本示例,可以根据指定的规则生成签名:
import hashlib
def generate_sign(params):
keys = sorted(params.keys())
items = []
for key in keys:
if params[key] != '':
items.append('%s=%s' % (key, params[key]))
sign_str = '&'.join(items)
sign_str += 'secret_key'
md5 = hashlib.md5()
md5.update(sign_str.encode(encoding='utf-8'))
return md5.hexdigest().upper()
这个脚本将请求参数按字母顺序排序,并将其转换成字符串。然后,它会在字符串的末尾添加一个密钥(例如“secret_key”),最后使用 MD5 算法对整个字符串进行加密,并返回签名值。
第二步:设置 JMeter 测试计划
接下来,我们需要设置 JMeter 的测试计划。首先,我们需要创建一个线程组,并设置线程数和循环次数。
比喻:就好像是在野外露营,需要建立一个帐篷,设置好人数和住宿时间,以确保大家能够舒适地度过夜晚。
然后,我们需要添加一个 HTTP 请求,默认方法为 POST。在请求中,我们需要设置请求的 URL、参数、请求头信息等。其中,最重要的是签名值,需要从 Python 脚本中获取并传递给请求参数。
比喻:就好像是在一家餐馆点餐,需要告诉服务员菜单上想要点什么菜,以及各种口味和偏好。而签名值就像是你的身份证号码,需要通过验证才能得到餐品和服务。
下面是 JMeter 的测试计划配置示例:
线程组:Thread Group
- 线程数:10
- 循环次数:1
- 延迟时间:1000ms
HTTP 请求:HTTP Request
- URL:http://api.example.com/sign.do
- 参数:
username:${username}
password:${password}
sign:${sign}
请求头信息:
- User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0
- Content-Type:application/x-www-form-urlencoded;charset=UTF-8
在这个测试计划中,我们设置了一个线程组,其中包含 10 个线程。
每个线程将发送一次 HTTP 请求,然后进行一次循环。我们还设置了一个延迟时间,以确保请求之间有足够的时间间隔。
在 HTTP 请求中,我们设置了请求的 URL 和参数。其中,用户名和密码是需要在运行时从变量中获取的值。而签名值则需要通过 Python 脚本生成并传递给请求参数。
最后,我们还设置了请求头信息,包括 User-Agent 和 Content-Type 等。
第三步:运行测试计划
最后,我们需要运行测试计划,并查看结果。在测试执行过程中,JMeter 会模拟多个用户同时访问接口,以检测其性能和稳定性。测试结果也可以通过 JMeter 的报告功能进行分析和展示。
比喻:就好像是在一家餐厅吃饭,服务员把菜品和饮料端上来之后,你需要对它们进行品尝和评估,以确保它们符合自己的口味和要求。
下面是使用 Python脚本和JMeter进行签名接口实战的代码示例:
import random
import time
import requests
# 定义请求参数
params = {
'username': 'admin',
'password': '123456',
}
# 生成签名
sign = generate_sign(params)
# 设置 JMeter 变量
vars.put("username", params["username"])
vars.put("password", params["password"])
vars.put("sign", sign)
# 发送 HTTP 请求
response = requests.post('http://api.example.com/sign.do', data=params)
print(response.text)
在这个示例中,我们首先定义了请求参数,并使用 Python 脚本生成签名值。然后,我们将这些参数设置为 JMeter 变量,以便在测试计划中使用。
最后,我们发送一个 HTTP 请求,并打印出响应结果。这样,我们就可以通过 Python 脚本和 JMeter 实现签名接口的实战演示了。
总结
通过本文的学习,我们了解了如何使用 JMeter 进行签名接口测试,并用 Python 代码进行实战演示。签名作为一种重要的加密方式,在接口测试中起到了重要的作用。希望本文对大家有所启发,能够帮助大家在接口测试工作中更加熟练地运用签名技术。
最后祝大家都能找到心仪的工作,快乐工作,幸福生活,广阔天地,大有作为。PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G【点击文末小卡片免费领取】
☑ 240集-零基础到精通全套视频课程
☑ [课件+源码]-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。
送给大家一句话,共勉:当我们能力不足的时候,首先要做的是内修!当我们能力足够强大的时候,就可以外寻了!