软件测试工程师面试问题类型丰富多样,涵盖多个方面。
一、个人基本情况相关问题
这部分主要是让面试官初步了解求职者的基本背景。
- 自我介绍:看似简单却非常关键。求职者需要简洁而全面地阐述自己的姓名、教育背景、工作经验(如有)、技能特长以及对软件测试岗位的热情等内容。例如,介绍自己毕业于哪所院校的什么专业,在过往工作中参与过哪些项目等。一个好的自我介绍能给面试官留下良好的第一印象,起到先入为主的效果。
- 职业规划:面试官希望了解求职者的长远打算。例如,求职者是否有计划在软件测试领域深入发展,是想往管理方向还是技术专家方向发展,以及在未来几年内的职业目标等。
二、项目经验相关问题
项目经验直接反映求职者的实际工作能力。
- 项目整体介绍:要求求职者从整体到局部详细介绍参与过的项目。整体方面,要提及项目的规模(如代码量、需求规模、用例规模等)、工作量、进度、质量和成本等量化数据;然后阐述整体的测试流程,包括从需求评审到测试总结的各个环节;接着说明自己在项目中的角色与职责,例如是负责功能测试还是性能测试等;还要分享项目中的特色部分,如做得最好的方面、遇到的最大困难以及心得体会等。
- 项目中的具体问题解决:面试官可能会针对求职者在项目中遇到的具体问题进行提问,如在项目中发现了一个难以重现的bug是如何解决的,如何协调项目团队成员(开发人员、产品经理等)来解决项目中的问题等。
三、技术知识相关问题
技术知识是软件测试工程师的核心竞争力。
- 数据库知识:基本要求包括数据库记录的增删改查(如insert、delete、update、select语句),表结构的增删改查(如create、drop、alter、describe语句),以及存储过程、触发器等的掌握情况。例如,可能会问到如何查询一个复杂的多表关联数据,如何创建一个带有条件判断的存储过程等。
- Linux操作系统知识:需要熟悉常见的Linux命令,如find命令(及其参数 -name、-type、-perm、-user、-group、-ctime、-atime等),还要熟悉vi编辑器的使用,以及能够搭建Linux测试环境,如LAMP环境搭建等。
- 测试工具相关知识:包括性能测试工具(如JMeter、LoadRunner)、自动化测试工具(如Selenium、Appium)、测试管理类工具(如Jira)等。面试官会考察求职者对这些工具的使用熟练程度,例如如何使用JMeter进行接口测试,如何用Selenium定位网页元素等。
四、测试流程与方法相关问题
- 软件测试流程:要求求职者熟悉从需求评审开始,到测试需求分析、测试计划制定、测试用例编写、预测试、正式测试(可能有多轮)、回归测试、测试报告编写、测试总结等一整套规范和标准的流程。例如,在需求评审中如何发现潜在的测试风险,如何根据需求编写全面的测试用例等。
- 测试用例设计方法:求职者需要掌握多种测试用例设计方法,如黑盒测试中的等价类划分、边界值分析、因果图法、错误猜测法等,白盒测试中的逻辑覆盖法等。并且要能够举例说明如何在实际项目中运用这些方法来设计有效的测试用例。
五、缺陷管理相关问题
- 缺陷跟踪流程:求职者要清楚缺陷跟踪的基本流程,包括缺陷的提交、分配、修复、验证、关闭等环节。例如,如何确保缺陷被及时分配给合适的开发人员,如何跟踪缺陷的修复进度等。
- 缺陷单的属性及描述:要能够列出缺陷单的常见属性(至少20个),如缺陷编号、缺陷发现时间、缺陷发现者、缺陷所属模块、缺陷严重程度、缺陷优先级等,并理解每个属性的意义。同时,要掌握如何按照5C原则(如Complete,完整地描述缺陷重现步骤等)来描述好缺陷单,以及如何描述一个经典的bug单。
六、网络知识相关问题
基本的网络基础知识也是考察内容,如TCP/IP协议。例如,可能会问到TCP和UDP的区别,IP地址的分类等。了解网络知识有助于在进行网络相关软件的测试时,更好地分析和解决问题。
七、软件测试素质能力相关问题
- 沟通协作能力:在软件测试工作中,需要与开发人员、产品经理、其他测试人员等多方面进行沟通协作。面试官可能会通过提问来了解求职者在这方面的能力,如在与开发人员对缺陷存在争议时如何沟通解决等。
- 问题解决能力:当遇到复杂的测试问题,如测试环境出现故障、测试结果不符合预期等情况时,求职者需要展示出分析问题、解决问题的能力。例如,讲述一次在测试过程中遇到的突发问题是如何解决的。
声明:本文网友投稿,观点仅代表作者本人,不代表鲸选型赞同其观点或证实其描述。