测试面试基础(一)

为什么要在一个团队中开展软件测试工作? 

为了验证软件是否可用,是否可上线,同时避免此问题线上发生,避免公司发生损失

 

一份测试计划应该包括哪些内容?

项目背景、项目简介、项目目的、测试范围、人员分工、资源配置要求、进度计划制定、参考文档、常用术语、提交文档、风险分析。

 

您是否了解以往所工作的企业的软件测试过程?如果了解,请试述在这个过程中都有哪些工作要做?分别由哪些不同的角色来完成这些工作? (对于软件测试部分,可以简述) 

1、产品开发测试共同参与进行测试需求的分析:确定测试的资源和技术需求

2、测试人员根据需求制定相应的测试计划 (包括测试环境,着重测试点)并进行评审

3、根据测试计划指定详细的测试用例,并评审,查漏补缺 ,补全之后在禅道上写好测试用例

4、对bug进行跟踪管理

5、总结测试报告并实时更新

您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作? 
金融类测试,催收后台管理测试,二手车后台管理的测试等类似的B/S架构的csm管理系统以及基本的核心接口测试

最擅长根据需求以及测试思维导图编写完善的测试用例。这种类型的功能测试

(BS能够完成跨平台,客户端零维护,可是个性化才能低,响应速度较慢。)


您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……) 

易用性测试 - 界面的友好性,操作方便性等。

功能测试 - 主要是黑盒测试为主,白盒测试辅助进行回归测试

安全测试 - 以测试工具检测测试漏洞以及系统是否存在sql注入,xss攻击等安全隐患。

兼容测试 - 不同的硬件平台上、不同的应用软件之间、不同的操作系统中、不同的网络环境中是否可以正常的运行 可以通过人工测试或者是以webdirver(webdirver是seleium里面的一个包是驱动 from  selenium import webdriver)脚本来驱动各平台的兼容情况

性能测试 - 包括并发测试和压力测试等,通过jmter或者loadluner等工具进行性能测试


请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。 

黑盒测试一般是无需了解代码以盒子原理进行的测试

白盒测试是以代码为突破口的测试,主要通过逻辑构建业务场景来测试系统

单元测试是最小的测试单位,可能是某一个方法或者某一个类,一般由开发进行测试

集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作

系统测试是是对已经集成好的软件系统进行彻底的测试目的是发现软件潜在的问题,保证系统的正常运行

验收测试(回归测试)部署软件之前的最后一个测试,操作目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的功能和任务。

测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的? 
测试计划的目的是为了完善自己对项目需求的认识和理解,理清测试思路和测试重点

测试计划工作的内容包括:设计文档的编写和用例的编写,都是测试核心


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

理解业务需求,整理清楚业务流程


您所熟悉的测试用例设计方法都有哪些?及方法的应用场景

1、等价类划分  一般功能都需要等价类,比如说用户登录,用户名密码输入,支付金额输入

2、边界值法 一般用于支付类输入

3、因果图设计法 主流业务都需要

4、判定表设计法(判定表只是因果图里面的一部分) 3 4一般是一起出现  比如说财务系统工资评审

5、正交试验法、场景法 用例是浏览器兼容性测试


您认为做好测试用例设计工作的关键是什么? 

理解业务需求,整理清楚业务流程,做好测试计划,记录好前置条件,准备合理的测试数据。

请以您以往的实际工作为例,详细的描述一次测试用例设计的完整的过程。 
以二手车后台为例:

制作测试计划,导图,大致分为权限管理,数据运营,外呼管理,营销管理,客户管理,组员管理,然后分别针对每个菜单下的子模块进行细分业务测试梳理,对各模块做业务流程分析,制作测试用例。并梳理数据库功能模块与数据库表的关系。并继续完善用例,进行审查,做到查漏补缺


您以往的工作中是否曾开展过测试用例的评审工作?如果有,请描述测试用例评审的过程和评审的内容。 

