前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试平台代码实现151:加密算法后台函数实现

接口测试平台代码实现151:加密算法后台函数实现

作者头像
我去热饭
发布2022-05-19 10:15:58
2110
发布2022-05-19 10:15:58
举报
文章被收录于专栏:测试开发干货

本节我们准备搞定这个加密的生成算法。

好的,在这大家也跟了150期了,对于这个算法的实现,能否知道从哪下手呢?觉得难么?

如果觉得难,那么此时要怎么办?能帮助你的就是 热饭的《测试开发方法论》

方法论迟早会成书,目前已经在设计中了,到时候打赏过的同学都可以成本价拿到书,排名前100的同学都会免费收到,而且博主亲自签名款哦~

根据《测试开发方法论》中所说:

当想要做一个工具方法函数的时候,通过固定的步骤来设计就会很简单且简单实现:

1. 这个函数要写在哪?

写在views.py中,游离在外,方便调用。

2. 这个函数要干什么?

生成最终的sign或者其他加密字段,并返回拼接好后的url和body!

3. 这个函数需要什么上游数据?

需要数据库拿出来的url和body,然后是项目id,根据项目id来获取到加密表达式和加密位置。

4.这个函数要怎么调用?

各个上游函数,通过a,b = func(a,b,c) 来调用。这几个变量大家应该知道是什么了,就是url,body,project_id。

5.这个函数内部要怎么实现?

首先我拿到的有完整的url+body, 然后还有加密表达式,那么完全可以用Python代码来计算出最终的变量。然后根据加密插入位置 来决定给url还是body加入,最后把拼接完的url和body送返还给调用者即可。

6.这个函数要求什么性能么?

当然有要求,这个函数在所有需要加密的请求中均会运行一次,而且如果遇到非常长的url和body,并且加密过程很繁琐的情况下,如果算法不够智能,则会严重拖慢使用体验。不过我们当前要解决的事完成实现,而非优化。关于什么时候优化,优化的目标,程度和手段,同样可以在《测试开发方法论》中找到答案。

7.兼容性稳定性健壮性等等

这个优先级要高,作为一个被调用的桩函数,它接收到的数据可能是多种多样的,那么这里首先要保证的就是不能报错,然后是想尽办法适配各种类型的,比如url 有的人写的后面没有参数,有的有参数,有的后面是?有的后面是/或.com或其他字符串,那我们进行拼接新的加密字段的时候,就要针对这些情况做出不同的对应方案才可以让上游函数放心调用。

然后继续进行下列思考:

因为函数比较复杂,所以我们准备先去草纸-test.py中,去实现,这样多轮调试可以很快节省成本,等实现后,再复制到项目views.py中即可,这也算是个快速开发的小窍门,同样可在《测试开发方法论》中找到。

不过我们这里仍然漏掉了一个重要参数,那就是body的类型,在我们的body中有 none,form-data,x-www.. 和 纯文本格式的 raw-json , raw-text 甚至url,js等等类型,那么加密字段要想插入它们的写法必然也是不同的,甚至提取的时候就不同,此时我们应该传入请求体类型。

那么对于一些无法提取和无法插入的请求体我们要怎么办呢?答案是不办!直接返回无法插入就可以了,能这么操作的用户估计是不会用,你一个加密字段,你往一段xml里插什么插,你是接口测试人员么?当然我们不用真的嘲讽,只需要不执行即可。

好本期思考完毕,希望小伙伴能自己先根据这些锻炼的设计出来,下期我再开始正式代码实现。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发干货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档