说好的每周写一篇文,结果吹出去的牛和放屁一样,不忍心离自己作家的梦想渐行渐远,今天就少写点字。以一个简单的例子来说明下接口加密的简单测试。写完上篇文,同事问我Jmeter进行接口测试的问题, 本来想着写个docker的文,正好最近沉迷DevOps,但一想自己也是个菜鸟,别写错了丢人,还是继续写点接口方面的,接口测试是最简单的,像Jemeter、Postman这种工具,你贴个URL,加点参数,选个方式GET/POST,一点按钮,人工对比下返回的接口数据,AI测试、安全测试啥的都比接口难多了。当然,咱们是不屑于这些工具的,自己来写个简单的框架,虽说简单,但却是当下比较流行且高效的。
前些年,测试人员都不会写代码,会写代码的测试就会显得有逼格,后来测试都会写代码了,那咋办,想让老大赏识只能硬着头皮封装成UI和配置文件来测试,但是到头来兜兜转转,这不是自己造轮子玩吗,这种炫技对推进工作贡献不大。接口测试与单元测试一样,测试代码简单高效是基础,过度封装,到最后没开始测试产品的代码,一直在重复检查自己的测试代码,维护成本反而更高。
接口工具的缺点,或者说不能满足工作要求的几个方面,促使我们自己写接口自动化框架。首先是数据驱动(当前互联网公司基本摒弃了关键字驱动:效率低、难维护),然后是自动化程度低,批量执行用例、自动生成测试报告并发布、持续集成这些是工具所不能满足的,最后就是加密的接口,时间戳和一些加密算法简直就是工具的死穴,所以今天就来简单说说基于MD5简单的接口加密测试。
写测试之前先演示MD5加密的简单例子方便理解。Python中MD5加密是通过hashlib来完成的。例如我们先准备一段要加密的文本如下:
“i love ADCC”
然后只需要简单调用hashlib中的MD5加密算法即可:
注:此处要强调点问题,因为我在这被虐了,就不希望你们被虐了。如果没有强制转换字符串类型,那恭喜你踩坑成功,报错:“Unicode-objects must be encoded before hashing”,意思是在进行md5哈希运算前,需要对数据进行编码。hashlib.md5(data)函数中,data参数的类型应该是bytes。也就是说我们在进行hash前必须把数据转换成bytes类型,因为同一个字符串在不同的编码体系下有不同的值,为确保不发生歧义必须要进行一次显性转换。
加密接口,写代码是最灵活的,直接上一个小例子帮助理解(只为举例说明,就不输出测试报告了,这次用单位的飞越系统,全英文,逼格满满嘿嘿):
注:打印要写在断言之前
就是这么简单,就是这么方便。喜欢玩工具的同学可以提出抗议,反正我不接受。时间仓促,不详细的地方以后有时间再加,要下班了。
网友评论
不甚感激!!