写点什么

【我给面试官画饼】软件测试理论基础、质量保证常见面试题——会被面试官赶出来吗?

发布于: 2021 年 01 月 20 日
【我给面试官画饼】软件测试理论基础、质量保证常见面试题——会被面试官赶出来吗?

软件测试理论基础、质量保证常见面试题

  • 全面掌握软件测试理论基础、文档编写,测试流程 【原文链接】

  • 1.测试分为哪几个阶段?

  • 2.谈谈你之前测试的项目流程,在每个阶段的输出有哪些?

  • 3.谈谈敏捷模式的认识?

  • 4.linux 常见查看日志命令有哪些?

  • 5.线上质量 BUG 频频爆发怎么办?

  • 6.如何分析一个 bug 是前端还是后端的问题?


全面掌握软件测试理论基础、文档编写,测试流程

大家好,我是一凡,很高兴认识你!终于开通了 InfoQ 博客写作平台。往后会给大家带来更多的学习资源以及最新资讯,欢迎关注我。



不管你现在做软件测试,在什么级别。

软件测试理论基础和软件质量保证问题,面试的时候绝对是离不开的。

软件测试这一个行业离开了业务就失去了灵魂。


一切的自动化、一切的编程、一些软件测试工具,都是辅助测试为主。

我们最终的目的是保证我们产品的质量。

所以不管什么样级别的软件测试工程师,你得全面掌握软件测试理论基础、文档的编写、测试流程。

如果说我是面试官,你现在来面试。


那我第一个肯定不会问你那些代码的问题,也不会问你自动化的问题,也不会问你测试开发的问题。

我首先看你做了几年软件测试,有没有属于自己的一些软件测试思维,有没有自己的心得。

比如说像软件测试分为哪几个阶段?然后你之前测试过的项目流程,在每一个阶段的输出有哪些?是怎么样去执行的,你在软件测试过程中充当的角色。

这一类软件测试面试题,根据你的回答,就能知道你有没有工作经验。你对软件测试的认知,你对自己岗位的职责,对自己的定位是否准确。

都是一些比较综合性的问题。


现在都是一个敏捷开发的模式,很多公司都是用敏捷开发,那么你能谈一谈这个敏捷开发吗?

大家不要局限于很传统的问题,什么是测试计划啊,什么是测试用例编写等等。

敏捷开发现在也是属于软件测试基础理论的一个理念。

然后 Linux 常见的查看日志命令有哪些?这也是比较基础的一些东西了。你至少要会查看开发的日志,会数据库。


然后我问你,线上质量 BUG 频频爆发怎么办?你做为一个测试你该怎么去应对?像这些都是比较综合性的问题,都是考验你在工作中的经验于心得。

你做过多少项目,你在遇到这些问题你是如何处理的。

这些问题你一定要能够很全面的表述出来。


比如说我现在是面试官,我第一个肯定不会去问你哪些代码的问题,也不会问你自动化、测试开发的问题。

第一个考查的肯定是你做了几年测试,有没有自己的测试思维?有没有自己的一些心得。

前三个问题就能够知道你有没有工作经验,你在工作中承担一个什么样的角色、你的职责你的输出在哪里。都是一些比较综合性的问题。


1.测试分为哪几个阶段?

软件测试是贯穿整个软件生命周期的,软件测试的对象包括软件需求、概要设计、详细设计、软件运行环境、可运行程序和软件源代码等。

软件测试包括质量、人员、资源、技术和流程五大要素,以及测试覆盖率和测试效率两个目标。

那么软件测试究竟又分为哪几个阶段呢?本文将围绕这个问题详细介绍。

软件测试和开发过程相对应, 软件测试一般分为 4 个阶段:单元测试、集成测试、系统测试、验收测试。



一、单元测试

单元测试:单元测试是针对软件设计的最小单位–程序模块甚至代码段进行正确性检验的测试工作,通常由开发人员进行。

对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如 C 语言中单元指一个函数,Java 里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。

总的来说,单元测试是对软件中的最小可验证单元进行检查和验证。

测试原则:

1、尽可能保证测试用例相互独立(测试用例中不能直接调用其他类的方法,而应在测试用例中重写模拟方法);

2、此阶段一般由软件的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。

单元测试的好处:

1、尽早的发现缺陷;

2、利于重构;

3、简化集成;

4、文档;

5、用于设计。

单元测试的不足:

