测试面试题整理(2022.02.28)

软件测试基础

工作内容

1、按测试内容划分,测试有哪些种类?

功能测试、界面测试(UI界面)、安全测试、兼容性测试、易用性测试(否容易上手)、性能测试

2、软件开发(测试)的流程是怎么样的?

V模型:需求分析-概要设计-详细设计-单元编码-单元测试-集成测试-系统测试-验收测试

W模式:需求分析-概要设计-详细设计-编码-接口集成-系统构建-系统安装

需求分析测试-概要设计测试-详细设计测试-单元测试-集成测试-系统测试-验收测试

测试流程:参与需求宣讲会,进行需求分析及答疑解惑,理解需求及设计

测试负责人编写测试计划,分配测试任务,协调测试资源

测试人员根据需求分析编写测试用例,测试用例评审

进入测试阶段,测试人员搭建测试环境,创建测试数据,执行测试用例,编写测试报告,跟踪记录bug

测试人员评估总结

3、印象最深的bug

CRM系统-居间协议-分摊金额功能

举例,有1000块分配给3个订单,一键平均分摊,最开始此处是由前端负责计算,导致金额除不尽,金额有极小误差。发现问题后,转由后端进行计算,分配到最后一个订单时,采用全部金额-已分配金额=最后一个订单金额

CRM系统-部门组织架构调整

由于部门组织架构调整,所以合同审批人也需要调整,开发流程配置错误,导致法务部节点与城市负责人节点审批对调

4、对CI/CD的理解

CI:持续集成

CD:持续交付/持续部署

持续:意味着随时可以运行

CI概念

是在源代码变更后自动检测、拉取、构建和进行单元测试的过程

CD概念

持续交付:软件可以随时发布导师生产环境中,通常上是自动化的将更改推送到临时系统

持续部署:自动化的将更改推送到生产环境中

持续集成优势

  • 更快地检测错误
  • 更少集成问题
  • 避免问题重复

持续交付优势

  • 确保每个更改都是可发布的:在发布前测试所有内容,包括部署
  • 降低每次发布的风险:使发布变成很平常的一件事
  • 更频繁地提供价值:可靠的部署意味着更多的发布版本
  • 加速与客户的反馈循环:将客户的反馈更快速的反馈到产品上

5、对devops的理解

DevOps即Development和Operations的组合词,是一组过程、方法与系统的统称,用于促进开发应用程序或软件工程、技术运营和质量保障QA部门之间的沟通、协作与整合

DevOps可以定义为开发和IT运营的一致性,以及更好的沟通和协作。

6、什么是BDD 什么是TDD

BDD:BDD是TDD的一种衍生,通过特定的BDD框架,用自然语言或类自然语言,按照编写用户故事或者用户用例的方式,以功能使用者的视角,描述并编写测试用例

TDD:编写新代码之前(开发之前)编写和纠正失败的测试

测试驱动开发是在实际开发应用程序之前开发和运行自动化测试的过程。

7、APP的页面如何分别H5还是native原生页面

方法1:断网

断网后,显示404的页面就是H5,正常显示的就是原生页面

方法2:复制文字的提示

H5页面复制文字时会出现选择文字或粘贴功能,否则就是原生页面

方法3:加载方式

打开新的页面,上面有一条加载进度条,页面就是H5页面,否则就是原生页面

方法4:查看页面使用有网站提供标识

下拉页面时,显示网页提供的,是H5页面,否则是原生页面

方法5:能打开console

H5页面可以打开console调试,原生页面没有

方法6:页面刷新

页面刷新会短暂的闪一下,是H5页面,否则是原生页面

测试方法

1、黑盒测试方法

等价类划分

        用于输入框,符合输入条件的为有效等价类,不符合的为无效等价类

边界值法

        小于小边界,等于小边界,等于大边界,大于大边界,边界中间值

        例子:比如规定x的范围是 1<x<10,那么边界值覆盖为0,1,5,10,11

因果图

        根据程序需求说明,找到对应的因(程序输入条件)和果(程序输出结果或状态改变)

        通过因果图转换成判定表

