一、测试用例相关问题
测试用例是软件测试中的重要部分。在面试中,常见的问题包括对测试用例设计方法的考查。例如,黑盒测试用例设计方法中的等价类划分法、边界值分析法、错误推测法、因果图法等,白盒测试中的语句覆盖、判定覆盖等方法。面试官可能会要求举例说明这些方法在实际工作中的应用,比如在输入多个条件的完整性查询中,如何利用等价类划分法和边界值分析法,先通过等价划分法确定一个或多个结果为OK的测试用例,再确定多个NG的测试用例,最后利用边界值分析法对结果分别为OK和NG的测试用例进行扩展和补充。
另外,关于什么是好的测试用例也是常考内容。好的测试用例不仅仅是简单地涵盖各种情况,还需要考虑实际的项目需求。例如,要结合项目的业务逻辑、用户场景等因素。不能单纯地说要有完整性、准确性等,而是要根据自己实际的工作情况来阐述,如在某个电商项目中,对于商品搜索功能的测试用例,除了基本的输入输出验证,还要考虑不同用户权限下的搜索结果、搜索结果的排序是否符合业务规则等。
二、Bug定位与管理问题
Bug定位是软件测试人员必须掌握的技能。面试时会问到如何定位bug,首先要分析是用户问题还是产品问题,接着判断是前端还是后端问题,遵循现象 - 原因 - 验证手段 - 结论 - 现象的通用思路。例如,如果遇到一个页面显示不正常的问题,先查看是特定用户操作下出现(可能是用户问题,如非法输入),还是普遍存在(可能是产品问题)。如果是产品问题,再通过检查网络请求(判断前端是否正确发送请求)、查看后端日志(确定后端是否正确处理请求)等方式来定位。
还可能会问到与bug定位相关的工具,如常用的fiddler。需要了解fiddler在定位bug中的作用,例如它可以用于抓取网络请求和响应,通过分析请求的参数、响应的状态码和数据等信息,帮助确定是网络传输问题、前端界面渲染问题还是后端数据处理问题。关于软件缺陷记录方面,一条完整的软件缺陷记录包含检测时间、系统环境、硬件环境、严重程度、程式版本、确认人、功能模板、问题描述、详细操作步骤、是否会重现等内容。在提交高质量的软件缺陷记录时,问题描述和详细操作步骤要尽可能详细,并且对于严重程度比较高的缺陷要在相同环境下测试一遍,在C\S模式下,如果条件满足可以使用替换法来确认是client端的问题还是server端的问题。
三、测试流程相关问题
测试流程也是面试中的重点考查内容。通常包括需求评审、测试计划、测试用例编写、用例评审、冒烟测试、测试执行、验收测试、风险评估、上线观察、问题跟进、测试报告、复盘会议等环节。
在需求评审阶段,测试人员需要仔细阅读需求文档,理解项目的功能和非功能需求,与开发人员、产品经理等共同探讨需求中的模糊点、不合理之处或者可能存在的风险。例如在一个移动应用开发项目中,需求评审时发现对于离线模式下某些功能的操作流程没有明确说明,这就需要在评审中提出并解决。
测试计划环节,要明确测试的范围、测试策略(如采用的测试类型、测试方法等)、测试资源(人力、时间等)的分配、测试进度安排等。测试用例编写要根据需求和测试策略进行,编写完成后可能会进行用例评审,让其他测试人员或者相关角色(如开发人员、产品经理)对测试用例的完整性、准确性、合理性等进行审查。冒烟测试是对软件基本功能的快速检查,确保软件的核心功能可以正常运行,然后才进入全面的测试执行阶段。在测试执行过程中,要记录发现的缺陷并进行跟踪管理。验收测试阶段则是确保软件满足用户的需求和期望,可能由用户或者专门的验收团队来进行。风险评估贯穿整个测试流程,要及时发现可能影响测试进度、测试质量的风险因素并采取应对措施。上线后要进行上线观察,确保软件在生产环境中正常运行,对于出现的问题及时跟进处理。最后通过测试报告总结测试工作的成果、发现的问题等,并且在复盘会议中回顾整个测试过程,总结经验教训,为后续项目提供参考。
四、计算机协议相关问题
对于计算机协议的了解在软件测试面试中也较为常见。例如需要掌握OSI七层模型,包括物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。其中传输层完成数据传送服务,上面三层面向用户。除了OSI七层模型,还需要了解常见的网络层次划分如TCP/IP四层协议以及TCP/IP五层协议。了解这些协议有助于在进行网络相关的软件测试时,更好地分析问题。例如在测试一个网络应用时,如果出现数据传输不稳定的情况,了解协议知识可以帮助判断是网络层的路由问题、传输层的协议配置问题还是应用层的逻辑错误等。
五、兼容性测试相关问题
兼容性测试策略是面试的一个考点。包括操作系统/平台兼容性测试,如软件在Windows、Linux、Mac等不同操作系统上的兼容性;应用软件之间的兼容性测试,比如一款办公软件与其他办公插件或者相关软件的兼容性;不同浏览器之间的兼容性测试,像在火狐、谷歌、IE等浏览器上的显示和功能是否正常;不同类型数据库兼容性测试,例如软件在MySQL、Oracle、SQL Server等数据库下的数据存储和读取是否正常;软硬件配合的兼容性测试,例如某软件在特定硬件配置(如不同CPU、内存大小)下的运行情况等。
在回答兼容性测试问题时,不仅要说出有哪些兼容性测试类型,还可以举例说明如何进行测试。比如在进行浏览器兼容性测试时,可以使用自动化测试工具(如Selenium)来编写脚本,在不同的浏览器上执行相同的测试用例,对比测试结果,查看是否存在界面显示异常、功能失效等问题。
六、性能测试相关问题
性能测试相关的问题在面试中也经常出现。首先是性能测试的目的,包括稳定运营(长时间、高负载测试下交易成功率、资源稳定性)、成本的优化配置(确定最优CPU数量、内存数量、服务器数量、专线带宽)、在用户眼中塑造良好形象(软件运行“快”)、节省成本(通过性能测试的分析结果精确判断需要多少个服务器、服务器上需要多少CPU和内存、租用带宽数量)、判断目前系统的性能瓶颈以及使系统应用能够适应未来的业务增长等。
面试官还可能会问到常见的性能测试类型,如压力测试、负载测试、强度测试等。并且如果有性能测试工作经验,可能会被要求阐述在工作中使用过的性能测试工具及其工作原理。例如LoadRunner,它能够录制测试人员的操作步骤,然后对这个操作步骤模拟出多个用户来播放出来。具体工作流程包括通过Visural User Genertor创建脚本,选择协议,录制操作,编辑操作;中央控制器(Controller)调度虚拟用户,创建场景,选择脚本,建立虚拟用户,设计shedual,设置ip spoofer;运行脚本,分析shedual;最后分析测试结果。
七、Linux命令相关问题
掌握一些常用的Linux命令也是软件测试面试中的要求。例如shutdown命令等。虽然可能不会要求掌握非常复杂的Linux命令组合,但一些基本的命令操作是需要熟悉的。比如在测试服务器端软件时,可能需要使用Linux命令来查看系统资源使用情况(如top命令)、查看文件内容(如cat、less命令)、文件和目录操作(如mkdir、rm命令)等。这些命令的掌握有助于在测试环境中进行问题排查、环境配置等工作。
八、测试类型相关概念问题
像黑盒测试、白盒测试这样的基本测试类型概念也是常考的。黑盒测试是通过测试来检测每个功能是否都能正常使用,在测试中把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,主要针对软件界面和软件功能进行测试。白盒测试则主要针对程序内部结构,对程序代码进行代码走查等操作,例如逻辑覆盖、循环覆盖、基本路径覆盖等测试方法都是白盒测试的范畴。
除了黑盒和白盒测试,还可能会问到其他测试类型,如灰盒测试,它介于黑盒和白盒测试之间,既关注程序的外部功能,也会在一定程度上考虑程序的内部逻辑。另外,像冒烟测试是对软件基本功能的初步测试,确保软件的主要功能可以正常运行后再进行全面测试;回归测试是对修复的缺陷进行重新测试,确保没有引入新的缺陷;验收测试是在软件交付前确保软件满足用户需求和期望的测试等概念也需要掌握。
九、移动端和Web端测试区别问题
移动端和Web端测试的区别也是一个常见的面试问题。单纯从功能测试的层面上来讲,APP测试、Web测试在流程和功能测试上是没有区别的。但由于两者载体不一样,存在诸多区别。
在系统结构方面,Web项目是B/S架构,基于浏览器的,只要更新了服务器端,客户端就会同步更新;而App项目是C/S结构的,必须要有客户端,如果App修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍。在性能监测方面,Web项目需监测响应时间、CPU、Memory;App项目除了监测响应时间、CPU、Memory外,还需监测流量、电量等。在测试的环境因素方面,Web测试主要考虑浏览器(火狐、谷歌、IE等)和操作系统(Windows7、Windows10、Linux等);而移动端测试需要考虑设备系统(如iOS(ipad、iphone)、Android(三星、华为、联想等)、Windows、OSX(Mac))以及手机设备(根据手机型号、分辨率不同)。另外,相对于Web项目,APP有专项测试,如干扰测试(中断、来电、短信、关机、重启等)、弱网络测试(模拟4g、wifi网络状态以及丢包情况)、网络切换测试、安装(需考虑安装时的中断、弱网、安装后删除安装文件等情况)、更新(分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新)、卸载(需考虑卸载后是否删除app相关的文件)、界面操作(需注意手势、横竖屏切换、多点触控、前后台切换)、安全测试(安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等)、边界测试(可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等)、权限测试(设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等)。在测试工具方面,自动化工具上APP一般使用Appium,Web一般使用Selenium;性能测试工具方面,APP一般使用JMeter,Web一般使用LR、JMeter。
声明:本文网友投稿,观点仅代表作者本人,不代表鲸选型赞同其观点或证实其描述。