1、不可能覆盖所有的执行路径,所以不可能保证捕捉到所有路径的错误;

2、每行代码需要 3~5 行代码进行单元测试,存在投入与产出的平衡。

二、集成测试

集成测试是在单元测试的基础上,把软件单元按照软件概要设计规格说明的规格要求,组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求。

集成测试包括 BigBang、自顶向下、自底向上、核心系统集成、高频集成。

三、系统测试

系统测试:系统测试是在集成测试通过后进行的,目的是充分运行系统,验证各子系统是否都能正常工作并完成设计的要求。它主要由测试部门进行,是测试部门最大最重要的一个测试,对产品的质量有重大的影响。

集成测试和系统测试之间的比较:

1、测试内容:集成测试是测试各个单元模块之间的接口,系统测试是测试整个系统的功能和性能;

2、测试角度:集成测试偏重于技术的角度进行测试,系统测试是偏重于业务的角度进行测试。

四、验收测试

验收测试也称交付测试,以需求阶段的《需求规格说明书》为验收标准,测试时要求模拟实际用户的运行环境。是针对用户需求、业务流程进行的正式的测试,以确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统。

验收测试包括 alpha 测试和 beta 测试,alpha 测试是由开发者进行的软件测试,beta 测试是由用户在脱离开发环境下进行的软件测试。

2.谈谈你之前测试的项目流程,在每个阶段的输出有哪些?

比如说敏捷开发每周他有新的需求来了,新功能推出来之后,是不是第一个项目流程需求分析会。

需求分析:(开发、产品、测试)探讨需求功能点,数据库表的设计,接口设计。现在大都是前后端分离的这样一个项目对吧,你要从这些面去回复,比较全面。

然后输出的一个需求文档,包括已接口的、功能的。你不要只答到一个需求分析。

开完这个会之后,我们就按照这个需求分析去编写测试用例。在编写测试用例之前,你的主管会去编写测试计划(如果你是主管你就说我编写测试计划)然后任务分配。

用例的设计,整理测试要点,用例评审。

比如开发人员说他要开发几个接口,那么你的用例里面,测试要点都要给开发人员进行评审。

用例评审完之后,就要整理形成最终的一个用例版本。

然后开发人员去开发代码,进行一个预测,开发进行一个自测,对主要一个功能进行冒烟测试,然后给我们提测。

测试过程中,Bug 的提交,比如我们用的 Jira,用什么管理系统去提交的 bug。

Bug 的生命周期,怎么去重新提交。这就是一个测试缺陷报告。

然后在什么时候进行上线,产品发布后再会有一个线上维护性的回归测试等等。



像这些内容,你按照这个思路去和面试官交流。那么你这个流程也是非常规范的!

所以大家在面试时候不要简单的说,需求分析、编写用例。这样规范起来,就体现了你在互联网公司对自己角色的定位很清晰,对工作内容也很明确。

不要小看这个问题。

3.谈谈敏捷模式的认识?

参考阅读——敏捷软件测试常见的七个误区

4.linux 常见查看日志命令有哪些?

  • 全文查看



文件查看命令–cat

1.查看文件所有内容 cat

cat 是 cancatenate 的简写,用于将一个文件的内容连续输出到屏幕上。

语法: cat[-选项][目标文件] 查看文件内容



参数: -n 为文件内容添加上行号

命令: cat -n /etc/passwd 查看 passwd 时,给文档添加上行号



参数: -b 为文件内容添加上行号,但空行不算

命令: cat -b/etc/inittab 查看 inittab 时,给文档添加上行号,空行不会添加行号



文件查看命令–more

 

2.分页查看文件内容 more

语法: more[目标文件] 分页查看,按空格键往下翻

 



文件查看命令–less

3.分页查看文件内容 less

语法: less[文件名] 分页查看,按 b 往上翻,按空格往下翻,按 q 退出

 


总结:

 

全文查看:cat

分页查看:more less

部分查看: head tail

 

文件查看命令–head

4.查看部分文件内容 head

语法: head[-选项][文件名]

命令: head /etc/passwd 默认查看文件开头的前 10 行

 


文件查看命令–tail

5.查看部分文件内容 tail

语法: tail[-选项][文件名]

命令: tail /etc/passwd 默认查看文件末尾的 10 行



……

5.线上质量 BUG 频频爆发怎么办?

真的勇士, 敢于直面惨淡的 warning 、 敢于正视淋漓的 error !

