软件测试工程师常见面试题(经典篇),标准答案来了
经常有人问我要软件测试的面试题,2022年小编花了十多天的时间整理的软件测试面试真题。各位小伙伴记好了,也可以把内容分享给身边有需要的朋友哦。
之所以让我们自我介绍,其实是面试官想找一些时间来看简历,所以自我介绍不用太长的时间,1-2分钟即可。
自我介绍一般按以下方式进行介绍:
您好!我是XX,我是XX年毕业的,毕业的学校是XXX,专业是XXX。
毕业后我来到XX城市工作。
第一份工作是在XX公司,主要做的是XX项目的测试。
第二份工作是在XX公司,主要做的是XX项目的测试
如果会接口、自动化或性能可以强调一下我们会这方面的测试。如果仅仅是功能测试就无所谓说不说了,主要是做功能测试了。
我们的测试流程主要包括以下6个步骤:
第一步:需求分析
第二步:测试计划
第三步:测试安案
第四步:测试用例
第五步:测试执行
第六步:测试报告
一般不更对每个步骤进行细分,如果面试官不做声,你就拆分出每个步骤需要完成的工作即可。一般面试官有兴趣会主动问的。
移动应用主要有权限、安装卸载、UI、功能、性能、中断、兼容性、安全性、回归、升级更新、用户体验。
服务端有接口测试、性能测试、安全测试。
测试案例是一份文档,它描述了一个输入、反应、或者是与其相应的预期的响应,以便来判断应用软件的工作是否正常,测试案例应当包括测试标识,测试案例的名称、目标、测试条件/设置、输入、数据要求、步骤、以及预期的结果
▲注:开发一个应用软件的测试案例的过程,需要全面、深入地等考虑该软件的操作,所有有助于发现在其需求或设计里面的问题。因此,如果有可能,在开发周期中应当尽早准备测试案例。
案例的编写与测试阶段的定义有很大的关系,系统测试和 unit 测试的案例可能不同,总体而言测试案例根据系统的需要而定。
1)新建一个脚本(Web/HTML协议)
2)点击录制按钮,在弹出的对话框的URL中输入"about:blank"。
3)在打开的浏览器中进行正常操作流程后,结束录制。
4)调试脚本并保存。可能要注意到字符集的关联。
5)设置测试场景
6)针对性能设置测试场景,主要判断在正常情况下,系统的平均事务响应时间是否达标
● 测试执行的问题
1)自动化测试没有有效的利用,使得手工测试太多。
2)测试结果的捕获没有系统性,而且没有查看或调查
3)缺陷报告必须用手工加入缺陷跟踪系统
● 错误分类
1、测试用例失败
● 正常错误
2、脚本命令失败
当测试过程不能不能执行录制过程中的某个功能时,回产生这种错误,如鼠标单击按钮或选择菜单项等。它也能指示是缺陷还是测试过程的设计问题。
3、致命错误
导致测试停止,这种情况最好重起Windows。
● 具体步骤:
1)建立测试系统
2)准备测试过程
3)运行初始化过程
4)执行测试
5)从终止的测试恢复
6)验证预期结果
7)调查突发结果
8)记录缺陷日记
黑盒测试:把测试对象当成——一个黑盒子,测试人员完全不考虑逻辑结构和内部特性,只依据程式的需求说明书来检查程式的功能是否满足它的功能说明。
白盒测试:把测试对象当成——一个透明的盒子,允许测试人员利用程序内部逻辑结构及相关信息,设计或选择测试用例,对程式所有逻辑路径进行测试。
单元测试:白盒测试的一种, 对软件设计中的单元模块进行测试。
集成测试:在单元测试的基础上,对单元模块之间的连接和组装进行测试。
系统测试:在所有都考虑的情况下,对系统进行测试。
验收测试:第三方进行的确认软件满足需求的测试。
相同点:
设计测试用例均依据等价类、边界值等方法,测试原理相同。
大多数都采用黑盒测试方法来验证业务功能。
需要检查界面布局、风格和按钮是否美观、统一等(UI 测试)。
测试页面载入和翻页的速度、登录时长是否溢出等问题(性能测试)。
测试应用系统的稳定性。
不同点:
手机作为通信工具,通信等一些行为会对 App 产生(中断测试)影响。
手机用户对 App 产品的安装卸载操作;从上一版本/上两个版本直接升级到最新版本(安装卸载测试)。
Web 自动化测试使用的工具较常用的是 Selenium,而 App 自动化测试还要区别是Android 手机还是 iOS 手机,比较常用的工具是 Appium、UiAutomator、UIAutomation。
在做数据查询时,建议用 get 方式;而在做数据添加、修改或删除时,建议用 post 方式。
application/x-www-form-urlencoded
multipart/form-data
application/json
text/xml
测试技术:是一个确保应用程序系统或单元的某些方面正常工作的过程,可能只有很少的技术,但有很多工具。
测试工具:是执行测试过程的工具。工具是测试人员的资源,但它本身不足以进行测试
如果测试时间很紧张的话,那么是不可能把所有的功能都测试到的,只能通过一些方法或策略来尽量提高软件质量:
1.优先测试核心功能、基础功能。
2.安排好测试计划,尽早测试。
3.哪些重要功能模块是最容易出错的
4.基于经验和猜测测试很重要
5.优化和剪裁测试流程
1.Action的作用
心用Action可以对步骤集进行分组
心步骤重组, 然后被整体调用
呜拥有自 己的sheet
公组合有相同需求的步骤, 整体操作
具有独 立的对象仓库
2.Action的种类
必可复用 Action
必不可复用 Action
必外部 Action
性能测试是-一个较大的范围,实际上性能测试本身包含了性能、强度、压力、负载等多方面的测试内容。
压力测试是对服务器的稳定性以及负载能力等方面的测试,是-一种很平常的测试。增大访问系统的用户数量、或者几个用户进行大数据量操作都是压力测试。而负载测试是压力相对较大的测试,主要是测试系统在- -种或者集中极限条件下的相应能力,是性能测试的重要部分。100 个用户对系统进行连续半个小时的访问可以看作压力测试,那么连续访问8个小时就可以认为负载测试,1000 个用户连续访问系统1个小时也可以看作是负载测试。
实际上压力测试和负载测试没有明显的区分。测试人员应该站在关注整体性能的高度上来对系统进行测试。
“杀虫剂怪事”- -词由BorisBeizer 在其编著的《软件测试技术》第二版中提出。用于描述测试人员对同一测试对象进行的测试次数越多,发现的缺陷就会越来越少的现象。就像老用一种农药,害虫就会有免疫力,农药发挥不了效力。这种现象的根本原因就是测试人员对测试软件过于熟悉,形成思维定势。
为了克服这种现象,测试人员需要不断编写新的测试程序或者测试用例,对程序的不同部分进行测试,以发现更多的缺陷。也可以引用新人来测试软件,刚刚进来的新手往往能发现- - 些意想不到的问题。
参考答案: (要结合自己实际的工作经验进行回答,不同公司略有区别)
测试人员提交新的Bug入库,错误状态为New。
高级测试员/测试经理验证错误,如果确认是错误,分配给开发组。设置状态为Open。如果不是错误,则拒绝,设置为Declined状态。
开发经理分配bug至对应的模块开发人员。
开发人员查询状态为Open的Bug,如果不是错误,则置状态为Declined;如果是Bug则修复并置状态为Fixed。不能解决的Bug,要留下文字说明及保持Bug为Open状态。
对于不能解决和延期解决的Bug,不能由开发人员自己决定,一般要通过某种会议(评审会)通过才能认可。
(灵活回答)
公司对测试流程没有规定如何做,但每个测试人员都有自己的一套测试流程。
我说下我1年来不断改正(自己总结,吸取同行的方法)后的流程吧。需求评审(有开发人员,产品经理,测试人员,项目经理) - >需求确定(出一-份 确定的需求文档) - >开发设计文档(开发人员在开始写代码前就能输出设计文档) - >想好测试策略,写出测试用例- >发给开发人员和测试经理看看(非 正式的评审用例)->接到测试版本->执行测试用例(中间可能会补充用例)->提交bug(有些bug需要开发人员的确定(严重级别的,或突然发现的在测试用例范围之外的,难以重现的),有些可以直接录制进TD)- >开发人员修改(可以在测试过程中快速的修改) - >回归测试(可能又会发现新问题,再按流程开始跑)。
主要测试以前内容:
1.语音的时长,至少1秒
2. 语音最长时间,不超过60秒,如果超过60秒会自动停止
3. 微信是否有权限打开话筒
4. 微信如何识别是语音内容的
5. 语音是如何传输到服务器的
6. 在传输过程中是否对语音文件进行过压缩
7. 语音传到服务器后,是如何存储的
8. 语音文件存储到服务器是如何命名的
9. 传输语音是什么协议传输的
10. 传输一段语音需要多长时间
11. 语音是否可以撤消
12. 语音存储时间
13. 语音是如何从服务器传输到对方的
14. 到客户端是否如何解析语音内容的
15. 语音在手机端微信是否会进行缓存
79.你觉得自己和同事比有哪些优势?
这个主要是说优点,一般介绍的优势可以让自己比别人更好的信任这份工作,一般可以说以下优势:
1.我的学习能力比别人强一些
2.我的沟通能力比别人强一些
3.我喜欢团队合作来解决问题
4.遇到困难我会想很多的办法去解决
等等,还有其它的可以说,但一定是可以让这份工作可以做的比别人更好
测试经理:
1、制定测试计划。
2、确保测试过程正常进行。.
测试工程师
1、编写测试用例
2、搭建测试环境
3、执行测试