测试基础 测试工程师 vs 面试官日常对话

测试猿温大大 · 2022年04月01日 · 最后由 okk 回复于 2023年02月06日 · 3033 次阅读

大家好,我是温大大

温大大有个梦想:

1、将毕生所学的「测试技能」倾囊相授传给各位同学,让同学们升职加薪。

2、组建一个测试圈,在这里我们可以:讨论「测试」技术问题、揭秘「测试」薪酬、分享「面试」套路。

下面是一些精彩瞬间:

目录:

  1. 什么时候「跳槽」合适?
  2. 怎样快速学习一门「自动化」技术?
  3. 「性能测试」通过标准是怎样的?
  4. 「大数据测试」是怎么进行的?
  5. 「自动化」如何更好的落地?
  6. 如何让面试官相信你有过「自动化实践」?
  7. python 学习到哪种程度能「胜任自动化测试」?
  8. 如何对「数据库」进行测试?
  9. 性能测试中「并发数」的考虑?
  10. 自动化用例到了 1 万条时,如何保证执行的「效率」?
  11. 面试时应该自己多打印一份简历吗?
  12. SDK 测试扫盲 & 测试方法?
  13. 自动化 selenium 工具如何入门?
  14. 如何跟 HR 要「更合适」的薪资?
  15. 如何站在客户角度保证软件「质量」?
  16. 面试官问:如何提高递归的「效率」?

1. 什么时候「跳槽」合适?

建议评估下跳槽成本,具体从你工作年限、现公司给你的成长以及你目标跳槽公司考虑
- 1、先说工作年限,如果你是刚入职场不久的同学,感觉现在公司没给你什么成长钱也不多,你可以选择跳,如果是工作了4-5年的,你来这家公司半年就选择跳,除非是有非常充分的理由,不然下家公司也会问你这个问题,说不清建议别跳。
- 2、再说现在公司带给你的成长,如果感觉这家公司每天给你的事情并不能带给你成长,只是重复的一些劳动点点点,你也可以选择走。
- 3、最后说说目标公司,当你没有圈定自己心中的目标公司或者职位前,建议现在本家公司稳定一段时间,日常工作照做,剩余的时间给自己充充电,规划一下你的职业发展,例:性能测试工程师,你可以学习下性能工程师学习的技能(直接关注市场上招聘要求),然后看看先单位能否给你提供这样的机会练手,学到了技能练了手再走,或者利用闲暇时间网上找项目练练手,准备充分再走。

2. 怎样快速学习一门「自动化」技术?

自动化这块最好是从实战出发,不同公司要求不同的技术栈,建议你先学透你之前掌握的java+spring+mybatis这套,找一个完整的视频教程,别分散找资料,而且带着目的去学:
- 1、前后端的数据如何传参数
- 2、用例与数据分离管理
- 3、如何封装基础的类,让用例复用性高。
- 4、如何统计自动化覆盖率。
- 5、自动化框架底层是运行如何的,尝试一步步debug一下,看一下框架启动的时候运行加载了哪些函数。
- 最后,如果你了解透彻了上面的内容,换一个框架或语言,不过是换了汤没换药,你上手也比较快,最重要的一点是,你目前学习的东西不可能100%适用下一家公司的技术栈,还有就是大公司一般都会有人搭建自动化这一套,你只需要了解上面的那5个问题,会用框架,面试能过,后面的事情再慢慢深入。

3.「性能测试」通过标准是怎样的?

好问题,如何性能判断用例通过,这个没有标准答案,以为业务不同,只能说尽量在方案设计阶段跟研发、产品、负责人达成一致。举个例子:
- 1、举个例子,你方案里面写目标:认证qps到200。
- 2、实际测试情况到了200,但cpu占用90%,你觉得是否通过呢?
- 3、实际测试情况到了200,响应时间2秒,你是否通过呢?

- 结论:没有标准的答案,想银行系统响应超过0.05秒都不算通过,所以只能说前期拉相关人员订好通过规则(其实:就是免责声明,我们qa在什么硬件配置下模支持多少用户量的访问,资源消耗是多少,如果脱离了上面的配置就说明最先开始的时候定义的标准有问题)

- 2.数据库负载可以通过工具压测,也可以通过业务入口驱动,关键看你想要测试什么场景,如果只是单纯压数据库io读写,我觉得是耍流氓,没有业务场景和数据规模,这样的接口参考性不高。

4.「大数据测试」的质量是如何保证的?

这个话题挺广的,不过也是有一些方法论,数据的质量可以从围绕着数据的处理环节展开,一般业界数据通用处理环节: 采集、清洗、缓存、入库、建模、应用这几个流程展开,所以我们只需要针对每个环节做对应的业务活动即可。
- 1、采集与清洗(前期数据采集规则定义与评审,qa业务活动:etl测试具体可以参照之前我写过的一篇《大数据测试vs传统测试》与需求评审,评审主要从数据通用理解与业务含义来)

