本系列文章总结归纳了一些软件测试工程师常见的面试题,主要来源于个人面试遇到的、网络搜集(完善)、工作日常讨论等,分为以下十个部分,供大家参考。如有错误的地方,欢迎指正。有更多的面试题或面试中遇到的坑,也欢迎补充分享。希望大家都能找到满意的工作,共勉之!
一、测试常见问题和流程篇
1. 介绍一下测试流程(重点,常见!)
需求评审、测试计划、测试用例、用例评审、冒烟测试、测试执行、验收测试、风险评估、上线\观察、问题跟进、测试报告、复盘会议。
根据自己的日常经验来回答,每个点的工作内容都需要清晰掌握,有可能就某个点如何工作进行提问。
2. 介绍一下测试方法
按阶段:单元测试、集成测试、系统测试、验收测试。
按手段:黑盒测试、白盒测试、灰盒测试。
其他:冒烟测试、回归测试。
3. 介绍一下测试用例设计方法(用例设计方法&测试方法需分清楚)
黑盒测试用例设计:等价类划分法、边界值分析法、错误推测法、因果图法、正交试验分析法、流程分析法。
白盒测试:语句覆盖、判定覆盖、条件覆盖、条件组合覆盖、判定/条件覆盖、路径覆盖。
4. 设计一个登录页面的用例(提供某个场景设计用例,重点!)
功能测试:正确输入、为空输入、字符类型校验、长度校验、密码是否加密显示、大写提示、跳转页面是否成功、登出后用另一个账号登录。
UI:界面布局合理、风格统一、界面文字简洁好理解、没有错别字。
性能测试:打开登录页面需要几秒、点击登录跳转首页需要几秒、多次点击、多人点击。
安全性:用户名和密码是否加密发送给服务器、错误登录的次数限制(防止暴力破解)、一台机器登录多个用户、一个用户多方登录、检查元素能否看到密码。
兼容性测试:不同浏览器、不同的平台(Windows、Mac)、移动设备能否工作。
易用性:输入框可否tab键切换、回车能否登录等。
5. 举例说明项目推进的能力(针对个人评价的举例说明)
(例)推动开发解决菜单权限需退出登录才可应用的问题。
描述:XX项目上线后,由于权限更新导致用户无法使用旧界面+用户不懂得自己退出登录以应用新菜单权限,线上多个用户反馈平台相关功能无法使用。处理:远程操作+线上指导出现问题的用户退出登录,凌晨脚本批量强制用户退出登录。推进:在下一次版本中,推动开发处理菜单权限更新问题,以防每次更新菜单都出现用户使用不了功能的问题。结果:处理为用户登录期间仍可使用旧界面,直到用户退出重新登录后,才应用新菜单权限。
推动冒烟测试:冒烟不通过,测试召开会议罗列项目不通的模块、存在的问题,一一对应到每个人去跟进,得到解决的时间,后续项目群说明并艾特每个人跟进。测试准时验收。
推动文档质量:在日常工作中遇到需求文档、设计文档、接口文档不规范或不详细的在绝大多数,这个时候就要通过沟通或以bug的形式,促使各个岗位将各自的文档完善。
结合自己的个人经验,从问题描述+处理过程+推进表现+结果,一一说明。
6. 测试中遇到的比较难的一个项目是?(掌握自己简历上的项目)
XX项目:这个项目是一个新项目、需要对接第三方、从协助测试产品模块到转手负责整个项目加强了一定的需求理解难度、订单逻辑不熟悉、其中需求的问题推进比较困难。
针对这些困难,测试方面:先快速了解需求,并与原先的测试负责人了解具体的进度和需要注意的测试点。开发方面:迅速与开发人员了解订单逻辑,以及与第三方对接的过程。产品方面:遇到某个需求问题产品不接受、最后汇报领导+开会讨论了较好的处理方案。虽然过程问题比较多,但是通过项目组的集体努力,最后项目得以按时上线。
说明项目(最好是简历上的项目方便面试官进一步提问)。描述有难度的地方+如何处理+结果。
7. 印象深刻的一个bug?
隐藏得比较深的bug、影响比较大的bug、处理过程比较曲折的bug。根据自己的经验描述:如何发现的、如何处理、影响、结果、反思。
举例说明:如升级版本兼容性问题、接口安全性问题、数据库安全性问题、服务器资源占用溢出问题、代码逻辑问题等。
8. 你们公司是不是敏捷开发?介绍一下敏捷开发?
是,敏捷快速迭代、多版本同时迭代。
敏捷开发属于增量式开发,对于需求范围不明确、需求变更较多的项目而言可以很大程度上响应和拥抱变化、主张简单、拥抱变化、可持续性、递增的变化、高质量的工作、快速反馈、软件是你的主要目标。
9. 复盘会议的主要内容有哪些?
这点需要结合自己平时参与的项目会议举例说明。如线上bug分析、优化改进策略、bug优先级等等。
10. App 的兼容性怎么测,App 的接口测试怎么测?
系统兼容(ios、安卓)、机型兼容(iPhone、华为、小米、三星、vivo、OPPO)、分辨率兼容、软件本身向前向后兼容。
接口测试:获取接口文档,使用fiddler抓包工具获取接口的请求方式、url、请求参数、返回参数,然后使用postman、jmeter进行测试。
11. Web 端测试和 App 端测试有何不同(常见)
· 系统结构方面
Web 项目,b/s架构,基于浏览器的;Web 测试只要更新了服务器端,客户端就会同步会更新。
App 项目,c/s结构的,必须要有客户端;App 修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍。
· 兼容方面
Web项目:a. 浏览器(火狐、谷歌、IE等)b. 操作系统(Windows7、Windows10、Linux等)。
App项目:a. 设备系统: iOS(ipad、iphone)、Android(三星、华为、联想等) 、Windows(Win7、Win8)、OSX(Mac)b. 手机设备可根据 手机型号、分辨率不同。
· 性能方面
web项目 需监测 响应时间、CPU、Memory。
app项目 除了监测 响应时间、CPU、Memory外,还需监测流量、电量等。
相对于 Web 项目,APP有专项测试。
干扰测试:中断,来电,短信,关机,重启等。
弱网络测试(模拟2g、3g、4g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g/wifi 等)。
安装、更新、卸载
安装:需考虑安装时的中断、弱网、安装后删除安装文件等情况。
卸载:需考虑 卸载后是否删除 App 相关的文件。
更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新。
界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换。
安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等。
边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等。
权限测试:设置某个 App 是否可以获取该权限,例如是否可访问通讯录、相册、照相机等。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!