金三银四测试工程师面试必问的十道题目,全答上来的直接免试

说白了,测试的工作就是帮助团队省钱,防止软件一上线就被用户诟病。
这很棘手,因为你必须了解技术和沟通。

首先,最重要的是测试可以发现别人看不到的问题。
去年,我们因为隐藏的 SQL 注入漏洞而运行了该项目。
如果没有检测到,上线后就会立即下架,光是修复费用就三万。
还有一点就是测试报告应该写得让人看得懂。
比如去年给产品经理的报告中,我把“响应时间超过5 000ms”替换为“用户点击提交按钮后系统崩溃5 秒”,产品立刻就明白了。
还有一个细节也很关键。
刚编写代码时就应该包括测试。
那时,变革的成本很低。
在我参与的项目中,早期发现的bug修复成本不到后期修复成本的1 %。

一开始我以为测试只是点点滴滴,但后来我意识到这是错误的,我必须用我的大脑来测试它。
例如,在测试登录功能时,不仅可以测试普通的用户名和密码,还可以测试“使用空格作为用户名”、“密码中插入特殊字符”等复杂情况。

就测试类型而言,功能测试是基础。
去年我们测试了一个ERP系统,功能测试发现了3 0个逻辑错误。
如果我们跳过这一步直接测试性能,系统就会爆炸。
性能测试取决于数据量。
我们同时进行了 3 000 个级别的压力测试。
去年我们测试支付系统时,发现数据库速度很慢。
添加索引后,响应时间从3 秒下降到1 秒。
接口测试实际上是相当复杂的。
很多人认为只是为了好看。
去年我们测试了一款金融APP,用户点击按钮没有任何反应。
事实上,坐标定位不正确。
这些细节应该仔细测试。

好的测试用例的关键是广泛地覆盖它们。
同等班级的划分是去年使用最多的。
例如,测试注册的手机号码时,有效的等价类为1 1 位数字,无效的等价类必须包含字母、特殊符号和空值。
边界值分析就更好了。
去年,在测量年龄输入框时,我们投影了0岁、1 00岁、-1 岁、1 01 岁这几个点。
当然,我们发现验证非常困难。

说实话,很多人在写测试用例的时候,只写正常的流程,比如登录功能,只写“正常用户名密码登录成功”。
事实上,在我们去年的测试中,我们发现有些用户是通过记住密码而不是输入这个脚本来登录的。
最终,用户抱怨该功能被破坏了。
建议在测试用例中添加“异常场景”一栏,强制自己思考一些情况。

大家面试测试工程师一般问什么问题?

测试工程师面试主要考察实际技能。

自我介绍需要一个具体的项目。
例如,我们花了三个月的时间完成了电子商务应用程序的功能测试,发现了 2 0 个严重错误。

黑盒测试是功能测试。
例如,在金融系统中,用例是使用等价类分解方法来设计的。

CI/CD 需要 Jenkins。
例如,一个项目每天使用Jenkins自动部署到测试环境。

Selenium 是网络自动化。
比如官网就写了一个Python脚本来自动测试登录模块。

用例应涵盖核心流程。
例如,对于食品配送系统,编写的用例涵盖了整个订单到付款流程。

性能测试依赖于TPS。
例如,某个事件页面必须在 5 分钟内加载,并且测试 TPS > 1 000。

如果遇到延迟,请检查您的前端资源。
例如,在H5 页面上使用Chrome DevTools时,我注意到JS脚本占用了超过5 0%的CPU。

我无法单击登录按钮。
首先检查该元素是否存在。
例如APP使用Appium来检查元素ID是否正确。

自动化测试需要脚本维护。
例如,在某些项目中,脚本代码量是手写用例的1 /3
抓包取决于请求参数。
例如,某些界面使用 Fiddler 来检测密码字段何时以明文形式发送。

Java需要异常处理。
例如,某些项目使用try-catch来捕获数据库连接异常。

Linux 上需要 grep。
例如,一些日志分析使用grep来过滤错误日志。

数据库依赖于索引。
例如,假设某个特定查询速度很慢。
添加索引将查询时间从 1 0 秒减少到 0.5 秒。

二分查找适用于有序数组。
例如,对于一个排序数组,采用二分查找的方式来查找目标值,时间复杂度为O(logN)。

人力资源部会询问加班情况。
例如,如果您询问周末是否可以加班,答案将取决于项目的紧急程度。

自己掂量一下。