软件测试面试题总结

软件测试面试题总结

  • 1、如何提交高质量的bug?
  • 2、浏览器的兼容性测试怎么测?
  • 3、单元测试、集成测试、系统测试、验收测试的区别和联系是什么?
  • 4、HTTP协议中的“长连接”和“短连接”的区别?
  • 5、HTTP协议与TCP/IP协议的关系
  • 6、Linux下常用的监控命令有哪些?
  • 7、测试环境如何搭建?
  • 8、Get 和 Post请求的区别
  • 9、git和svn请求的区别
  • 10、怎么排查页面空白的问题?
  • 11、怎么保证测试用例的覆盖率?
  • 12、简单说一下最近负责的一个项目
  • 13、你认为测试人员需要具备哪些素质?
  • 14、测试的目的是什么?
  • 15、回归测试是什么?
  • 16、测试Android 和 Ios 的不同
  • 17、web端和app端测试区别
  • 18、你认为做好测试计划工作的关键是什么?
  • 19、 你觉得软件测试通过的标准应该是什么样子的?
  • 20、你对测试最大的兴趣在哪里?为什么?
  • 21、HTTPS协议比HTTP协议更安全,是怎么实现的?
  • 22、测试报告怎么写?
  • 23、接口测试content-type常见类型有哪些?
  • 24、对带有支付功能得产品,如何测试
  • 25、登录窗口测试用例设计
  • 26、你期望的薪资是多少?
  • 27、为什么要学会定位bug是前端的还是后台的?
  • 28、一个测试工程师应该具备哪些素质

1、如何提交高质量的bug?

要提交高质量的bug,我们可以注意以下几点:
①bug的唯一性:一般来说,一个bug只记录一个问题或一类问题。
②bug的可重现性:我们在写bug的时候呢,要尽量把bug的重现步骤写得更加清楚一点,有数据把数据附上,有截图把截图附上,有日志的可以把日志也附上,尽量让开发能够尽快更迅速地定位到这个bug。
③bug的一致性:一个bug的描述信息,前后应该是一致的,不应该存在任何歧义。
④bug的客观性:我们在描述一个bug的时候,尽量不要带上个人观点,也不要针对某位开发,我们只要对事不对人,把bug描述清楚就可以了。

2、浏览器的兼容性测试怎么测?

浏览器的兼容性测试,其实就是,不同的浏览器它的不同内核以及他所支持的html语言对同一代码有不一样的解析,从而会造成页面显示不一样的情况
最常见的问题,就是页面的元素会出现错位、混乱、重叠等现象。那我们怎么去做兼容性测试呢?
一般来说,兼容性测试是在我们测试功能测试的时候同时去做一个覆盖的,然后我们会去选择一些主流的浏览器,当然要覆盖不同的内核版本,通过这两个因素,一个是主流、一个是内核版本的覆盖,然后去找到要覆盖的一些浏览器,接着在功能测试的同时去关注我们的页面在不同的浏览器里面的显示是否正常。

3、单元测试、集成测试、系统测试、验收测试的区别和联系是什么?

单元测试:具体到某一个模块的测试,它可以具体到某个方法某个函数,一般来说采取的是白盒测试的方法,一般由开发自测。
集成测试:是在单元测试之后的一个阶段,是当我们每一个模块进行一个整合之后,对模块之间的接口进行测试的,验证接口之间的数据传递的一个正确性和实现性,一般它使用的方法是介于黑盒和白盒之间的一种方法,通常我们称之为灰盒测试。
系统测试:是在集成测试之后的一个阶段,它是把集成测试之后的模块结合软件以及硬件的环境,来进行一个功能以及性能的一个测试,一般来说,用的方法主要是黑盒测试。
验收测试:是在系统测试之后的一个阶段,一般来说验收测试是用户自己来做的,去验证需求是否已经实现和满足。

4、HTTP协议中的“长连接”和“短连接”的区别?

本质上其实是TCP的长连接和短连接。主要是根据我们连接的一个时长来判断,时间长的叫做长连接,时间短的叫做短连接。在HTTP协议里面,有一个tcp的数据传输方式,也就是平时所说的三次握手,为了让数据传输效率更高,我们希望这个握手的频率越低越好,所以在http协议1.1版本里面出现了一个新的参数叫做connection,它的值是 keep-alive,这个就是典型的长连接。这个建立起的一个连接,就可以保证数据的传输,那这个保持多久呢?我们这个长连接,它会每隔一段时间,向客户端发起一个探测报文,如果服务器发起的探测报文能够探测得通,说明还建立着连接的,如果探测不通,说明已经断开连接,那服务器也会主动的断开。那么多长时间来发送一个探测报文和多长时间建立起连接,连接保持时长多长,这个都是可以配置的。
在建立长连接的时候,会消耗客户端的一个端口,同时占用服务端的连接数,在多并发的时候,如果没有及时释放端口,就会出现客户端的端口不够用的情况,或者服务端连接数不够用的问题。而短连接的连接时间就比较短,要用的时候通过tcp传输方式三次握手,建立连接,不需要用的时候,就会和服务端断开连接。

