软件测试常见面试题

1、B/S架构和C/S架构的区别

  • BS : (浏览器 browser 服务端 server);B/S 只需要有操作系统和浏览器就行,可以实现跨平台,客户端零维护,维护成本低,但是个性化能力低,响应速度较慢;BS一般指的是浏览器软件,比如网页打开淘宝,天猫,京东
  • CS : (客户端 clent 服务端server);C/S响应速度快,安全性强,一般应用于局域网中,因为要针对不同的操作系统,需要针对性的开发,并且维护成本高;CS 一般指的是客户端软件,比如PC机上的QQ客户端,360安全卫士,当然手机上的app属于CS架构

小程序由于嵌套的网页,属于BS架构

2、http协议

http协议又叫做超文本传输协议,在做网络请求的时候,我们基本上是使用http协议。
http协议包括请求和响应。请求中包括:请求地址,请求方式,请求方式包括get请求和post请求,get和post的区别是get请求是在地址栏后边跟随请求参数,但是请求参数大小是有限制,不同浏览器是不同的。一般是4KB。post请求主要用于向服务器提交请求参数。post请求的参数是放到请求实体内容中的,相对get请求较为安全一些。
另外,请求中会有各种请求头信息,比如支持的数据类型,请求的来源位置,以及Cookie头等相关头信息。
响应,主要包含响应的状态码:200、404、500、304、307
还有各种响应头信息,比如设置缓存的响应头,Content-Type内容类型,设置cookie头信息。

  • 200: (成功)服务器已成功处理了请求
  • 404: (未找到)服务器无法找到客户端请求的资源;Not Found
  • 500: (服务器内部错误)无法完成请求;
  • 304: (未修改)客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态
  • 307: (重定向)浏览器内部重定向

3、http协议和https协议的区别

  • http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之的传输报文,就可以直接读懂其中的信息。
  • https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。

http协议:使用的端口是80。
https协议:使用的端口是443.
https协议:需要到ca申请证书,一般免费证书很少,需要交费

4、post和get的区别

  • Get请求一般是去获取数据(其实也可以提交,但常见的是获取数据);post请求一般是去提交数据。
  • Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的,请求数据是放在body体中(最常用场景,用户登录密码提交,一定是使用post请求的)
  • Get传送的数据量较小,这主要是因为受url长度限制;Post传送的数据量较大,一般被默认为不受限制。
  • Get请求可以被缓存,Post请求不会被缓存

5、cookie、session、token介绍

  • Cookie是由服务端生成,发给客户端,保存到客户端的一些认证信息。通常web端项目,一些缓存信息,会通过cookie方式保存到浏览器。访问每个站点,多数会有一些cookie信息,最基本的,比如一些浏览信息,还有一些用户名密码的认证会存储到cookie中。
  • session叫做会话,当用户打开某个web应用时,便与web服务器产生一次session。服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。
    最基本的,比如一个项目,我们登录上了,然后可以一直做一些操作,并且这个登录状态一直保持着,就是用的session技术,session有默认存储时间,默认是30分钟。
  • Token的意思是“令牌”,是用户身份的验证方式,比如可以将用户的uid,时间戳,签名进行组合,生成令牌,这样用户可以携带token访问服务器,服务器可以识别这个用户的认证信息。

Cookie有大小限制以及浏览器在存cookie的个数也有限制,Session是没有大小限制和服务器的内存大小有关。
Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击。
Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。

6、软件测试分为几个阶段

单元测试-集成测试-系统测试-验收测试

  • 单元测试:是指对软件中最小可测试单元进行检查和验证,当一段代码完成之后,通常由开发人员自测。
  • 集成测试:是是指将通过测试单元模块组装成系统或者子系统,再进行测试,重点测试不同模块的接口部分。这个通常由我们测试人员来完成。此处-套上接口测试话术。
  • 系统测试:系统测试这块,我们一般会先进行功能测试-我最近接触的是web端项目-套上web端话术
  • 验收测试:对软件产品上线前进行的最后一次测试。我们要确定开发的软件产品是否符合预期的各项要求。

回归测试:是指对软件的新版本测试时,重复执行之前某一个重要版本的所有测试用例目的:
1.验证之前版本产生的所有缺陷已全部被修复;
2.确认修复这些缺陷没有引发新的缺陷
冒烟测试:是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。也叫可测性测试。