评审作用:主要是测试用例对软件需求的覆盖程度,对于相关边界是否考虑,是否针对复杂流程准备多套测试数据,是否有专门针对非功能性需求的测试。 

1、首先测试以邮件的形式发给相关项目的人员,(参与项目人有项目经历,产品,开发,测试小组人员。)

2、然后申请会议室来发起用例评审

3、先从冒烟用例进行评审,告诉开发将以这些功能点作为主流程,如果不全可以补充

4、接着按模块进行详细用例描述的讲解,让产品和开发讨论是否符合需求以及是否有遗漏点

5、如果有遗漏点简单记下,会后补充完整。

6、如果问题过多并遗漏重要流程,发起第二次评审,根据实际情况为准

7、如果所有用例评审完成,开发产品未补充,一起确定此用例为接下来使用的用例,出现问题提交bug管理工具。

一个项目:开发3-4个,测试2个人。


您以往是否曾经从事过性能测试工作?如果有,请尽可能的详细描述您以往的性能测试工作的完整过程。 
做过金融产品支付系统的压力测试

1、申请生产环境是否可做压力测试

2、根据需求梳理测试思路

3、根据测试思路编写测试用例,主要是以模拟多人同时支付的场景。

4、根据性能测试工具jmter的组件编写测试脚本,设计多人虚拟数

5、把编写好的测试脚本分别发到多台测试服务器上,同时启动jmter集群测试,进行压力测试并记录支付系统服务器的运行情况,产生性能测试报告,找出系统瓶颈,方便运维开发人员调试优化系统。(为什么要多台服务器:这样能排除本身机器的瓶颈,一台服务一般压不坏。我的服务器作为主节点,其他服务器作为分节点,一般会让其他测试人员协助测试)

6、通过cokkie伪登录,构建支付接口参数,设一个基数,陆续增加虚拟人数。

并发情况:设计集合点(在同一个时刻发送请求)压力是陆续发送

 

对金融支付接口测试流程(接口测试主要是做参数校验和业务逻辑测试):

1、以真实支付接口先进行冒烟测试,测试通过以后通过挡板来进行各业务场景的测试,模拟真实系统返回情况,主要以mock数据的形式进行测试(就是假数据)

您在从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。

jmter 可以设置虚拟数达到测试目的

loadRunner 

您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么? 
合理设计场景,真实达到测试目的,压测测出系统的承受能力,(前公司并发测试出最多并发能力并发一千左右)

性能测试的关键:关键是测试脚本的录制,测试时候测试环境的干净。不能让环境影响性能,要么是空白电脑做性能,要么就是多台电脑共同做性能取平均值


在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录? 

bug编号;

bug严重级别,优先级;

bug产生的模块;

首先要有bug摘要,阐述bug大体的内容;

bug对应的版本;

bug详细现象描述,包括一些截图、录像....等等;

bug出现时的测试环境,产生的条件即对应操作步骤;

 

简述bug的生命周期? 

1, 有效地记录BUG 2, 使用BUG模板 3, 评价BUG优先级和严重性 4, BUG的生命 5, 维护BUG数据库

 

什么是cmr系统?

crm就是客户关系管理系统,就是后台系统
 

您以往所从事的软件测试工作中,是否使用了一些工具来进行软件缺陷(Bug)的管理?如果有,请结合该工具描述软件缺陷(Bug)跟踪管理的流程。 
禅道

发现问题-提交禅道-指派给开发-开发解决问题并更改状态为已修改-测试进行复测-问题解决关闭bug,未解决重新激活并提示开发更改bug-复测之后关闭bug

 

您如何看待软件过程改进?在您曾经工作过的企业中,是否有一些需要改进的东西呢?您期望的理想的测试人员的工作环境是怎样的? 
软件改进是不断优化的过程,可以减少bug出现,减少损失,提升用户体验

期待工作环境是团队齐心协力共同为项目出力