判定表

        输入条件有多个,输出结果也有多个

        不同输入条件组合,导致不同的输出结果

        1)确定所有输入条件及组合后的输出结果

        2)列出所有输入条件和输出结果

        3)填入输入条件

        4)填入输出结果

        5)简化表格,合并相似规则

错误推测

        凭借测试经验或直觉判断是否出现错误

正交排列

        用于实验次数特别多,选择其中的一部分来代表统一水平

场景(流程)法

        根据一个事务的正确流程,称为基本流,反是出现故障或者阻塞的都是备选流
 

2、白盒测试方法

概念:检查程序的内部结构、逻辑、循环和路径

逻辑覆盖:以程序的内部逻辑结构为基础,分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖等。

基本路径测试:在程序控制流程的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。

3、单元测试概念

是指对软件中的最小可测试单元进行检查和验证

C语言中一般指的是一个函数

Java语言中一般指的是一个类

4、集成测试概念

单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。 

5、测试用例编写与设计思路

拿到需求后,根据业务经验测试经验进行需求理解分析

利用XMind提炼出测试点

依据需求原型图、UI设计图、测试点,结合黑盒测试方法进行编写测试用例

6、灰盒测试概念

由方法和工具组成,这些方法和工具取材于的应用程序内部知识和与之交互的环境,能够用黑盒测试以增强测试效率、错误发现和错误分析的效率。

是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态

测试文档

1、测试用例包含哪些要素

用例编号、用例标题、被测模块、前置条件、测试数据、操作步骤、预期结果、测试人员、测试优先级、测试类型

2、测试报告包含哪些要素

被测系统及版本号

测试资源描述:测试的时间地点,软硬件环境,测试组网图,测试周期,测试机器

测试时间统计:测试任务安排的详细时间

测试用例分析:测测试用例的执行情况分析

缺陷情况分析:缺陷分布情况,严重程度,遗留问题

测试版本质量分析:测试版本的质量如何

测试活动设计评估:测试用例写的怎么样

测试改进:测试还要那些不足可以提升的方面

3、测试排期如何安排 依据是什么

根据测试组的流程规范

开发工期、测试工期

开发工时人天、测试工时人天

开发人力比、测试人力比

再依据实际测试人员对需求的理解,提取的测试点难易程度,结合风险意识进行测试工时评估及测试排期安排

4、怎么构造测试数据

举例子,CRM-单次合同数据

先对需要的测试数据进行数据建模,即数据具备什么字段、什么流程状态、什么生命状态、什么操作权限

创建方法1:

使用新增合同的接口进行创建,按照开发提供的接口文档写入需要的信息

创建方法2:

在数据库中直接插入

自动化测试

1、举例说明,你测试的系统有哪些功能可以转成自动化

CRM系统-接口自动化

  • 创建客户、审批客户
  • 创建合同、审批合同、关联订单、审批订单、关联居间协议、审批居间协议
  • 对指定合同或订单进行回款
  • 对指定合同开具发票

CRM系统-UI自动化

  • 审批客户
  • 审批合同、作废合同、审批订单、作废订单、审批居间协议、作废居间协议
  • 对指定合同或订单进行回款
  • 对指定合同开具发票

2、判断功能是否能进行自动化测试,依据有哪些

接口自动化测试判断依据:大部分常用接口进行自动化,一方面可作为半自动的数据用例,另一方面保证每次版本迭代回归测试基础功能接口正常

UI自动化测试判断依据:比如web端,每次版本迭代页面改动很少甚至不改变时,就可对此页面进行UI自动化

3、xpath定位方法

一般会结合id、name、tag_name、class、link_text、partial link text

举例:

使用id定位 -- driver.find_element_by_xpath('//input[@id="kw"]')

使用class定位 -- driver.find_element_by_xpath('//input[@class="s_ipt"]')

 /bookstore/book[1]
选取属于 bookstore子元素的第一个book元素。

 /bookstore/book[last()]
选取属于 bookstore子元素的最后一个book元素。

 /bookstore/book[last()-1]
选取属于 bookstore子元素的倒数第二个book元素。

 /bookstore/book[position()<3]
选取最前面的两个属于 bookstore元素的子元素的book元素。

 //title[@lang='eng'l