有人喜欢创造世界,他们做了开发者;有的人喜欢开发者,他们做了测试员。

什么是软件测试?软件测试就是一场本该在用户面前发生的灾难提前在自己面前发生了,这会让他们生出一种救世主的感觉,拯救了用户,也就拯救者这个软件,避免了他们被卸载的命运。

愿你我相遇皆有所获!

如果你觉得此文对你有帮助,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们群里发放的免费资料都是笔者十多年测试生涯的精华,还有同行大神一起交流技术。


作者:来自公众号:程序员一凡


原创不易,欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。


6.如何分析一个 bug 是前端还是后端的问题?


像这个问题,这是一个软件测试工程师初、中级会问你的面试题。

像最前面图上的问题,你一定要能够全面的诠释。大家一般能答出多少个?欢迎在评论区留言探讨。

在回答这一类问题的时候,我们要根据自己的工作经验,去总结。

回答的时候不能简单的说“是否对错”,我们要根据面试官问的问题去扩展,我们就拿第 6 个问题来说吧!

然后你如何分析一个 Bug 是前端还是后端的问题?

这个就看大家做软件测试的心得了,像这类问题,你去百度去网上也不好找。欢迎在评论区谈一下大家自己的经验。(抓包?看接口返回?)

通过一些接口请求信息,抓接口请求信息。(通过浏览器的一些开发者工具)

就是说检查接口,检查接口首先你得了解 BUG 它用到了哪些接口,然后检查请求的数据,发送的数据是否正确,后台反馈的数据是什么?

如果前端没有请求接口,或者请求的时候参数与需求不符,那么肯定就是前端的问题。

划重点:请求参数,返回的响应值

那么我们可以来看一个简单的案例。

我这里有一个平台,是前后端分离的,只有前后端分离的系统才会出现这个问题。

假设这个是我们被测的系统,我们在系统管理-用户管理这里是不是有很多用户,这个是最简单的用户管理系统了。就是有哪些人,有 admin 有知一,有木子,有当当等等很多。



我们先来删除其中任意一个,页面没有任何的反应。

 


我第二次再去删除同一个,它就报 Userld 不存在了对吧?

 


那么如果是这种情况,是前端的问题还是后端的问题?一看就是前端的问题对吧。

判断这个问题,是不是前端的问题,我们就打开 netkwork

我们来新增一个用户,它就会调用一个 add 接口,显示用户新增成功。



当我新增一个用户的时候,bug 可能会偶尔重现。所以大家在看接口请求的时候,你要看它本来你去删除的时候它只调用了一个接口,那么它不仅要删除这个人,它其实还要去刷新这个页面,它需要重新去调用这个用户界面的接口。这个时候你就需要知道当它做这个删除功能的时候需要调用几个接口。

可能有些接口,开发人员没有去调用,那么就是前端的问题,这个时候需要我们主动刷新一下,主动刷新的时候,整个页面它会重新整个去获取一遍。这个时候删除在页面上才会生效。所以说这是前端少调用了一个接口。

这就是前端的一个问题。

用了一个接口。

以后去回答这个面试题,你就可以完美的去回答了,如果还是没有完全理解可以公众号程序员一凡获取视频精讲教程。

 


## 相信梦想会如期而至。


迷失的时候,选择更艰辛的那条路。

当你内心有目标和梦想的时候,别害怕,勇敢的尝试一次吧,放弃很轻松,要磨灭内心的热情也很容易,但是坚持下,也许就能看到不一样的自己,人生是一次不会返程的路途,给自己一次机会有何不可。

每一个成功的人,在前进的路上都会收到很多的鼓励,也会愿意鼓励他人,我深深感受到鼓励带给我的帮助,你们的每一次点赞,就是对我最大的支持,让我一直坚持的做出更好的内容。


愿你我相遇,皆有所获! 欢迎关注 微信公众号:程序员一凡 回复关键字【面试】


1.免费领取一份 216 页软件测试工程师面试宝典文档资料。

2.软件测试学习路线以及相对应的视频学习教程免费分享!


发布于: 2021 年 01 月 20 日阅读数: 58
用户头像

陪你学习成长,助你升职加薪! 2021.01.19 加入

公众号:程序员一凡

评论

发布
暂无评论
【我给面试官画饼】软件测试理论基础、质量保证常见面试题——会被面试官赶出来吗?