您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么? 

面对面的沟通,对 BUG 有准确的描述

在团队中建立测试人员与开发人员良好沟通中注意以下几点:

一真诚、

二是团队精神、

三是在专业上有共同语言、

四是要对事不对人,工作至上;

当然也可以通过直接指出一些小问题,而不是进入BUG 跟踪系统来增加对方的好感;

 

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

1、感觉这是一个有挑战性的工作;工作越久越能感觉到做好测试的难度和乐趣

2、通过自己的测试,能使软件产品越来越完善,感觉很快乐

 

你自认为测试的优势在哪里?

有韧性、有耐心、做事有条理性、喜欢面对挑战、有信心做好每一件事情、较强的沟通能力

以前的经理处都得到了很好的评价表明我做的很好

 

软件测试项目从什么时候开始?为什么?

软件测试应该在需求分析阶段就介入,因为测试的对象不仅仅是程序编码,应该对软件开发过程中产生的所有产品都测试,

并且软件缺陷存在放大趋势,缺陷发现的越晚,修复它所花费的成本就越大

 

什么是回归测试?

(1)用例回归:是过一段时间以后再回头对以前使用过的用例在重新进行测试,看看会重新发现问题。  

(2)bug回归:就是在新版本中,对以前版本中出现并修复的缺陷进行再次验证,并以缺陷为核心,对相关修改的部分进行测试的方法(这种可以做成自动化的方式)。

 

什么是兼容性测试?请举例说明如何利用兼容性测试列表进行测试

兼容性:主要验证软件产品在不同版本之间的兼容性。

(1)向下兼容:测试软件新版本保留它早期版本功能的情况;

(2)交错兼容:验证共同存在的两个相关但不相同的产品之间的兼容性。

 

什么是静态测试、动态测试、黑盒测试、白盒测试、α测试 β测试

  • 静态测试是不运行程序本身而寻找程序代码中可能存在的错误或评估程序代码的过程。  
  • 动态测试是实际运行被测程序,输入相应的测试实例,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。
  • 黑盒测试一般用来确认软件功能的正确性和可操作性,目的是检测软件的各个功能是否能得以实现,把被测试的程序当作一个黑盒,不考虑其内部结构,在知道该程序的输入和输出之间的关系或程序功能的情况下,依靠软件规格说明书来确定测试用例和推断测试结果的正确性。
  • 白盒测试根据软件内部的逻辑结构分析来进行测试,是基于代码的测试,测试人员通过阅读程序代码或者通过使用开发工具中的单步调试来判断软件的质量,一般黑盒测试由项目经理在程序员开发中来实现。
  • α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成
  • β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成

 

如何测试一个纸杯?

易用性:杯子是否烫手、是否有防滑措施、是否方便饮用

功能度:用水杯装水看漏不漏;能不能装热水;

安全性:杯子有没有毒或细菌,装热水会不会炸裂

可靠性:杯子从不同高度落下的损坏程度

可移植性:杯子在不同的地方、温度等环境下是否都可以正常使用

兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等

用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述

疲劳测试:将杯子盛上水(案例一)放24小时检查泄漏时间和情况;盛上汽油(案例二)放24小时检查泄漏时间和情况等

 

安卓和ios的区别

https://www.jianshu.com/p/0c56c2458e4a

 

app网络崩溃是什么原因

1、信号不好

2、抓包抓接口看接口是否可以正常调用

 

app崩溃

1、接口报错,返回格式不对;

2、内存不足;

 

get和post请求的区别;

1.相对post请求是安全的,因为get只是查询数据功能,而post是要更新数据的

2.get请求参数放在url?后,post放在http请求主体里面

3.get请求可以被缓存,历史记录里面有记录,而post请求不可以被缓存,历史记录里查询不到

 

app查看日志是怎么查的;

adb logcat

 

