不管你现在做软件测试,在什么级别。
软件测试理论基础和软件质量保证问题,面试的时候绝对是离不开的。
软件测试这一个行业离开了业务就失去了灵魂。
一切的自动化、一切的编程、一些软件测试工具,都是辅助测试为主。
我们最终的目的是保证我们产品的质量。
所以不管什么样级别的软件测试工程师,你得全面掌握软件测试理论基础、文档的编写、测试流程。
如果说我是面试官,你现在来面试。
那我第一个肯定不会问你那些代码的问题,也不会问你自动化的问题,也不会问你测试开发的问题。
我首先看你做了几年软件测试,有没有属于自己的一些软件测试思维,有没有自己的心得。
比如说像软件测试分为哪几个阶段?然后你之前测试过的项目流程,在每一个阶段的输出有哪些?是怎么样去执行的,你在软件测试过程中充当的角色。
这一类软件测试面试题,根据你的回答,就能知道你有没有工作经验。你对软件测试的认知,你对自己岗位的职责,对自己的定位是否准确。
都是一些比较综合性的问题。
现在都是一个敏捷开发的模式,很多公司都是用敏捷开发,那么你能谈一谈这个敏捷开发吗?
大家不要局限于很传统的问题,什么是测试计划啊,什么是测试用例编写等等。
敏捷开发现在也是属于软件测试基础理论的一个理念。
然后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
……
5.线上质量BUG频频爆发怎么办?
真的勇士, 敢于直面惨淡的 warning 、 敢于正视淋漓的 error !
有人喜欢创造世界,他们做了开发者;有的人喜欢开发者,他们做了测试员。
6.如何分析一个bug是前端还是后端的问题?
像这个问题,这是一个软件测试工程师初、中级会问你的面试题。
像最前面图上的问题,你一定要能够全面的诠释。大家一般能答出多少个?欢迎在评论区留言探讨。
在回答这一类问题的时候,我们要根据自己的工作经验,去总结。
回答的时候不能简单的说“是否对错”,我们要根据面试官问的问题去扩展,我们就拿第6个问题来说吧!
然后你如何分析一个Bug是前端还是后端的问题?
这个就看大家做软件测试的心得了,像这类问题,你去百度去网上也不好找。欢迎在评论区谈一下大家自己的经验。(抓包?看接口返回?)
通过一些接口请求信息,抓接口请求信息。(通过浏览器的一些开发者工具)
就是说检查接口,检查接口首先你得了解BUG它用到了哪些接口,然后检查请求的数据,发送的数据是否正确,后台反馈的数据是什么?
如果前端没有请求接口,或者请求的时候参数与需求不符,那么肯定就是前端的问题。
划重点:请求参数,返回的响应值
那么我们可以来看一个简单的案例。
我这里有一个平台,是前后端分离的,只有前后端分离的系统才会出现这个问题。
假设这个是我们被测的系统,我们在系统管理-用户管理这里是不是有很多用户,这个是最简单的用户管理系统了。就是有哪些人,有admin有知一,有木子,有当当等等很多。
我们先来删除其中任意一个,页面没有任何的反应。
我第二次再去删除同一个,它就报Userld不存在了对吧?
那么如果是这种情况,是前端的问题还是后端的问题?一看就是前端的问题对吧。
判断这个问题,是不是前端的问题,我们就打开netkwork
我们来新增一个用户,它就会调用一个add接口,显示用户新增成功。
当我新增一个用户的时候,bug可能会偶尔重现。所以大家在看接口请求的时候,你要看它本来你去删除的时候它只调用了一个接口,那么它不仅要删除这个人,它其实还要去刷新这个页面,它需要重新去调用这个用户界面的接口。这个时候你就需要知道当它做这个删除功能的时候需要调用几个接口。
可能有些接口,开发人员没有去调用,那么就是前端的问题,这个时候需要我们主动刷新一下,主动刷新的时候,整个页面它会重新整个去获取一遍。这个时候删除在页面上才会生效。所以说这是前端少调用了一个接口。这就是前端的一个问题了。
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。