评论

收藏

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

网络安全 网络安全 发布于:2021-07-01 17:10 | 阅读数:443 | 评论:0

  本节我们准备搞定这个加密的生成算法。
  好的,在这大家也跟了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里插什么插,你是接口测试人员么?当然我们不用真的嘲讽,只需要不执行即可。

  
关注下面的标签,发现更多相似文章