7、软件测试的原则

所谓的测试原则指的就是我们在执行测试工作时必须要遵守的一些规则。
1,测试证明软件存在缺陷:无论执行什么样的测试操作都能证明当前软件是有缺陷的。
2,不能执行穷尽测试:有些功能是没有办法将所有的测试情况都逻辑出来,所以任何的测试操作都有结束的时间。
3,缺陷存在群集现象:对于软件功能说,核心功能占20%,非核心80%。在实际工作中我们会集中测试20%的核心功能,所以这个部分发现缺陷的几率就会高于80%。因此我们就会遇到缺陷都集中在20%功能模块里的现象。
4,某些测试需要依赖特殊的环境。
5,测试应尽早介入:为了更多的发现和更好的解决软件中的缺陷。我们追求测试工作尽早的开展。
6,杀虫剂现象:同样的一个测试用例不能重的执行多次,因此软件会对它产生免疫。
7不存在缺陷谬论:任何软件不可能是完美的

8、什么是alpha、beta 测试?有何区别?

  • alpha测试,有点相当于内部测试,一般开发人员在场 ,是由用户做测试,但开发人员在场,一般是请用户到开发现场去测试
  • beta测试,完全交给用户,由用户做测试,返回测试报告,相当于发行(上线)前的一个版本

9、开发环境,测试环境,预发布环境,灰度环境,生产环境分别是什么?

  • 开发环境:是程序员们专门用于开发的服务器,配置可以比较随意
  • 测试环境:一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。通常指项目测试,修改bug阶段
  • 预发布环境:测试环境到生产环境的过渡。测试环境可能会受到一些限制,一些流程或者数据没有测试到,就可以在预发布环境进行验证,从而保证产品上线质量。预发布环境一般会连接真实数据库,我们需要注意脏数据的问题。
  • 灰度环境:是介于预发布环境和生产环境之间,灰度发布会发布到其中一部分机器上,验证新功能是否正常。如果失败,只需回滚这几台机器即可。

10、验收测试(UAT)都是怎么做的?(视公司情况而定)

验收测试,一般都会有一个验收标准,一般我们会列出比较详细的清单,在清单中规定功能,页面,页面元素,兼容性,安全性的各项要求,也会有一个整体的要求,比如我们的标准是
1)测试用例全部执行完毕
2) 测试用例不通过数的比例< 3 %;
3) 不存在严重等级为致命,严重类型的bug;
4) 严重等级低于严重类型的bug数量≤ 5;
5) 所有提交的bug都已得到更正。

然后在测试的时候,去对比是否达到了这些标准,如果达到了,认为验收测试是通过的。

11、跟开发因为bug产生分歧怎么解决?

  • 首先分析或与开发沟通开发不认可的原因。
    如果拒绝原因是提交的不是bug或者自己分析后,的确不是缺陷,则应该注意以后再做测试时要做好复现,认真研读需求,提高自己找缺陷的能力。
  • 如果拒绝原因是认可缺陷,但不予修复,如果自己觉得必须修复,则拿出充分理由和证 据和不修复的不利影响和影响范围,再与开发沟通。
  • 注意沟通技巧,合理的论述,向开发说明自己的判断的理由,注意客观、严谨,不掺杂个人情绪。

12、测试非常紧急过程中,遇到阻塞性问题,对应的开发没有时间解决,你如何推动问题解决?

  • 首先判断问题的严重性,向对应的开发了解问题的原因。
  • 然后把问题汇报给自己的leader,提前暴露测试风险,把控测试周期

13、APP崩溃往往有什么导致的?

1、java.lang.OutOfMemoryError:内存溢出
原因:
①内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
②代码中存在死循环或循环产生过多重复的对象实体;
2、java.lang.NoSuchMethodError:方法引用错误
原因:
①方法调用错误
3、java.lang.RuntimeException: Unable to instantiate activity:无法实例化活动
原因:
①不能分辨布局文件而导致的运行时异常
4、java.lang.NullPointerException:空指针
①调用null对象的实例方法
②没有对null的情况做判断
5、ActivityNotFoundException
① Intent里传递的URL不是以“http”开头的
② 手机没有安装第三方的app,找不到对应的activity