5、HTTP协议与TCP/IP协议的关系

HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠地传递数据包,使得网络上接收端收到发送端所发出的所有包,并且顺序与发送顺序一致。TCP协议是可靠的、面向连接的。

6、Linux下常用的监控命令有哪些?

vmstat命令(virtual memory static 虚拟内存统计):对系统的整体情况进行统计,包括系统进程、虚拟内存、CPU和磁盘等信息进行监控。
top命令:实时监控系统中各个进程的资源占用情况以及总体状况,可以有效地发现系统的缺陷出在哪里,是内存不够,CPU处理能力不够,I/O读写过高。
iostat命令:可以对系统的磁盘I/O操作进行监控。
sar命令(system activity reporter 系统活动情况报告):可以多方位的获取我们的系统CPU、磁盘I/O,还有各种内存的信息,是Linux上最为全面的系统性能分析工具之一。

7、测试环境如何搭建?

项目的部署方式大概分为4种:
①LAMP(通用、跨平台、高性能、低价格)方式,如果企业使用的是PHP语言开发的,LAMP包括Linux+Apache+Mysql+PHP。
②如果企业使用的是JAVA语言开发的,那么可能采用一个Linux+Mysql+tomcat+war包。
具体执行如下:
(1)拿到war包,编译好的安装包;
(2)使用xshell(或CRT)远程连接Linux服务器,把java程序包放到webapps目录下;
(3)停掉tomcat服务器,命令如下:
查询tomcat的进程ID:

ps -ef | grep tomcat --查询tomcat的进程ID

杀掉tomcat服务:

kill -9 tomcat的进程ID

(4)进入tomcat的bin目录:

cd /java/tomcat/bin

(5)重新启动tomcat服务:

./catalina.sh

或者

./startup.sh

持续集成,引入jenkins,就是把以前研发手动部署的方式变成了自动化部署,把命令放到了jenkins中,自动部署。
docker+jenkins,进行持续集成的部署。

8、Get 和 Post请求的区别

Get请求的数据是拼接在url后面的,是明文显示的,且数据长度有限制,安全性不如post请求,这种方式一般用于数据查询。
Post请求的数据是放在请求体中,即平时所说的body体中,它的数据长度是不受限制的,而且它可以是明文显示也可以是密文显示,安全性比较高,这种方式一般用于提交数据或者修改数据的场景中。

9、git和svn请求的区别

git 和 svn都是版本控制工具
但是svn属于集中化管理,所有代码都在一个服务器上,而且svn的每一个分支和主线的url地址是不一样的。
git是分布式管理,去中心化,服务器和每一个开发都拥有一个自己的本地仓库,而且它的一个主线和分支的url地址是一样的,分支的管理成本更低。
这就是他们之间的主要区别。

10、怎么排查页面空白的问题?

首先,我会检查一下网络是否很正常,然后检查输入的url地址是否正确;
第二步,可以通过浏览器的一些调试工具,比如说F12,还有抓包工具,比如Fiddler,去抓取报文进行分析,查看请求和响应的内容,然后查看请求的参数和请求地址是否正确,以及后台响应的状态码、响应信息是否正确。
通过以上步骤,基本可以定位出这个问题是属于前端的问题还是后台的问题,那么如果分析出来是后台的问题,我们可以继续去后台服务器查看日志,进行进一步的一个定位。

11、怎么保证测试用例的覆盖率?

首先,在需求评审阶段,先熟悉产品的核心业务功能以及功能细节的一些联系,同时去参考一些成熟的产品,把一些功能细节实现、一些不明确的地方要跟产品和开发沟通清楚;
需求确定之后,我们需要按照功能模块来设计测试用例或者说提取测试点,其中需要一些科学的用例设计方法,比如说,等价类划分法、边界值分析法、场景法、错误推断法、正交表法;
我们的测试用例编写完毕之后,需要在组内进行一个测试用例评审,来确保测试用例对需求的一个覆盖完整性;
最后,在测试的过程中,我们会一边测试一边对测试用例进行一个补充,不断完善和优化测试用例。

12、简单说一下最近负责的一个项目

①简要概括一下项目的名称、项目类型、项目的主要功能;
②说一下你在该项目里是作为一个怎样的角色,负责哪一块的内容,在这个项目里你做了些什么,产出怎样的一个结果或效益,或者为项目带来了怎样的一个作用,现在该项目进行到哪一个阶段,上线了还是在进行中,如果上线了,可以说一下上线之后用户的反馈,质量如何等等。