选取所有 title元素,且这些元素拥有值为eng的lang属性。

 /bookstore/book[price>35.00]
选取 bookstore元素的所有book元素,且其中的 price元素的值须大于35.00

pookstore/book[price>35.00]/title
选取 bookstore元素中的book元素的所有 title素,且其中的 price元素的值须大于35.00

 nodename           选取此节点的所有子节点。

/                            从根节点选取。  定位子元素

//                         从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。定位子孙元素

.                           选取当前节点。

..                          选取当前节点的父节点。

 @                          选取属性。

4、如何定位动态元素

动态元素有2种情况,一个是属性动态,比如id是动态的,定位时那就不要用id定位。还有一种情况动态的,那就是这个元素一会在页面上方,一会在下方,飘忽不定的动态元素,定位方法一样按F12,根据元素属性定位(元素的tag、name的步伐属性是不会变的,动的只是class属性和styles属性)。

5、定位悬浮在web页面上的元素,例如页面上会动态的飞来飞去的广告

同4

6、列举一下自动化测试工具

接口测试自动化工具:postman、jmeter、airpost

UI自动化工具:selenium IDE

APP自动化工具:appium

测试工具

1、fiddler的抓包原理

fiddler处于客户端与服务器之间的http代理,记录其中所有的http或https请求,就是在浏览器跟服务器之间简历一个代理服务器,位于OSI模型的应用层

fiddler开启后,网络请求的流向:

1 客户端向web服务器发送请求,先经过fiddler代理服务器

2 fiddler代理服务器截取到客户端请求的报文,再转发给web服务器,转发前可修改请求报文参数

3 web服务器处理完请求返回响应报文,fiddler代理服务器截取响应报文

4 fiddler处理响应报文返回给客户端

2、fiddler怎么抓取HTTPS请求

抓HTTPS请求的前提:需要配置CA证书

3、wireshark抓包的头部有什么

性能测试

1、性能测试的流程

2、性能测试需要关注哪些方面

游戏测试

1、印象最深的游戏?这个游戏哪些方面吸引你

2、玩游戏的过程中发现的bug,分析一下原因

3、如何对一个大地图游戏进行测试,有哪些测试点

4、测试程序设计的不合理与测试程序完善但是测试人员出现事务,哪一项更严重

5、游戏测试的定位与职责

6、为什么游戏采用客户端与服务器架构

7、是否有遇到LOL脚本,其原理是什么

8、RPG游戏的脚本与LOL竞技游戏脚本的对比

9、在项目上线前,你发现了一个触发概率极低的偶然性bug,但是bug非常致命会造成生产事故,你如何处理这样的事情

10、做游戏测试的初衷

11、假设你做游戏,你会偏向哪一种类型(RPG/MOBA/FPS/RTS)

12、游戏测试的过程中用到的测试工具

软件测试实际经历

1、网页崩溃了,你如何排查原因

程序:

(1)是否是在高并发的时间段造成了系统崩溃

(2)如果是导入导出操作,导出大量数据造成内存溢出

(3)数据查询时数据量太大造成超时

服务器:

内存、CPU、网络带宽

2、用户在上传个人信息的头像时提示失败,你如何排查原因

(1)权限问题

(2)照片格式不符合系统规定

(3)图片占用存储容量太大

(4)尺寸不符合系统规定

(5)内存泄露,用户频繁上传头像,程序未处理好资源释放

(6)网络,网络差、弱等问题上传失败

(7)服务器异常,响应超时

分析思路:

上传头像是需要通过接口的,先抓包看是前端问题还是后端问题

如果是后端问题就上服务器查看失败时间节点的日志

总结:

图片限制:尺寸、大小、格式

前端:上传图片组件bug

接口:接口挂了、接口参数传错了、服务器文件上传大小受限、数据库挂了、命中风控策略

对象存储服务异常:访问对象存储服务超时

3、APP闪退的原因, 如何分析

(1)网络异常,导致服务器响应不及时

(2)APP的版本过低,APP的SDK和手机系统不兼容;存在部分api老版本有,新版本没有,造成对象为空的闪退

(3)Android系统的缓存过多,导致手机变卡引起APP闪退

(4)接口设计不合理,查询的数据量太大,占用大量内存导致闪退