- 2、缓存(主要看中间件用的是什么,nginx?kafka?确保数据一些异常情况兼容,数据重复、丢失、断点续传)

- 3、入库(也看公司用的什么大数据组建,kudu?hdfs?偏大数据组建的验证,确保数据备份、数据一致性、查询优化、主备切换,可参考阿里的混沌工程)

- 4、建模(主要验证算法适合合理,能精准、有效命中用户群,方法有:单元测试保证单模块输入输出没问题、abtest验证算法参数最优,需求评审影响算法的因子权重)

- 5、应用(上层应用,主要是功能方面的一些验证)

- 具体还是case by case,每个公司的业务与数据流不一样,所以质量保证范畴与方法也不一样,大体思想:从数据的一致性、有效性、准确性、完整性方向来确保数据每个处理环节没问题。

5.「自动化」如何更好的落地?

业界的一些通用的自动化框架:pytest / unitest / selenium/ cucumber 提供了一些通用api 和 报告模版,只要学习下demo其实就能把框架给搭建+用起来,
确实需要产出一些有价值的东西,
还需要思考适合团队的自动化方式是什么,

举个例子:
- 1、我之前参与过的团队,测试环节有ABC
- 2、但是自动化pytest只能连接 AB,BC环节需要在linux下使用脚本进行拼接,所以我们最后的框架就是:pytest+shell脚本
- 3、面试的时候需要让面试官眼前一亮:这小伙不仅工具基础扎实 + 还有输出内容 + 因地制宜去选择框架工具本身,我不要你就是傻呀。

6. 如何让面试官相信你有过「自动化实践」?

你指的是:如何将自动化框架从0到1的搭建 + 运行,体现在简历里面么?
分角色去写:
- 1、自动化框架选型,为什么会选这样的自动化框架,面试必问,学习成本 / 执行效率 / 集成功能 / 报告模版 去写。
- 2、自动化底层模块封装了哪些函数,属于自动化的地基,例:典型的web自动化测试,底层封装必有:http request api (用于web请求) ,mysql api (数据库比对), shell api(用于后端校验)。
- 3、自动化带来的价值,参考star 法则,什么情况下引入什么工具发现多少问题,给团队带来多少价值。
- 4、自动化框架底层原理,属于面试八股文,运行该框架前会加载哪些函数,每个函数的作用是什么?
- 5、自动化的数据与用例分离是如何实现的,属于面试八股文?
- 6、自动化前端与后端的参数是如何传递的,属于面试八股文?

总结:如果你是主要搭建成员从123456去写+回答,如果你是框架使用者从3456去写去回答。

7. python 学习到哪种程度能「胜任自动化测试」?

自动化测试需要掌握的技能有很多,语言 + 正则表达 + 框架 + 协议 + 数据库 + linux ,其中不同自动化测试所需语言不同, 所以同学你是问:假如用python写自动化测试的话,python需要掌握到什么程度吗?
- 1、python 基础语法掌握、数据类型、循环、标准模块等;
- 2、python 常用的一些api ,文件读写、数据库连接、http协议请求等;
- 3、说白了,你能用python 开发一个简单的需求,例:获取web页面用户名,解析出用户名,匹配密码是否与数据库一致。
- 4、重要的是编程问题,80%的python问题在python官方手册中可以解决。

8. 如何对「数据库」进行测试?

数据库方面的测试主要是从:功能、性能、兼容性角度出发
- 1、功能按照需求来,从正向、逆向、边界值等,测试常用功能设计角度出发。
- 2、性能主要看数据库的IO读写性能,可以性能评估、性能工具选型、性能调优角度去做事情。
- 3、兼容性 主要看数据库部署环境的兼容,单机、集群、资源(CPU/内存),就是要选取典型的客户使用场景作为适配标准去考虑。

9. 性能测试中「并发数」的考虑?

以loadrunner 工具为例,有个计算公式:目标qps * 响应时间 = vuser (这里的虚拟用户数,就是并发送),响应时间越快,并发送越少。

举个例子:
- web页面登录目标qps要求2000(每秒要求响应2000次),
- 假设1个用户(也就是1个vuser)登录页面用时1秒,那么 2000 * 1秒=2000,那么并发用户数就是2000,

- 假设1个用户(也就是1个vuser)登录页面用时0.5秒,那么 2000 * 0.5 秒=1000,那么并发用户数就是1000

- 假设1个用户(也就是1个vuser)越来越快了,登录页面用时0.01秒,那么 2000 * 0.01 秒=20,那么并发用户数就是20

结论:你的看1次接口请求或1次事务它的响应时间是多少,然后用上面的公式估算下,这是方法论@Nuyoah 说的也没问题,一般实际操作时,我们也这么干,先看1个并发产生多少qps,然后慢慢累加。