13、你认为测试人员需要具备哪些素质?

做测试应该要有一定的沟通协调能力,因为测试人员经常要和开发接触处理一些问题,如果处理不好会引起一些冲突,这样的话工作上就会不好做。还有测试人员要有一定的耐心,有的时候做测试会比较枯燥无味。除了耐心,还有要细心,测试人员不能放过每一个可能的错误。

14、测试的目的是什么?

测试的目的是在软件产品上线前尽量多的找出软件产品中存在的错误,使得软件尽可能的符合用户的需求,降低风险和维护成本。

15、回归测试是什么?

回归测试是指开发修改旧代码后进行测试,确认修改后没有引入新的错误或 代码产生错误。
①回归测试是指重复以前或部分的相同测试;
②新加入测试的模块,可能对其它模块产生影响,所以需要进行某些程度的回归测试;
③回归测试的重心,以关键性模块为核心;

16、测试Android 和 Ios 的不同

①手机操作系统:Android系统较多,Ios较少;
②多分辨率测试:Android的分辨率大约有20多种,Ios只有几种;
③按键:Android一般有三个按键,而Ios只有一个Home键;
Android长按home键呼出应用列表,back键在大部分情况下和页面上的返回键功能一样。不过,Android的返回键可以在应用间切换,还可以返回主屏幕。
Ios单击home键返回主界面,双击回到单手操作模式。
④推送测试:
Android,点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;
Ios,点击home键,关闭程序和屏幕锁屏的情况(红点显示)。
⑤安装卸载测试:Android的下载和安装的平台和工具比较多,Ios主要有App Store,iTunes,和 TestFlights。

17、web端和app端测试区别

Web项目时B/S架构,基于浏览器的;
App项目是C/S架构,必须要有客户端,用户需要安装客户端。
Web测试只要更新服务端,客户端就会同步更新。
App项目则需要客户端和服务端都更新。
①性能方面:web页面主要关注的是响应时间,app需要关注流量、电量、cpu、内存等;服务端没有区别,都是一台服务器。
②兼容方面:web是基于浏览器的,所以更倾向于浏览器和电脑硬件、系统方面的兼容;app测试要看机型、分辨率、屏幕尺寸、设备系统。web测试是基于浏览器,所以不用考虑安装卸载,而app是客户端,必须测试安装、卸载、更新,还需要考虑其它异常情况,包括安装时候中断、弱网,安装后删除安装文件,app是否 能正常运行;app还有专项测试,如网络适配性如2G/3G/4G/5G切换、运营商环境如联通/移动/电信、wifi。
③交换方式:web主要采用鼠标点击方式,而app主要是手指点击、拖拽,考虑更多的是手指的交互习惯。
④使用场景不同:web是相对稳定的网络,绝大多数是固定位置,有局限性;而app是随时随地都可以使用。

18、你认为做好测试计划工作的关键是什么?

首先,要有一个明确的目标,详细地阅读需求说明文档;
其次,要对整个测试人员、测试时间、测试进度进行一个评估,并预先进行管理。
最后,要对整个测试流程设定一个规范,所有测试人员都要按照规范进行做事,不能随心所欲的测试。

19、 你觉得软件测试通过的标准应该是什么样子的?

测试用例完全执行,测试用例覆盖到所有的功能点,并且缺陷密度达到客户的需求。
缺陷密度=缺陷数量/代码行或功能点的数量

20、你对测试最大的兴趣在哪里?为什么?

最大的兴趣是具有挑战性。测试是一个经验行业,工作越久越能感觉到做好测试的难度和乐趣,通过自己的工作,尽可能地找出软件存在的缺陷,能使得软件产品越来越完善,从中体会到乐趣。

21、HTTPS协议比HTTP协议更安全,是怎么实现的?

HTTPS协议主要是通过SSL(secure sockets layer 安全套接字协议)协议来实现的。它的安全性主要体现在以下几个方面:
①它的数据是加密的,通过非对称加密的方式来实现密钥的协商,再通过一个对称加密的方式来实现数据的加密;
②它可以进行身份的验证,我们进行数据交互的客户端和服务器双方都可以向CA机构来申请证书,并且在SSL握手的阶段,双方去验证对方的身份,防止第三方进行冒充;
③它可以保证信息的完整性,每次发送的数据,我们都会去加上一个MAC摘要并且签名,当发送的数据和接收的数据这个摘要信息是一致的,就表示这个信息没有被第三方篡改过的。

22、测试报告怎么写?

