一、软件测试面试常见的技术问题

(一)测试用例相关 测试用例的设计是软件测试的基础。常见的问题是让应聘者对一些常见物品,如“书本”“水杯”“电梯”等设计测试用例。例如对于“电梯”,要考虑功能方面,像电梯能否正常升降、到达指定楼层、电梯门能否正常开关等;性能方面,如电梯的运行速度是否在合理范围内、承载重量是否符合规定;安全方面,电梯的紧急制动装置是否有效、电梯内的报警系统是否正常工作等。还会问到如何评判测试用例的好坏,好的测试用例除了具备完整性、准确性外,更要结合实际项目情况,从能否全面覆盖需求、是否具有可执行性等多方面考量。例如在一个电商项目中,测试购物车功能的用例,不仅要考虑商品的添加、删除、数量修改等基本操作,还要考虑不同商品类型、促销活动对购物车功能的影响等,这样的测试用例才是符合项目实际的好用例 。
(二)Bug定位相关 这部分主要包括如何定位bug。首先要分析是用户问题还是产品问题,再判断是前端还是后端问题。其通用思路为现象 - 原因 - 验证手段 - 结论 - 现象。例如一个网页登录功能出现问题,现象是输入正确账号密码无法登录,原因可能是前端页面的输入框验证逻辑错误,也可能是后端数据库验证环节出错。验证手段可以是检查前端代码的验证逻辑,或者在后端数据库查询该账号的相关信息等。还会问到使用哪些bug定位工具,常见的如fiddler,它可以捕获HTTP(S)协议的网络流量,从而帮助定位前后端交互过程中的问题,比如查看请求和响应的信息是否正确,判断是网络传输问题还是服务器内部逻辑问题等 。
(三)项目中的角色与测试流程相关 面试官通常会询问应聘者在项目里负责的工作内容以及测试流程。比如应聘者可能回答主要负责功能测试,同时兼顾一部分自动化测试。测试流程一般先进行需求分析,明确测试目标;接着根据需求编写测试用例,如果时间允许会进行用例评审,否则直接开展测试;测试完成后产出测试报告并提交给主管。关于测试报告的内容,可能包括测试目标、测试范围、测试环境、测试结果(如通过和未通过的用例数量、发现的bug数量和严重程度等)、测试结论以及对项目的风险评估等 。
二、软件测试面试中重点考察的题目
(一)计算机协议相关 了解计算机协议是软件测试工程师的必备知识。常见的如OSI七层模型,包括物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer),其中第四层传输层完成数据传送服务,上面三层面向用户。除了OSI七层模型外,还有TCP/IP四层协议以及TCP/IP五层协议等。对于这些协议的掌握有助于在测试网络相关功能时准确判断问题所在。例如在测试一个网络应用程序时,如果出现数据传输错误,了解协议的工程师就可以从不同协议层去分析问题,判断是网络层的路由问题,还是传输层的端口绑定问题等 。
(二)兼容性测试相关 兼容性测试也是面试重点之一。主要包括操作系统/平台兼容性测试,如软件在Windows、Linux、Mac等不同操作系统下的运行情况;应用软件之间的兼容性测试,例如软件与其他相关软件同时运行时是否会产生冲突;不同浏览器之间的兼容性测试,像在Chrome、Firefox、IE等浏览器中功能和显示是否正常;不同类型数据库兼容性测试;以及软硬件配合的兼容性测试等。在制定兼容性测试策略时,要综合考虑项目需求和目标用户的使用环境等因素,确保软件在各种兼容环境下都能正常工作 。
(三)测试方案设计相关 测试方案设计体现了测试工程师的综合能力。一个完整的测试方案涵盖需求说明(包括需求汇总和需求变更)、总体计划安排和负责人(如测试计划进度表)、测试方案(测试重点、联测方案、测试策略方法、测试工具平台)、环境搭建部署及数据准备(环境拓扑、应用部署、数据准备)、测试执行计划(测试计划、正向用例、反向用例、用例评审)、测试工单(冒烟工单、单侧工单、联测工单、预发布验证工单、灰度验证工单、线上验证工单)、测试限制及无法测试功能列表、测试情况日汇总&风险点,待确认列表等内容。例如在设计一个大型电商系统的测试方案时,要详细分析各功能模块的需求,合理安排测试进度,选择合适的测试工具,搭建与实际生产环境相似的测试环境等,确保测试方案的全面性和有效性 。
三、软件测试面试题的类型
(一)概念性问题 这类问题主要考察对软件测试基本概念的理解。比如什么是黑盒测试、白盒测试等。黑盒测试是将程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,着眼于程序外部结构,主要针对软件界面和软件功能进行测试。而白盒测试则是测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有的逻辑路径进行测试。再如软件测试的目的,是为了发现程序中的错误而执行程序的过程,虽然不能找出全部错误,但要尽可能多的找出软件中的缺陷,提高软件质量等概念性知识是面试中经常会被问到的 。
(二)工具使用问题 在软件测试工作中,会用到各种各样的工具,所以工具使用问题也是面试题类型之一。例如性能测试工具LoadRunner的使用,要了解其工作原理,像能够录制测试人员的操作步骤,然后对这个操作步骤模拟出多个用户来播放出来。具体操作包括在Visural User Genertor中创建脚本、选择协议、录制操作、编辑操作;通过中央控制器(Controller)调度虚拟用户、创建场景、选择脚本、建立虚拟用户、设计shedual、设置ip spoofer;运行脚本并分析shedual和测试结果等。还有自动化测试工具如Appium(用于移动端自动化测试)、Selenium(用于Web端自动化测试)等,要掌握其基本的使用方法、适用场景等内容 。
(三)流程性问题 流程性问题主要涉及软件测试在整个软件开发周期中的流程以及测试内部的工作流程。从软件开发周期来看,软件测试大体分为单元测试、集成测试、确认测试、系统测试、验收测试等阶段,在测试过程中如果有需要还要进行回归测试。单元测试的测试对象是模块内部的程序错误,目的是消除局部模块逻辑和功能上的错误和缺陷,测试依据是模块的详细设计,采用白盒测试方法;集成测试的测试对象是模块间的组装和调用关系,目的是找出与软件设计相关的程序结构模块调用关系、模块间接口方面问题,测试依据是概要设计,采用灰盒测试方法;系统测试的测试对象是整个系统,目的是对整个系统进行测试,测试依据是需求规格说明书,采用黑盒测试方法等。测试内部的工作流程如从需求分析开始,到测试用例编写、评审,再到测试执行和报告生成等环节也是常见的考点 。
四、热门的软件测试面试题
(一)性能测试相关 性能测试是热门考点之一。首先会问到为什么要进行性能测试,其目的包括确保系统稳定运营,如长时间、高负载测试下交易成功率、资源稳定性;实现成本的优化配置,确定最优CPU数量、内存数量、服务器数量、专线带宽等;在用户眼中塑造良好形象,让用户体验到“快”的感觉;节省成本,根据性能测试结果精确判断服务器数量、CPU和内存需求、租用带宽数量等;判断目前系统的性能瓶颈以及确保系统应用能够适应未来的业务增长等。常见的性能测试类型有性能测试、负载测试、压力测试、容量测试等,例如负载测试与压力测试可以结合进行,负载测试是在不同负载条件下测试系统的性能表现,压力测试则是测试系统在极限负载情况下的性能和稳定性等内容也经常被问到 。
(二)移动端和Web端测试区别相关 随着移动互联网的发展,移动端和Web端测试区别成为热门面试题。单纯从功能测试层面,两者在流程和功能测试上有相似之处,但由于载体不同存在诸多区别。在系统结构方面,Web项目是B/S架构,基于浏览器,只要更新服务器端,客户端就会同步更新;而App项目是C/S结构,必须要有客户端,App修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍。在性能监测方面,Web项目需监测响应时间、CPU、Memory;App项目除了监测响应时间、CPU、Memory外,还需监测流量、电量等。在测试工具方面,自动化工具中,APP一般使用Appium,Web一般使用Selenium;性能测试工具中,APP一般使用JMeter,Web一般使用LR、JMeter。此外,在测试内容上,移动端还有一些专项测试,如干扰测试(中断、来电、短信、关机、重启等情况的测试)、弱网络测试(模拟4g、wifi网络状态以及丢包情况和网络切换测试)、安装、更新、卸载测试(安装时的中断、弱网、安装后删除安装文件等情况,卸载时是否删除app相关文件,更新时的强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新等情况)、界面操作(手机端测试要注意手势、横竖屏切换、多点触控、前后台切换等)、安全测试(安装包是否可反编译代码、安装包是否签名、权限设置如访问通讯录等)、边界测试(可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖如QQ、微信登录等)、权限测试(设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等)等 。
(三)软件缺陷(Bug)记录相关 在实际的软件测试工作中,软件缺陷(Bug)记录非常重要,所以这方面的问题也很热门。在以往的工作中,一条软件缺陷记录包含检测时间、系统环境、硬件环境、严重程度、程式版本、确认人、功能模板、问题描述、详细操作步骤、是否会重现等内容。在提交高质量的软件缺陷记录时,问题描述和详细操作步骤要尽可能详细,Bug应该尽量用书面语,对于严重程度比较高的缺陷要在相同环境下测试一遍。在C\S模式下,如果条件满足可以使用替换法来确认是client端的问题还是server端的问题等内容是面试中经常会被问到的知识点 。
声明:本文网友投稿,观点仅代表作者本人,不代表鲸选型赞同其观点或证实其描述。