10. 自动化用例到了 1 万条时,如何保证执行的效率?

不同的测试框架,提供了并发的函数
- 1、pytest pytest-xdist 插件
- 2、testNG DataProvider parallel 注解 

设定了并发度后,第二个需要思考数据如何进行隔离,将数据拆分为几部分,相互独立,这样确保并发是用例与用例之间数据不会干扰

11. 面试时应该自己多打印一份简历吗?

为什么要自己打印简历,
- 还有一个原因,你的电子版简历,发给HR之后,有可能觉得写得不是很好
- 你还想在面试前做个修改,那么,你就可以打印一份最新的简历给面试官看(如果是面试官自己打印,那他打印的还是以前的简历,时效性就没有那么新),这样也能避免一些坑。

12. SDK 测试扫盲 & 测试方法?

温大大本身没有SDK测试,不过我刚刚也检索了些资料,看了下关于SDK测试:

例:
- 1、SDK 称为:软件开发工具集合,像:windos SDK / IOS SDK / android SDK / 小程序 JS SDK
- 2、举个例子:在 android 系统上面要开发一个app,这个app可以让手机长时间打开闪光灯,那么 可以调用 android SDK 某个api功能,让它告诉手机需要打开闪光灯
- 3、再说说SDK 测试,需要从:开发包、Demo示例、文档 来测试。更多的是基于接口的测试。

常用测试手段:
1、Demo接入正常;2、单元测试 ;3、静态代码扫描

13. 自动化 selenium 工具如何入门?

大家好,我是温大大。

- 今天带大家“卷”ui自动化测试框架Python+selenium。

- 教你如何使用 selenium4.1.2 + python3.9 打开1个chrome 浏览器并请求1个url地址。


- 痛点:很多时候我们说入门一个工具难,其实不是难在工具本身,而是资源太分散了,没有正确的安装包,也不会正确的配置环境导致你无法入门使用这门工具,现在关注测试猿温大大,带你起飞。

14. 如何跟 HR 要「更合适」的薪资?

同学,你今天offer了吗?

- 最近同学们投简历可谓是“过五关斩六将”,非常的极烈与频繁。
- 很多读者虽然前面1-2面表现不错,但进入了HR终面的时候发现始终“跳”不出HR给挖的“坑”,要被是莫名其妙被pass,要么是薪资被「无情」的给压价了
- 今天我们就聊聊跟HR谈判时应该注意哪些问题。

15. 如何站在客户角度保证软件质量?

个人薄见,阿里之前出了一个业务+技术+场景分析模型,如上:
- 1、业务分析:拆解业务(基于需求功能 / 业务价值/ 易用性 / 体验)+结合设计方法(边界值/因果图/分类/组合/等价划分/错误推测)= 场景分析
- 2、技术分析:有了上面的业务分析后 + 结合当前技术框架 = 选择测试技术方案(API测试、单元测试、系统测试、安全测试、性能测试、自动化测试)
- 3、基于1+2 设计 = 场景流(包含正向 / 逆向场景)
- 4、基于3 设计 场景的串联的场景
- 5、从:功能、安全、性能、易用性角度设计详细的场景用例
- 6、最后,执行时根据本次测试目标,分析本次测试重点、难点、优先级

最后,结合我本身的经验,我认为除了以上的之外,站在客户的角度还应该考虑一些因素
- 1、交付层面,客户部署环境:单机、集群、混合部署、网络带宽、部署机器数量、是否有负载机器? 
- 2、使用层面,如果是to c客户,多手机端兼容性考虑(安卓、ios、系统版本),如果是to b客户 多浏览器、多操作系统考虑。
- 3、性能层面,前期的性能调研至关重要,当前系统负载峰值是多少,未来的系统负载峰值?
- 4、升级层面,目前客户使用版本有哪些,我们最新版本是否都兼容以前旧版本的更新?
- 5、安全层面,客户是否存在安全方面的隐形需求,我们的系统在这个层面是否有对应的机制保证?

16. 面试官问:如何提高递归的效率?

- 1、同学你指的循环还是递归,这是2个事情,递归有栈的操作,循环不一定有这个动作。
- 2、面试官可能想考察你编程「效率」方面的问题,一般算法中很多解法可以通过递归解决,但确实效率不是最优,我刚也在网上看到了一些解答,可以把普通递归写成尾部递归,这样可以提高一些算法效率,具体我这边没有深入研究过,感兴趣可以百度下。

日常还有很多关于「测试」技术、薪资、面试套路方面的交流,如果你也有一个「加薪」梦,欢迎加入我们,大家一起升职加薪。

关注公众号:测试猿温大大

共收到 1 条回复 时间 点赞

该如何统计自动化覆盖率呢?每次被问到这个问题的时候都不知道要怎么回答

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册