【超干货!面试问答】12种提升用例执行速度办法 - 真实面试问题标准答案

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【超干货!面试问答】12种提升用例执行速度办法 - 真实面试问题标准答案

本系列旨在帮助大家面试测开/自动化职位时拿到更高打分。


问题均由学员/粉丝提供的真实面试记录,帮大家解答,我义不容辞,但有些问题如果回答的不够仔细和正确,也希望大家能客观的指出改正,轻点黑我。


已征得记录者放到公众号的同意,问题和答案我会脱敏,不会泄露当事人信息。



本号公开的问题为出现概率较高的


开始正文...


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.几秒


平台在后期作者的私人培训中会有具体讲解和教程,而公众号则会在以后用另一种业务场景中使用这套技术。


本次就暂时写这么多。欢迎持续关注下一章哦~

相关文章
|
2月前
|
存储 缓存 JavaScript
10 个简单但不能不会的 Vue 面试问答
10 个简单但不能不会的 Vue 面试问答
|
2月前
|
机器学习/深度学习 算法 数据中心
【机器学习】面试问答:PCA算法介绍?PCA算法过程?PCA为什么要中心化处理?PCA为什么要做正交变化?PCA与线性判别分析LDA降维的区别?
本文介绍了主成分分析(PCA)算法,包括PCA的基本概念、算法过程、中心化处理的必要性、正交变换的目的,以及PCA与线性判别分析(LDA)在降维上的区别。
51 4
|
2月前
|
机器学习/深度学习 算法 Python
【机器学习】面试问答:决策树如何进行剪枝?剪枝的方法有哪些?
文章讨论了决策树的剪枝技术,包括预剪枝和后剪枝的概念、方法以及各自的优缺点。
47 2
|
2月前
|
前端开发 容器
面试官常问的清除浮动和BFC ——看完不再担心面试问题
面试官常问的清除浮动和BFC ——看完不再担心面试问题
|
4月前
|
存储 算法 数据挖掘
深入解析力扣168题:Excel表列名称(进制转换法详解及模拟面试问答)
深入解析力扣168题:Excel表列名称(进制转换法详解及模拟面试问答)
|
4月前
|
存储 算法 数据挖掘
深入解析力扣166题:分数到小数(模拟长除法与字符串操作详解及模拟面试问答)
深入解析力扣166题:分数到小数(模拟长除法与字符串操作详解及模拟面试问答)
|
4月前
|
存储 算法 数据可视化
【模拟面试问答】深入解析力扣163题:缺失的区间(线性扫描与双指针法详解)
【模拟面试问答】深入解析力扣163题:缺失的区间(线性扫描与双指针法详解)
|
4月前
|
存储 算法 数据可视化
【模拟面试问答】深入解析力扣164题:最大间距(桶排序与排序方法详解)
【模拟面试问答】深入解析力扣164题:最大间距(桶排序与排序方法详解)
|
4月前
|
SQL 算法 大数据
深入解析力扣176题:第二高的薪水(子查询与LIMIT详解及模拟面试问答)
深入解析力扣176题:第二高的薪水(子查询与LIMIT详解及模拟面试问答)
|
4月前
|
算法 数据挖掘 大数据
深入解析力扣172题:阶乘后的零(计算因子5的方法详解及模拟面试问答)
深入解析力扣172题:阶乘后的零(计算因子5的方法详解及模拟面试问答)