一、基础概念类问题
软件测试的基础概念是面试中常常被问到的内容。例如,“什么是软件测试?”这一问题要求应聘者准确阐述软件测试的定义,即软件测试是通过执行预定的步骤和使用指定的数据,以确定软件系统在特定条件下是否满足预期的行为。还有像“测试驱动开发(TDD)是什么?”这样的问题,TDD是一种开发方法,它要求在编写代码之前先编写测试用例,通过测试用例来驱动开发过程,确保代码的正确性和可测试性。
关于测试的分类也是常见考点。软件测试可以分为黑盒测试、白盒测试和灰盒测试。黑盒测试侧重于功能方面,将软件看作一个黑盒子,不考虑内部结构,只关注输入和输出。例如功能测试、界面测试等都属于黑盒测试的范畴。黑盒测试常用的测试用例设计方法有等价类划分法、边界分析法、因果图法和错误猜测法等。等价类划分法是将输入域划分成若干个等价类,从每个等价类中选取一个代表性的测试用例;边界分析法关注输入和输出的边界值,因为边界值往往容易产生错误。白盒测试则侧重于程序结构,关注代码的内部逻辑和实现细节,例如逻辑覆盖法、循环测试路径选择、基本路径测试等都是白盒测试的用例设计方法。灰盒测试介于黑盒和白盒之间,既关注功能也关注部分内部结构。
二、测试用例设计相关问题
在软件测试面试中,测试用例设计是一个重点考察内容。面试官可能会问:“您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。”如前面提到的黑盒测试用例设计方法中的等价类划分法、边界分析法等,白盒测试中的逻辑覆盖法等。以一个登录功能的测试为例,如果使用等价类划分法,可以将用户名和密码的输入分为有效输入等价类和无效输入等价类。有效输入等价类就是符合规定格式的用户名和密码,无效输入等价类则包括不符合格式要求的、为空值的等情况。对于边界分析法,在设置密码时如果规定密码长度为6 - 12位,那么边界值6位和12位以及边界外的值如5位和13位就需要重点测试。
另外,“您认为做好测试用例设计工作的关键是什么?”这一问题也很常见。关键在于对可行的和不可行的情况都要考虑,包括详细的输入、操作步骤、预期输出以及实际输出等方面。
三、性能测试相关问题
性能测试方面的问题在面试中也占有一定比重。例如“您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?”性能测试工作的目的是检查系统是否满足在需求说明书中规定的性能,性能测试常常需要和强度测试结合起来,并常常要求同时进行软件和硬件的检测。性能测试主要的关注对象是响应时间、吞吐量、占用内存大小(辅助存储区)、处理精度等。
“在您从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。”像LoadRunner这样的工具,它能够录制测试人员的操作步骤,然后对这个操作步骤模拟出多个用户来播放出来。具体操作包括Visural User Genertor创建脚本,选择协议,录制操作,编辑操作;中央控制器(Controller)调度虚拟用户,创建场景,选择脚本,建立虚拟用户,设计shedual,设置ip spoofer;运行脚本,分析shedual,分析测试结果等步骤。
四、软件缺陷管理相关问题
对于软件缺陷管理的考察也不少。“在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?”一条完整的Bug记录包含检测时间、系统环境、硬件环境、严重程度、程式版本、确认人、功能模板、问题描述、详细操作步骤、是否会重现等内容。在提交Bug记录时,问题描述和详细操作步骤要尽可能详细,Bug应该尽量用书面语,对于严重程度比较高的缺陷要在相同环境下测试一遍。在C\S模式下,如果条件满足可以使用替换法来确认是client端的还是server端的问题。
五、项目经验相关问题
项目经验相关的问题是为了了解应聘者的实际工作能力。“请介绍下最近做过的项目”,在回答时需要包含项目是干什么的、包含几个平台、给谁用的、分别是用来做什么的、核心业务是什么以及自己负责哪些模块等内容。例如,如果是一个金融借贷项目,要说明包括前台(Web/APP)和后台管理系统(Web)等平台,前台有首页、品质理财等功能模块,后台有借款中心、资金管理等功能模块,核心业务是贷款流程和投资流程,自己负责借款和P2P投资等模块的功能测试和接口测试等内容。
“请介绍下你印象深刻的bug”,这个问题要求结合自己的项目来回答,比如在项目中点击某个按钮页面没有反应,提给后端被打回,最后通过抓包工具发现是前端的bug,并且要从这个经历中总结出以后对待bug的处理方式等。
六、工具使用相关问题
软件测试中会用到各种工具,面试官可能会针对应聘者简历中提到的工具进行提问。例如,如果提到使用过Fiddler工具,就会问“Fiddler工具怎么使用的?”Fiddler在项目的登录注册模块可以用于拦截有效邮箱提交,修改为无效邮箱提交看是否能注册成功来验证后台接口是否进行验证;还可以对支付订单信息进行抓包修改数据来测试系统的安全性等。在没有文档的项目中,还可以通过Fiddler打开,访问项目网址,抓项目的网络请求,查看具体访问的接口、传的数据和返回数据,然后整理成文档方便后期使用。不过需要注意的是,Mac抓包不用Fiddler,得用Charles。Fiddler还可以用于分析缺陷是前端的问题还是后端的问题等多种用途。
对于Linux命令的掌握情况也是可能的考点,如“说一下你常用的Linux命令?”因为在软件测试工作中,Linux命令有很多应用场景,比如开发人员提测后,要用Linux去搭建测试环境、部署代码到指定路径下需要解压、编译和安装命令,服务器挂了要重启服务用到service命令,查看日志信息用到tail - f命令等。常用的Linux命令有查看进程的ps - aux、查看端口的netstate - tnulp | grep端口号、杀死进程的kill、远程拷贝的scp、查找指定文件的find、创建目录的mkdir、创建新文件的touch等。
七、个人情况与职业规划相关问题
这类问题有助于面试官对应聘者有更全面的了解。“请自我介绍下”,回答时可以包含个人技能优势、工作背景、经验亮点等内容。可以先说基本信息,再介绍自己的工作经验,如做过哪些项目的测试工作,是否有独立负责项目测试的经验,也可以结合最近做的项目进行介绍等。
“你对测试最大的兴趣在哪里?为什么?”可能的回答是测试具有挑战性,不知道哪里会出现bug,找到bug会有成就感,并且测试需要耐心和细心,可以很容易找到一些细节问题。
“你的测试职业发展是什么?”这一问题要求应聘者对自己的职业发展有一定的规划,例如从功能测试逐步向自动化测试、测试开发等方向发展等内容。
声明:本文网友投稿,观点仅代表作者本人,不代表鲸选型赞同其观点或证实其描述。