一份完整的测试报告一般包括以下3点:
①测试的基本情况,包括测试的时间、测试人员、测试的环境、测试的范围、还有测试用例执行的基本统计。
②缺陷的统计和分析,包括缺陷的总数的汇总,还有不同维度的缺陷分析和统计,以及遗留问题的汇总和分析。
③测试的结论和建议,包括测试存在的风险,还有本次的测试结论,比如说测试是否通过,是否达到上线的标准。

23、接口测试content-type常见类型有哪些?

①application/json 适合提交一些复杂结构的数据,适合restful风格的接口;
②application/form 格式的一种数据,浏览器的原生表单的形式;
③text/xml 格式,以http协议为传输协议,以xml为编码方式的一种远程调用规范,一般在webservice结构里比较常见;
④multipart/form-data,需要在表单中上传文件时使用到该格式;

24、对带有支付功能得产品,如何测试

从金额上:包括正常金额的支付、最小值的支付、最大值的支付、错误金额的输入(包括限额的金额,格式错误的金额,不允许使用的货币,大于余额的金额等等);
从流程上:包括正常完成支付的流程、支付中断后继续支付的流程、支付中断后结束支付的流程、支付中断结束支付后再次支付的流程、单订单支付的流程、多订单合并支付的流程等等;
从使用的设备上:包括PC端的支付、 笔记本电脑的支付、平板电脑的支付、手机端的支付等;
从支付接口上:包括POSE终端机支付、银行卡网银支付、支付宝支付、微信支付、手机支付等;
从产品容错性上:包括支付失败后如何补单或退单、如何退款等;
从后台的账务处理上:成功订单的账务处理、失败订单的账务处理、退款订单的账务处理、差错账务处理等等;

25、登录窗口测试用例设计

以登录窗口为例,说说我设计登录界面的思路和方法。我把这个测试用例分为3层结构:表单结构、逻辑判断、业务流程。
表单测试:这部分的测试用例是对登录窗口这个界面的输入框、按钮功能、界面等最基本的功能测试。输入框的长度限制是多少?能否输入特殊字符?能否输入全角字符?登录按钮、取消按钮、返回按钮、界面设计等,这一层的测试用例只对他们进行最简单的功能测试。
逻辑判断:根据需求的设计,各功能之间的简单逻辑联系。以登录窗口为例子,账号登录,账号和密码必须对应上才能登录,否则登录失败。根据这一点需求,我们就可以设计这一层的测试用例。
如:账号、密码不一致时;账号为空时;密码为空时;账号、密码对应时等等情况,输入这些情况时,程序是怎么样的逻辑控制的?控制是否正确?是否有相应的提示信息?
业务流程:不同的需求就有不同的业务需求。考虑删除的用户能否登录、停用的用户能否登录、不同角色的用户能否登录、权限过滤方面,考虑不同角色所能看到的功能模块是否符合需求。
以上三层的划分也并不是很全面,需要在实践中不断完善,例如可以增加对数据库的部分功能的数据校验的分析。
真正设计这个测试用例的时候,可能会使用到黑盒测试用例的方法,例如等价类划分法、边界值分析法、场景法、错误推断法(主要是个人经验,判断哪里比较容易出现问题)、正交分解法等方法针对具体情况设计测试用例。
同时如果需要接口测试的,也需要对接口进行用例设计。

26、你期望的薪资是多少?

那相信贵公司有规划好的薪酬结构,所以我想问一下,对于这个岗位的薪酬规划是怎么样的呢?
根据我之前的工作经验和前一份工作的工资基础,我希望在 工作能够得到(百分之多少)的一个涨幅,也就是达到(具体的薪资)的这个月薪。

27、为什么要学会定位bug是前端的还是后台的?

①可以明确一个问题是不是真的“bug”,很多时候,我们找到了问题的根本原因,也许发现这根本不是bug,可能是认为操作失误导致的;
②找到bug的原因后,可以明确地指派给某位开发,防止像踢皮球一样踢来踢去,浪费时间,影响bug修复进度。
③自己在这个过程中,也可以学到很多东西,有助于理解产品的内部逻辑,对架构的理解,以及数据流是怎么流转的,随着对业务 架构逻辑的理解,反过来又会促进对问题的准确定位。
④可以降低缺陷率。在bug管理系统里,开发修复问题,我们会要求开发写下bug产生饿原因,只有我们对bug有一个较全面的认识,才会判别出开发写的是不是bug产生的真正原因,也有助于我们后期对bug进行分析归类。根据bug分析,有针对性地未雨绸缪,进而提升产品的质量,降低缺陷率。

28、一个测试工程师应该具备哪些素质

①责任心;②沟通协调能力;③团队合作精神;④耐心、细心、信心、逻辑思维;⑤时刻保持怀疑态度,并且具有缺陷防范的意识;⑥具备一定的编程经验;

你可能感兴趣的:(软件测试,面试,功能测试,测试覆盖率,测试用例)