4、APP偶然的闪退,怎么排查

5、网页卡顿,排查原因

6、10%的用户使用不了某个功能,你从哪些方面考虑这类问题

7、登录按钮不能点击,如何分析

8、给系统做压测的时候,QPS一直上不去,如何分析

9、APP提示无法连接网络,如何分析

10、如何判断bug属于前端还是后端,依据是什么

实战案例

1、微博发布动态,列举测试点

2、自动售货机,测试用例设计

3、微信发红包测试用例设计

4、抖音直播测试用例设计

5、微信扫码支付测试用例设计

6、百度首页测试用例设计

7、微信点赞功能,列举测试点

8、微信朋友圈点赞功能,列举测试点

9、微信上线一个新的好友推荐功能,列举测试点

10、微信换头像测试用例设计

11、抖音视频安全性,安全测试的测试点

12、手机浏览器输入www.baidu.com打不开页面,如何排查

13、一个输入框,设计测试用例

14、登录界面测试用例设计

15、接口编写测试用例

16、搜索功能,列举测试点

框架

1、selenium的运行原理

2、selenium的元素定位方式

3、appium的运行原理

计算机基础

操作系统

Linux

1、切换目录

2、统计文本中关键字出现的次数

3、查找当前目录下所有后缀名为.py文件

4、查看指定端口进程

5、cd - 和cd ~区别

6、查看某个进程

7、查看日志,查看后500条日志

8、awk的用法

9、查看系统性能

10、查看剩余磁盘空间大小

11、查看目录占空间大小

12、xarg的用法

13、从本地计算机传文件到服务器中

14、测试服务器直接怎么进行文件拷贝

15、sed用法

16、杀死进程

17、递归删除一个目录下的所有文件

18、查看内存大小

19、查看CPU使用情况

20、重启Linux服务器

21、打印一个文件的第500-1000行

进程/线程

1、进程与线程的区别

2、什么阶段CPU处理进程最慢

3、死锁的条件

4、进程间的通信方式

5、线程间通信方式

6、线程同步机制

文件存储

1、静态存储与动态存储的区别

2、视频在服务器的存储有几种方式

3、CDN的作用

4、为什么前端的静态资源要上传到CDN上

其他

1、系统资源包括哪些

2、IO操作概念

3、内存

4、硬盘

5、CPU

6、什么操作比较消耗CPU

7、什么是UTF-8,什么是UNICode

8、IO多路复用的概念,及实现方式

9、分布式概念,分布式的优势

数据库

1、非关系型数据库有哪些

2、Redis的数据结构

3、Redis与memcached的区别

4、Redis的用途

5、Redis一秒能写入多少数据

6、Redis速度快的原因

7、Redis怎么设置过期时间,哪些场景适合缓存更长时间

8、缓存雪崩的概念

9、缓存击穿概念,缓存穿透概念,及两者间的区别

10、MongoDB适合用在哪些方面

11、Redis适合做消息队列吗,为什么适合

12、Redis的数据是存储在内存中,突然断电造成数据丢失,Redis数据持久化

13、数据库优化方式

14、关系型与非关系型数据库的区别

15、数据库事务的用途,哪些场景适合用事务

16、数据库索引的用途,什么是联合索引

17、主键适合自定义还是自动

18、外键概念,为什么大公司有时候不建议使用外键

19、索引设置的越多越好吗?索引的优缺点

20、innoDB基于什么实现

21、数据库死锁的怎么发生的,如何处理

22、事务的特点

23、数据库设计三大范式

24、一张数据表不建议超过多少行

25、为什么进行分表分库

26、分库分表的几种方式,举例子

27、数据库怎么拷贝数据

28、删除数据的方式有哪些,说是drop table 跟truncate table的区别

SQL

1、查找一个学生两门功课都大于80分的姓名

2、2个表中工号为“123”的人的所有信息

3、一个人员表,一个部门表,人员表存了部门id,查看人员表各部分表所有数据

4、查询一个城市表里面重复的城市名,并统计重复次数

5、查找一个学生成绩表中平均分大于90分的学生名单

6、查找学生成绩表中平均成绩最高的同学

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值