14、Android端和IOS端测试,有什么区别?

  • 测试思路大致相同的,因为都是App,基本的逻辑功能要考虑,基本的用例思路也是一样的。都要考虑数据初始化,数据操作,数据处理,业务场景这些。
  • 不同的地方:多分辨率测试,Android端20多种,ios较少;
    手机操作系统,Android较多,ios较少且不能降级,只能单向升级;新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退(Crash)
  • Android:点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;ios,点击home键关闭程序和屏幕锁屏的情况(红点的显示)
  • Android的下载和安装的平台和工具和渠道比较多,ios主要就是app store

15、第三方登录流程

以微信第三方登录为例子,比如我们的应用是一个直播app
整个流程,包括用户,直播app,微信,直播服务器,微信服务器
整体第三方登录流程如下:
1:用户操作直播app,选择第三方微信登录
2:直播app,调用微信客户端,确认授权,微信客户端将授权信息发送到微信服务器
3:微信服务器,将授权码返回给直播app客户端。
4:直播app客户端,拿着授权码请求直播服务器。
5:直播服务器拿着code码,去微信服务器获取access_token令牌,微信服务器返回access_token令牌给直播服务器。
6:直播服务器,将access_token返回给直播app客户端
7:直播app拿着access_token去调用微信客户端,获取微信的一些基本信息,比如用户名,头像
8:拿到这些信息之后,直播app就完成了第三方登录。

16、第三方支付流程

首先整个流程,包含用户,商户客户端,支付宝客户端,商户服务端,支付宝服务端这些内容。
1:用户操作商户客户端,选择支付宝方式付款。
2:携带订单信息请求商户服务端,获得签名后的订单信息。并将该信息返还给商户客户端。
3:商户客户端调用支付宝客户端支付接口,支付宝客户端将支付请求提交给支付宝服务端。
4:支付宝服务端处理支付信息,完成支付,并将支付结果返回给支付宝客户端。
5:支付宝客户端将支付结果返回给商户客户端。商户客户端将支付结果发送给商户服务端,商户服务端验证签名,并解析支付结果。
6:商户服务端将支付结果返回给商户客户端,商户客户端显示支付结果。

17、https请求跟webservice请求有什么区别?

  • webService接口:是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。可以使用的工具有SoapUI、jmeter、loadrunner等
  • http api接口:是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。可以使用的工具有postman、jmeter等

18、接口测试为什么要参数化

  • 一种情况是接口依赖问题:举个例子,例如购物车接口请求数据需要登录接口里面返回的token值,这个存在接口之间依赖关系的时候,我们需要把依赖字段值进行参数化提取出来,然后再调用
  • 第二种情况是公共参数问题:比如接口中会有一些公共参数,每个接口里面都存在,如果值是固定的,那我们可以把这些进行参数化记录,减少在每个接口里面书写出错的问题

19、为什么要做接口测试?

①、可以发现很多在页面上操作发现不了的bug
②、检查系统的异常处理能力
③、检查系统的安全性、稳定性
④、前端随便变,接口测好了,后端不用变

20、抓包测试主要做什么?

整体上讲
抓包测试可以将请求和响应的数据包进行截获、重发、编辑、转存等操作
具体上说的话:
抓包可以定位前后台bug。例如页面数据展示有问题,需要定位bug在前台还是后台,抓取这个页面的请求,先跟接口文档进行对比,查看请求方式,请求路径,请求参数等是否正确,如果不正确bug属于前台;如果请求没有问题,在观察响应部分,如果响应部分有问题(数据没有正常返回),后台的bug;如果后台修改完成之后,数据仍然不能够正确展示,bug属于前台

还有抓包可以判断接口是否安全,比如判断前后端接口数据传输的时候,是否进行了加密,加密方式是否安全可靠
另外,抓包可以通过断点方式编辑请求,修改数据。抓包工具还可以模拟本地数据,模拟弱网等操作。

21、当从一个浏览器上输入www.baidu.com 到服务器返回内, 经历了哪些过程?

会先在本地的hosts文件中查找映射ip,如果存在则直接访问该ip对应的服务器,如果不存在则访问互联网域名解析器DNS服务器解析, 通过ip访问百度的服务器.
通过tcp的三次握手建立连接,使用http协议将请求数据发送给服务器,服务器软件要对数据进行处理,跟数据库进行交互.软件服务器将处理结果通过响应反馈给前端,通过tcp的四次挥手断开连接,前端对返回的数据进行渲染展示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值