APP常见崩溃的原因:

     设备碎片化:由于设备极具多样性,App在不同的设备上可能有表现不同。

  带宽限制:带宽不佳的网络对App所需的快速响应时间可能不够。
  网络的变化:不同网络间的切换可能会影响App的稳定性。
  内存管理:可用内存过低,或非授权的内存位置的使用可能会导致App失败。
  用户过多:连接数量过多可能会导致App崩溃。
  代码错误:没有经过测试的新功能,可能会导致App在生产环境中失败。
  第三方服务:广告或弹出屏幕可能会导致App崩溃。

App崩溃的测试用例设计:
  1 验证在有不同的屏幕分辨率,操作系统和运营商的多个设备上的App行为。
  2 用新发布的操作系统版本验证App的行为。
  3 验证在如隧道,电梯等网络质量突然改变的环境中的App行为。
  4 通过手动网络从蜂窝更改到Wi-Fi ,或反过来,验证App行为。
  5 验证在没有网络的环境中的App行为。
  6 验证来电/短信和设备特定的警报(如警报和通知)时的App行为。
  7 通过改变设备的方向,以不同的视图模式,验证App行为。
  8 验证设备内存不足时的App行为。
  9 通过用测试工具施加载荷验证App行为。
  10 用不同的支持语言验证App行为。 

 

2023年补充:

印象最深的一个bug是什么?

  项目由北京推广至全国之后,发现一个偶发问题,店长分派采集任务之后采集人看不到要采集的任务,经排查之后才知道分派的采集人有兼岗,两个岗位分别为经纪人跟商圈经理,导致查询数据出现问题。

 

 

请求接口中常用的返回状态码?
  1XX 信息提示
  2XX 成功
  3XX 重定向 发送一个请求时,这个请求多次请求了服务器的多个资源
  4XX 客户端错误
  5XX 服务器错误
 
cookie session token有什么相同点和不同点
  相同点:都是用于鉴权并且都是服务器生成的
  不同点(原理)
  cookie保存在客户的浏览器上,cookie不安全,可以去分析存在本地的cookie进行cookie欺骗
  session保存在服务器的内存中,默认保存30分钟,比cookie安全,缺点就是当登录的用户越多,占用的服务器资源越多。session一般会生成一个sessionid,sessionid可以通过cookie传输。
  token存储在服务器的数据库中,通过登录或接口获取,然后后续所有的接口必须 要求传token才能请求成功,token也可以通过cookie传输
 
0206新增
没有接口文档如何进行接口测试?
  方式一:可以使用 Fiddler , Charles 抓包工具抓取接口数据之后整理成接口文档,如果有不清楚的字段,找时间集中找开发验证,然后在进行接口剩式。
  方式二:可以通过 Jmeter 的代理录制功能,先把接口请求录制下来形成接口文档,然后再逐一的进行接口测试
 
接口测试中,依赖登录状态的接口如何测试?
  依赖登录的接口本质上是每次发送请求的时候需要带上 cookie 和 session 才能够发送成功。在请求时需要加上 cookle 和 sesslonid ,当然:如果是通过 Postman 来测试, Postman 会自动去管理,如果是通过 Jmeter 来测试,需要增加 Cookie 管理器组件。如果是通过代码来实现接口测试,那么需要生成 sesion 对象,然后通过 sesion 对象来发送请求。
 
你平常做接口测试的过程中发现过哪些 bug ?
  常规 Bug :接口没实现,没有按接口文档返回结果,输入异常值(空值,特殊字符),接口报惜,没有返回合理的措误提示。
  如:购买商品接口,其中有价格参数,我去测试时把商品的价格改成﹣3,购买成功。
  权限 Bug :
  如:该接口应该只有管理员有权限操作,但是用普通用户去请求请求成功了,没有提示权限不足
  性能bug 安全漏洞
 
如何分析一个bug是前端还是后端
  通过抓包工具,查看请求报文,如果请求报文与接口文档不一致,则为前端bug
  如果请求报文和接口文档一致,那就看返回结果,如果返回结果不对,则为后端问题
 
