本系列旨在帮助大家面试测开/自动化职位时拿到更高打分。
问题均由学员/粉丝提供的真实面试记录,帮大家解答,我义不容辞,但有些问题如果回答的不够仔细和正确,也希望大家能客观的指出改正,轻点黑我。
已征得记录者放到公众号的同意,问题和答案我会脱敏,不会泄露当事人信息。
本号公开的问题为出现概率较高的
开始正文...
1.我们公司用的接口需要解密加密,如果交给你来做,你能完成吗?(mock、抓包的接口需要加密解密的)
很多小伙伴没有接触过接口的加密解密,遇到这种一听就很高大上的问题,有时候会慌,会打退堂鼓,其实不用害怕,很多公司的加密策略都大同小异。并没有什么难的。
首先肯定是回答可以完成。加密的策略:一般公司会给一个中文描述的加密算法给你,其实就是给所有接口的请求参数中添加一个用来验签的字段:sign、key等等。
也就是说你发出的接口请求,如果加密不对,那么这个sign的值和服务器预期的值就不会不同,就会判断你为中间劫持过请求,从而拒绝正确响应。
比如说,用接口的所有参数,按照某个规则从小到大排序,然后用什么字符拼接,然后加上时间戳,再加上公司给的一个固定含义字符串。形成的一个长字符串再用流行的sha1、md5等算法加密成为一个32位的新字符串。这个字符串即sign或key的值。
如果你是劫持的人,那么你不知道这个算法和其中的固定字符串,所以你永远也得不到正确的加密值。
在我们的测试平台/接口自动化/mock平台等等工具上,均可以对这种加密策略进行自动化处理,来方便测试环境测试。
最后给那些始终调试不对的小伙伴说一下,着重检查你的中文编码吧。
2.用过复杂一点的吗?多线程多进程这些?
可能大家对于这种问题会很反感,因为线程进程的概念其实大家都懂一些。也知道python 是靠thread和process来启动线程和进程的。
但是面试官考察的并不是你的八股文理论,而是你实际中是否真的用到过这些技术,也就是必须要说出一些具体的使用场景。
估计大多数自动化工程师一定会想到自己的脚本用例中,出现并发的情况时候,多数都会使用多线程来解决。
但是多进程却极少使用,其实在测开工程师的测试平台中,多进程也会经常使用,因为平台本身的启动就相当于一个进程。而后台在处理异步任务的时候,一般就会使用新进程去解决,比如启动某脚本任务等。
3.你写了很多case,需要跑的时间很长,怎么提高执行速度。
办法1:【优化准备代码】比如你要测试删除好友功能,结果这条用例是先要不断的点击来添加一个新好友,然后再测试删除功能。那么添加好友的这部分即为准备代码,可以用更为快速的直接操作接口或者数据库的方式来准备。
办法2:【提高小用例之间的连贯性和规程度】也就是用例1的结尾可以直接作为用例2的起点。或者干脆把用例1和用例2合并。但是这样做有风险,毕竟提供了耦合度。
办法3:【减少等待时间浪费】比如time.sleep()这种等待代码,替换成智能等待,减少浪费现象。
办法4:【善用mock】对于一些第三方或者不重要的卡顿接口,可以采用mock写死返回值IDE方式来大幅减少时间消耗。
办法5:【优化测试环境】其实很多测试环境脚本跑的慢的主要原因就在于测试环境实在是太卡了。相信很多小伙伴都深有感触。所以测试环境如果能让运维帮忙优化一下那就简直nice了。
办法6:【多线程/多进程/分布式来并发运行用例】这点估计是最实用的办法,可以直接把所耗时间成倍的下调。但是应用的时候也要考虑技术难点,稳定性,和设备性能,不能各种卡死报错,得不偿失。
办法7:【减少/替换支撑服务】很多同学做的自动化项目用了太多支撑接口和服务,除了不稳定外,就是慢了。比如自动化项目的数据,其实没必要存储在公司的某测试环境数据库中,又卡又乱。弄个轻量级的数据库更好。
办法8:【页面跳转优化】有些同学ui自动化中为了进入某一页面后执行用例。就自动化点了好多地方才成功跳转。实际上,这种非关注的跳转过程,可以直接输入url的方式跳转:driver.get(url)速度上提升很大。
办法9:【减少文件的读写】有些配置和数据,关键字策略等。大家喜欢写在txt、csv、excel中,其实如果能替换到数据库中读写,那么速度和稳定性都会大幅上升。
办法10:【升级物理设备】可能有的同学觉得物理设备影响不大,实际上你换了好的就知道,速度快的不是一点半点。就算是要并发,好的服务器/手机设备都能更好的支持更多进程和用例。
办法11:【业务设计上重设优先级和分类】既然面试官想让你提速,那么就说明实际中常出现时间不足的情况,虽然我们上面所有方法都用过,但是还是有可能出现时间不够的情况,那时候我们就应该对所有用例进行分类,并且设置优先级。在最短时间内保证最重要的用例脚本先跑。
办法12:【算法优化】在做自动化的时候其实是有小概率涉及到一些算法上的后台代码的。如果你上升到了自动化测试平台,那么算法的使用只会更多。在同架构下,有时候算法能提高的速度会达到几倍。比如作者开发的一个智能自动化测试平台中,ai需要判断出如何最短时间跳转到下一个用例的起点页面,其中应用的算法就比较复杂,一开始需要十几秒,后来经过不断优化,降低到了0.几秒
平台在后期作者的私人培训中会有具体讲解和教程,而公众号则会在以后用另一种业务场景中使用这套技术。
本次就暂时写这么多。欢迎持续关注下一章哦~