依赖于第三方数据的接口如何进行测试?
  接口依赖可以通过postman搭建Mock服务,但是postman中Mock的访问次数最大值为1000.也可通过Servlet ,Flask技术来实现接口Mock服务
 
对于加密接口、签名接口如何进行测试?
在调用接口时,首先要弄明白加密方式:如
对称式的加密方式(私钥加密):常用的是Base64,不常用的是DES、AES
非对称的加密方式(双钥加密):RAS加密方式
RAS加密方式:由一个私钥密码生成双钥(公钥和私钥),公钥加密,私钥解密,私钥加密,公钥解密
只加密不解密:MD5加密、SHA1、SHA3、
自定义加密规则,混合加密方式。
了解加密(签名)规则之后,在请求接口之前要先对参数做对应的加密,再发送请求。对于单一的加密方式,postman和jmeter是可以实现的。postman可以通过JavaScript脚本实现,jmeter通过java脚本实现
 
接口自动化和 web 自动化有多少 case ?覆盖率是多少?全部执行完需要多久?
1)接口自动化测试的 case 数是根据接口数而定,100个接口,接口自动化 case 大概在2000-3000之间。接口目动化的厦盖率可以达到100%, web自动化测试 tcase 是根据业务用例而定,10000个功能测试的用例,那么 web 自动化的用例,大概2000-3000左右。覆盖率一股在30%左右。所有的用例全部执行完成在30分钟﹣60分钟左右。·
 
接口自动化测试怎么做 WEB自动化测试怎么做?
1)项目组对自动化可行性进行分析,考虑自动化能够呗实施到什么程度
2)调研测试团队对于自动化技术的熟悉程度,一般会伴随着demo演示
3)制定计划 搭建测试框架、改善框架中存在的问题、编写自动化用例、由leader搭建框架,组员编写脚本,无人值守Jenkins,维护脚本
4)把自动化流程化,框架需要出使用文档和制定规范
5)把自动化框架标准推广到其他项目
 
什么是POM模式?
POM:page object model页面对象模型,将一个页面当作一个对象,页面元素为对象的属性,页面的操作为对象的方法。一般分为三层:基础封装层、页面对象层、测试用例层
 
说说你对数据驱动和关键字驱动的理解?
数据驱动是从数据文件( Excel , CSV , YAML ,数据库)读取输入、输出的数据,然后通过变量传入自动化用例用例中,在整个过程中,数据的读取,测试状态、测试信息全部在测试用例里面,测试数据都是数据文件中,通过修改数据达到驱动自动化用例执行的方式叫数据驱动。
关键字驱动是从面向对象的思维出发,同样的业务逻辑会封装成一个函数,这个函数名就叫关键字,不同的关键字实现不同的业务逻辑,当所有的业务逻辑都可以通过调用关键字来实现的时候,就是关键字驱动框架
一般情况下企业里面都是数据驱动+关键字驱动一起使用。
 
web 自动化测试用例如何设计?如何提高 web 自动化用例脚本的稳定性?
用例设计:
自动化用例是从功能测试用例里面提取出来的,主要提取的是冒烟用例和回归测试的用例,提取需要遵循以下原则。
1.优先覆盖核心功能用例
2.尽量不要选复杂的用例
3.选取一些重复执行的的用例。
4.一般选取正向用例。
如何提高稳定性:
1.尽量使用相对路径定位元素。
2.定位元素需要封装显示等待。
3.用例和用例之间尽量避免依赖。
4.加入用例失败重写机制。
5.自动化的环境区分开其他环境。
 

原创作品转载请注明出处 https://www.cnblogs.com/wangxuetest/p/13233497.html

写作不易,如果能帮助到你可以给点个赞哦

posted @ 2020-07-04 10:25  搬砖小天使  阅读(236)  评论(2编辑  收藏  举报