软件测试面试题合集

软件测试面试题

1.介绍项目

  1. 项目基本情况
    项目是一个什么项目,一句话概括,用户量多少,日活多少,项目持续时间,迭代频率。项目有哪几个角色,每个角色有什么功能模块。

  2. 项目测试情况
    测试人员数,测试数据,自己负责的模块,担任的角色,完成的工作

  3. 项目过程中用到的测试工具和框架

比如:XXX项目是一个B/S架构对的web项目,管理基金情况的系统。用户量在20w左右,日活大概10w,项目持续了2年时间,每个月2次迭代。项目包含申请用户,购买基金,赎回基金,基金清盘等模块。一个测试人员,每次迭代大概两周测试,从需求评审,测试用例,测试执行,跟踪bug,测试报告全由我负责。测试过程主要是在页面执行命令,验证数据库数据修改正确,结合日志去发现解决问题。

2.印象深刻的bug

选择的Bug不能太低级例如UI级别,也不能太严重例如生产事故。通过步骤,结果,预期来描述一下Bug,然后分析bug产生的原因,通过查看请求参数,查看响应参数,查看数据库表,查看服务器日志,查看环境网络来排查的。
从这个bug中获得的启发。

3.Bug的生命周期

提交-指派-确认-解决-回归验证-验证通过关闭bug,否则激活

4.开发不认同BUG怎么办

如果是无法重现的,可以先找到服务器日志,然后在测试环境下给开发演示讲解一遍Bug 的出现情况,如果开发能修复bug,就更好。如果开发不能修复bug,将多次尝试下,bug出现率,记录bug,日志等资料发给组长,然后产品,开发,测试大家一起沟通预测,最后没有修复的话,在上线之后时刻关注该模块,一旦出现问题能及时维护。

5.影响测试进度的因素

测试人员的能力—需求文档详细程度—对项目的熟练度—提测质量—开发修复bug速度—测试环境稳定性

首先是测试人员自身的能力,能不能快速定位bug,不漏测,测试速度快。需求文档不详细,会导致开发理解有误,做出来的有偏差,然后测试对需求文档的理解也会不同,导致在测试确认是否为bug产生分歧。测试人员对项目熟悉,操作起来也会快,不需要经常去问。开发做的系统质量高,Bug少,就不用在验证bug上一遍一遍耗费时间。开发解决bug快,就能尽快进行bug后面的功能测试。测试环境稳定性也很重要,有时候部署包,环境就容易出现问题,解决环境问题,等待环境部署好也耗费时间。

6.半路接收一个项目,需要做什么

项目业务流程—文档环境—边看文档边操作—看缺陷库

首先让之前的测试将系统资料发过来,然后查看系统业务思维导图,了解主要业务,其次让之前测试讲解一下,将自己的疑问提出解答,然后根据环境文档将环境布置好,边看文档边使用,最后查看缺陷库。

7.测试流程

提测邮件—需求宣讲—测试要点思维导图—用例编写—用例评审—冒烟测试—需求测试—回归测试—测试报告—测试资料归档—上线

8.进程和线程的区别

进程指的正在运行的应用程序,比如打开微信就是一个进程,线程是进程中一个单一顺序的控制流,比如微信里聊天,朋友圈。

进程有自己独立的地址空间,线程共享进程的地址空间。
进程是系统进行资源分配的最小单位,同一个进程内的线程共享进程的资源。
线程的创建和切换开销比进程小。
线程是CPU调度的基本单位。

9.Token和Session的区别

  • Session比Token的服务器占用资源大
    Session是存储在服务器内存之中的,随着用户量的增加,服务器的压力会越来越大。

  • Session比Token的安全性低
    Session是基于Cookie进行用户识别的,如果是Cookie被截获了,用户就非常容易受到跨站请求伪造(CSRF)的攻击。

  • Session没有Token的拓展性强
    如果使用多服务器进行负载均衡,用户第一次访问是服务器1,存放Session,第二次可能访问的是服务器2,就获取不到Session,判定用户没有访问过。

10.职业规划

熟悉业务和项目—做好本职工作—提升自动化测试技术—资深测试工程师

首先熟悉公司的产品和业务,然后把测试的本职工作做好,其次会提升自己的自动化测试技术,帮助公司实现自动化测试,最后积累经验,学习技术发展成为一位资深的测试工程师。

11.get和post的区别

  • 请求效率(重点)
    Get比Post的请求效率更高。Get产生一个TCP数据包,Post产生两个TCP数据包。

  • 安全性
    Get是不安全的,在传输过程中,数据被放在请求的URL中,Post相对安全,将请求数据放在body中,但是通过抓包也是可以获取到参数的,想要真正的安全,需要用HTTPS的加密协议。

  • 传输数据量
    Get请求数据大小受限于URL长度(1024字节),Post请求数据不受限制。

  • 使用场景
    Get主要从服务器上获取数据,例如查看,Post主要用于向服务器提交数据,例如登录。

12.HTTP和HTTPS的区别

  • 安全性
    HTTP明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP)数据传输过程是加密的,安全性较好。

  • 证书
    使用HTTPS协议需要到CA申请证书,一般免费证书比较少,因而需要一定费用。

  • 响应速度
    HTTP页面响应速度比HTTPS快,主要是因为HTTTP使用TCP三次握手建立连接,客户端和服务器需要交换3个包,而HTTPS除了TCP的三个包,还要加上SSL握手需要的9个包,所以一共是12个包。

  • 资源消耗
    HTTPS其实就是构建在SSL/TLS之上的HTTP协议,所以HTTPS比HTTP要耗费服务器资源。

13.集群,分布式和微服务的区别

集群是个物理形态,分布式是一个工作方式,微服务是一种架构风格。
分布式:一个业务分拆多个子业务,部署在不同的服务器上。
集群:同一个业务,部署在多个服务器上。
微服务:微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。
(1)分布式是指将不同的业务分布在不同的地方,而集群指的是将几台服务器集中在一起,实现同一业务。分布式中的每一个节点,都可以做集群,而集群并不一定就是分布式的。
(2)分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。
(3)系统中的各个微服务可被独立部署,各个微服务之间是松耦合的,每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每一个任务代表着一个小的业务能力。

14.你有过漏测bug的经历吗?

没有出现漏测严重的bug—说一个小问题,因为兼容性,网络等原因导致的问题

我所测试的模块,没有出现过P0和P1级别的bug,但是会有一些很小的问题,例如兼容性的问题,手机品牌,系统版本众多,我们会根据目前的市场占有率,尽量地覆盖主流的机型,但是依然无法保证100%覆盖,在一些小众机型上偶尔会出现一些兼容性的问题,但是都不严重。

15.常用的Linux命令

特别基础的命令不要说,模式:实际业务场景+Linux命令

在搭建环境的过程中,查看进程和服务器有没有起来,会用到ps -ef命令,查看端口会用到netstat命令。查看后台日志,会用tail -f命令,编辑文档会用到vi命令,在文档里面搜索文件会用grep命令。如果不知道日志所在目录,会用find命令进行查找。查看网络通不通,会用到ping,telnet。

16.浏览器中输入URL会发生什么(即HTTP工作过程)

(1)进行DNS的域名解析
(2)建立TCP的连接,发起TCP三次握手
(3)发生一个HTTP的请求
(4)服务器处理相关的请求,并返回处理后的结果
(5)关闭TCP连接
(6)浏览器接收到服务器处理后的结果,开始解析
(7)浏览器将解析后的资源进行请求,并对页面进行渲染呈现给用户

17.内存溢出和内存泄漏的区别

  • 内存溢出
    通俗的理解就是内存不够,通常在运行大型软件或者游戏的时候,软件和游戏所需要的内存远远超出了主机所安装的内存,这就是内存溢出。
  • 内存泄漏
    指程序在申请内存之后,无法释放申请的内存空间,可能一次的内存泄漏,影响不大,可以忽略,但是如果内存泄漏堆积,那后果就很严重了,无论有多少内存池,迟早都会被吃光。

18.having和where的区别

  • 用的地方

where可以用于select,update,delete以及insert语句中,having只能用于select语句中。

  • 执行顺序

where是在group by之前执行的,having是在group by之后执行的,如果where和having一起使用的话,where会先执行,having会后执行。

  • 子句

where子句的条件表达式,having都可以跟,而having子句当中一些聚合函数,例如求和统计等函数,where不可以跟。

19.给一个物品,怎么测试,比如杯子

界面测试—功能测试—易用性测试—性能测试—兼容性测试—可移植性测试—安全性测试

  • 界面测试:主要关注水杯外观,颜色,设计等方面
    外观是否完整
    外观是否舒适
    颜色搭配及使用是否让人感到舒适
    杯子外观大小是否适中
    杯子是否有图案,图案是否易磨损

  • 功能测试
    水杯是否可以正常装水
    水杯是否可以正常喝水
    水杯是否有盖子,盖子是否可以正常盖住
    水杯是否有保温功能,保温功能是否正常保温
    水杯是否会漏水,盖住盖子拧紧后是否会漏水

  • 易用性测试:关注水杯使用是否方便
    水杯喝水是否方便
    水杯拿起放下是否方便
    水杯装水是否方便
    水杯携带是否方便
    水杯是否有防滑功能
    水杯是否清洗方便
    水杯装有低温或者高温水时,是否会让手感到不适

  • 性能测试
    水杯装满水时,是否会漏出来
    水杯最大使用次数
    水杯的保温性是否达到要求
    水杯的耐寒性是否达到要求
    水杯的耐热性是否达到要求
    水杯掉落时,是否可以正常使用
    水杯长时间放置时,是否会发生泄漏

  • 兼容性测试:主要关注水杯是否可以装其他液体
    如果汁,汽油,酒精等

  • 可移植性测试:主要关注水杯放置环境等
    将水杯放在常温环境中,使用是否正常
    将水杯放在零下的环境中,使用是否正常
    将水杯放在高于正常温度的环境中,使用是否正常

20.接口请求不通如何排查

(1)查看IP,端口或者URL是否正确
(2)查看服务器程序内部是否发生错误
(3)查看是否有访问权限,如缺乏token和cookie之类的
(4)如果是
浏览器访问,查看host是否正确
(5)查看服务端的项目是否部署好了
(6)查看客户端和服务端的网络是否通的
(7)查看服务器的防火墙是否有拦截
(8)查看客户端是否设置了代理

21.启动tomcat端口被占用怎么办

通过netstat -apn | grep 8080命令,找到8080端口所对应的进程
通过ps -ef命令找到这个进程所属的程序,如果这个程序没有用的话,可以使用kill命令把这个程序杀掉,如果这个程序有用的话,那么就修改现在tomcat端口。

22.自动化测怎么处理验证码

(1)产品上线之前,可以找开发在测试环境把验证码注释掉,在上线之前记得加上验证码
(2)让开发预留一个万能码,只要输入这个万能码就可以登录成功,但是这个只能在测试环境干,在生产环境要记得删掉。
(3)系统如果可以勾选保存用户名和密码,可以通过cookie来跳过登录验证码,使用抓包工具处理即可。
(4)可以使用验证码识别技术,java下有个Tess4j库,python下有个tesserocr库,成功率大多比较低,不是很推荐。

23.App测试和web测试的区别

  • 系统架构
    web项目,一般都是B/S架构,App项目,一般都是C/S架构的,用户需要安装客户端进进行测试,web测试只要更新了服务器端,客户端就会同步更新。

  • 性能方面
    web只需要关注响应手机,App还需要关注流量,电量,CPU,内存等硬件指标。

  • 兼容性
    web需要测试不同浏览器下的兼容性,浏览器不同版本。app测试需要关注分辨率,屏幕尺寸,操作系统的版本,不同厂家的硬件兼容性。

  • 专项测试
    相比web测试,app还要考虑安装卸载更新,弱网,触碰手机界面,中断。

24.Linux下如何查找一个文件路径

(1)可以用find / -name命令。比如find / -name test.log 可以全局查找test.log在系统中的路径
(2)可以用locate test.log
locate命令的效率比find的效率高很多,因为它是基于locatedb数据库搜索查找的。

25.linux下如何结束一个进程

利用ps -ef | grep,找到进程ID,然后kill -9结束进程

26.常见的聚合函数有哪些

SUM() 求和
AVG() 平均值
COUNT() 计数
MAX() 最大值
MIN() 最小值

27.用Jmeter怎么做接口测试

(1)根据开发提供接口文档,编写接口测试用例
(2)利用Jmeter做接口测试,添加线程组,HTTP请求,在HTTP请求中,添加对应的IP,port,url,请求参数。
(3)添加断言
(4)添加查看结构树
(5)执行用例
(6)查看结果,验证接口返回与预期是否一致

28.Jmeter是怎么实现接口之间关联的

有两种方式,正则表达式提取器和Json提取器。
比如说我们要获取一个token,可以把获取到的token值赋予一个变量,在下一个接口调用这个变量即可。
如果需要提取的文本时页面上某元素的属性值,建议使用json提取器;
如果需要提取的文本在页面上的位置不固定,或者不是元素的属性,建议使用正则表达式提取器。

29.为什么要做接口测试

(1)提前介入测试,尽早发现问题
现在的很多系统,都是前后端分离的,前端和后端的工作进度,很多时候可能不一样,为了尽早的进行测试,尽早的发现更多的问题,在前端界面还没有开发完成的情况下,只要后端的接口开发完了,我们就可以提前做这个测试了,这其实也叫测试左移,再结合自动化的技术,就可以极大地提高我们测试的工作效率。
(2)保证系统的安全性
基于安全的考虑,只依赖前端性的限制,已经完全不能满足系统的安全要求,毕竟绕过前端验证太容易了,所以我们还要做后端验证,也就是说要从接口进行验证一遍。

30.线上出现Bug怎么办

(1)评估Bug的严重程度以及影响范围
评估是否为核心功能的Bug,是否影响大批量的用户。
(2)确定修复方案:停服?回滚?线上修复?
比较严重的且影响范围比较大,比如无法下单,一般采取回滚。
一般的bug,比如页面兼容问题,可以立马改完验证后上线。
(3)追责
测试用例未覆盖到,原型文档上未说明,测试环境无法模拟,其他平台修改接口未通知。
如果是后面3个原因,那么应该说明原因,并反馈给相关负责人,及时规范流程。如果是测试用例未覆盖,主动承担责任,补充用例库,及时总结,后续避免犯同样错误。

31.怎么做APP的兼容性测试

一般优先覆盖主流
(1)操作系统
安卓系统:7.x , 8.x, 9.x, 10.x版本
IOS系统:12.x , 13.x , 14.x 版本
(2)屏幕分辨率
安卓机:19201089,1280720,23401080等,尺寸5.x,6.x英寸
IOS:2208
1242,1334750,24361125等,尺寸5.5-6.5英寸
(3)厂家
一般会根据设备市场的占有率和自身产品使用的数据,来挑选相应的设备
(4)网络
wifi,3G,4G,5G等

32.主键,外键,索引有什么区别

(1)主键:唯一标识一条记录,不能有重复,不能为空
(2)外键:是另一张表的主键,外键可以重复,也可以为空
(3)索引:不能重复了,可以为空。主要对数据库中的某些关键词进行存储,类似于数据中的目录,提高查询排序的速度。

33.接口响应状态码

1**:表示请求已接收,继续处理
2**:成功
3**:重定向,要完成请求必须进行更进一步的操作
4**:客户端错误,请求有语法错误或请求无法实现
5**:服务器错误

34.Jmeter参数化的方式有哪些

(1)CSV Data Set Config
在配置元件中添加,适合场景参数范围较大的场景,方便用户随时修改参数数据,使用较多的就是参数化用户名和密码的场景。
(2)函数助手
是Jmeter自带的函数,适合生成随机数的场景,例如生成随机字符串,随机日期,随机数字等。
(3)用户自定义参数
在配置元件中添加,适用于在测试计划中参数不经常变化的场景,比如设置host,端口号,url等。
(4)用户参数
在前置处理器中添加,适用于参数取值范围很小的场景,一般会将登录的用户账号和密码等作为用户参数。

35.Jmeter常用的断言方法有哪些

(1)响应断言
最常用的断言方法,主要对响应结果中的文本内容进行断言。比如响应结果是否包含指定的值,或者是否等于指定的值。响应断言可以适用各种返回类型的响应结果。
(2)JSON断言
它一般用于断言某个字段值是否等于指定的值。只能针对响应结果为JSON格式的。
(3)持续时间
通常用于做性能测试,一般用于检查HTTP请求的响应时间是否超过预期值。
(4)beanshell断言
可以用于更复杂的个性化需求,使用灵活,功能更强大。

36.怎么设置接口测试用例

(1)参数校验
主要包含:参数必填项校验,组合可选参数,枚举变量覆盖所有枚举值,参数的顺序,参数的类型,参数有/为空/为null,参数边界值校验,参数包含特殊字符等。
(2)业务功能测试
多接口组合测试,验证某个业务功能点
(3)安全测试
验证传输数据是否加密,身份权限,密码的规则是否符合需求。
(4)异常场景
重复提交,不存在的参数值

37.常见的黑盒测试用例设计方法

(1)等价类划分法
有效等价类(符合要求的数据),无效等价类(不符合要求的数据)
(2)边界值分析法
通常边界值分析法是作为等价类划分法的补充,去正好等于,刚刚大于或小于边界的值作为测试数据
(3)因果图法
输入条件的各种组合,设计测试用例,适合用户检查程序输入条件设计的各种组合情况
(4)判定表驱动法
判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。判定表通常由4个部分组成:条件桩,动作桩,条件项,动作项。
(5)场景法
场景主要包括4种主要的类型:正常的用例场景,备选的用例场景,异常的用例场景,假定推测的场景。

38.什么是安全测试

安全测试是一种软件测,可以发现软件应用程序中的漏洞,威胁和风险,可以防止来自入侵者的恶意攻击。目的是为了提升产品的安全质量,降低修复成本,评估系统的安全等级。
如果产品有高危漏洞,不小心被黑客袭击,导致服务器瘫痪或资金损失,重要数据泄漏和丢失,或者服务器资源被黑客恶意利用,会导致公司业务无法正常运转或损失惨重。

39.安全测试的七种类型

1.漏洞扫描:自动软件针对已知的漏洞扫描系统。
2.安全扫描:手动或自动识别网络和系统弱点的技术。
3.渗透测试:渗透测试是关于安全测试的,它有助于识别系统中的漏洞。
4.风险评估:包括对系统中可能的风险进行分析,风险分为低,中,高三种。
5.安全审计:完成对系统和应用程序的检查,以检测漏洞。
6.道德黑客:为检测系统中的缺陷,而非个人利益对系统进行的黑客攻击。
7.态势评估:将安全扫描,道德黑客和风险评估结合起来,已显示组织的总体安全态势。

40.深拷贝和浅拷贝的区别

1.复制方式
浅拷贝(shallow copy)只复制了对象的引用,而没有复制对象本身。因此,在新对象中创建了一个对原始对象的浅拷贝,但这个浅拷贝仍然指向原始对象中的数据。这意味着,如果在新对象上修改了数据,那么原始对象也会被修改。
深拷贝(deep copy)则是复制了整个对象及其内部所有数据的副本。因此,在新对象中创建了一个对原始对象的深拷贝,新对象和原始对象完全独立,修改新对象不会影响原始对象。

2.对象类型
浅拷贝通常适用于不可变对象,如数字、字符串、元组等。
深拷贝通常适用于可变对象,如列表、字典等,因为这些对象中的数据可以修改,而浅拷贝只会复制引用,容易导致原始对象和拷贝对象之间的数据相互影响。

3.性能
深拷贝通常比浅拷贝更耗时,因为它需要复制整个对象及其内部所有数据的副本。而浅拷贝只需复制对象的引用,所以通常更快速。

41.堆和栈的区别

1.存储方式
栈是一种线性数据结构,它是一种先进后出(Last-In-First-Out,LIFO)的数据结构,因此最后入栈的元素最先出栈。
堆则是一种树形数据结构,其中每个节点都有一个父节点和多个子节点。堆中的元素没有特定的顺序,因此不能像栈那样按照特定的顺序访问它们。

2.内存分配
在 Python 中,栈用于存储函数调用和局部变量。当一个函数被调用时,它的参数和局部变量会被压入栈中。当函数返回时,这些变量会被弹出栈。这种栈的内存分配方式非常高效,并且由 Python 解释器自动管理。
堆则用于存储动态分配的对象。当你创建一个对象时,Python 解释器会在堆中为它分配内存,并返回一个指向该对象的引用。堆的内存分配方式比较灵活,但也更加复杂,需要手动管理对象的引用计数以避免内存泄漏。

3.访问方式
由于栈中的元素是按照一定顺序存储的,因此可以直接通过索引来访问栈中的元素。而堆中的元素没有特定的顺序,必须通过对象的引用来访问它们。

42.安卓和IOS测试区别

(1)分辨率的测试
安卓端有20多种,IOS相对就比较少一些
(2)操作系统的版本
安卓的操作系统比较多,IOS比较少,而且它只能支持单项升级,不能支持降级。
(3)操作习惯的一些不同
安卓习惯点击BACK键,所以我们要测试一下BACK键,看看BACK键是否被重写了。点击BACK键之后,看看系统是不是能够反馈是正常的。,然后数据从内存移动到SD卡是否运行正常等。
(4)推送消息的测试
安卓点击home键之后,程序运行到后台,那么这个时候推送消息是否可以正常被推送,以及点击应用程序唤醒到前台运行的时候,然后点击消息是否可以正常的跳转。
IOS点击home键,或者是锁屏,或者是关闭程序的时候消息推送是否都是正常的。
(5)安装和卸载测试
安卓应用程序,它的一个安装的一个工具还有平台,还有渠道都会比较多。
IOS的话它只支持官方的,如:APP store、iTunes、testflight的下载。
(6)APP测试工具
安卓手机的工具:ADB工具、SDK工具等等。它们都可以用来调试手机,且我们常使用ADB工具的ADB logcat命令获取手机端的一个日志
IOS手机的工具:Xcode、iTunes、iTools等等。它们可以用来调试以及获取我们IOS手机的一个日志

43.锁表有哪些情况

Oracle 数据库锁表的原因可以归结为以下几个方面:
(1)事务锁:当一个事务正在对某张表或某些行进行修改时,该表或行会被锁定,防止其他事务同时修改数据。在事务完成或回滚之前,锁定将一直保持。这种锁称为排它锁。
(2)共享锁:多个事务可以同时读取同一张表或同一些行的数据,这种锁称为共享锁。共享锁不会阻止其他事务获得相同的共享锁,但会阻止其他事务获得排它锁。
(3)死锁:当多个事务相互等待对方释放资源时,就会出现死锁。如果一个事务在等待另一个事务释放资源的同时也持有一些资源,那么这两个事务就会陷入死锁状态。
(4)数据库连接数过多:如果数据库连接数过多,可能会导致数据库锁表。这是因为每个数据库连接都需要占用一定的资源,如果连接数超过了数据库的处理能力,就会出现锁表现象。
(5)查询语句造成的锁表:如果某个查询语句需要扫描大量的数据或者涉及到复杂的关联查询,那么就可能会占用过多的数据库资源,导致锁表现象。
(6)索引失效:如果数据库中的索引失效,那么查询语句就需要扫描大量的数据,这会导致数据库锁表。
总之,数据库锁表是由多种因素造成的,这些因素包括事务锁、共享锁、死锁、连接数过多、查询语句和索引失效等。为了避免锁表现象,需要对数据库的设计和使用进行合理规划和管理。

44.python类型

(1)数字类型:int(整型)、float(浮点型)、complex(复数型)等;
(2)字符串类型:str(字符串型);
(3)列表类型:list(列表型);
(4)元组类型:tuple(元组型);
(5)集合类型:set(集合型);
(6)字典类型:dict(字典型);
(7)布尔类型:bool(布尔型)。
此外,Python 还可以通过模块来支持其他类型,例如 datetime 模块可以支持日期和时间类型。用户还可以使用自定义类来创建自己的数据类型。

45.Web自动化测试出现的报错常见有以下几种:

(1)元素定位失败:通常是因为元素的id、name、class等属性设置不正确或者元素还未加载完成。解决方法:确认元素属性是否正确,确认元素是否已经加载完成,可以增加等待时间等。

(2)点击、输入等操作失败:通常是因为元素被遮挡,或者元素不可见等原因导致无法完成操作。解决方法:确认元素是否可见,是否被遮挡,是否有其他操作在进行等。

(3)页面跳转超时或者加载失败:通常是因为网络延迟或者页面未完全加载完成导致的。解决方法:增加页面加载时间或者等待时间,或者尝试使用不同的网络或者浏览器。

(4)数据库连接失败:通常是因为数据库的连接配置不正确或者数据库服务未启动。解决方法:确认数据库连接配置是否正确,确认数据库服务是否启动等。

(5)浏览器兼容性问题:不同的浏览器可能对同一个网页的渲染方式不同,导致测试结果不一致。解决方法:尽量使用多种浏览器进行测试,并根据测试结果调整测试策略和代码。

解决方法通常包括但不限于以上几种,需要具体问题具体分析,寻找最合适的解决方法。同时,进行自动化测试时,还需要加强代码的健壮性,尽量避免出现上述问题。

46.如果在测试中遇到表单提交无响应的情况

多次尝试,出错率—F12查看请求响应报文—响应状态码—postman进行接口测试看是否可以—网络问题用ping telnet查看—看开发环境是否正常,开发环境正常,就解决测试环境问题,开发异常,看日志,描述bug提交。

(1)确认是否是服务器或者应用的问题,尝试在其他环境或者手动测试中进行确认,如果问题仍然存在,则可能是应用本身的问题。

(2)尝试重新启动应用或者服务器,或者进行其他相关的操作,比如清空浏览器缓存、重新登录等,以此来解决问题。

(3)如果问题仍然存在,可以尝试修改测试用例的提交数据,或者使用其他测试用例进行测试,检查是否存在数据格式或者内容的问题。

(4)可以尝试模拟用户提交表单的操作过程,观察是否存在用户操作不当导致表单提交失败的情况。

(5)如果以上方法都无法解决问题,可以进行更深层次的排查,比如查看应用日志、服务器日志,或者使用调试工具进行排查,找出具体的错误原因。

在排查问题的过程中,需要进行详细的记录和分析,以便更好地解决问题,并预防类似的问题在未来的测试中再次出现。同时,在测试前需要确认应用、服务器等基础环境的稳定性,以减少出现类似问题的概率。

47.数据库

常见的数据库类型有以下几种:

(1)关系型数据库(RDBMS):采用关系模型来组织和管理数据,其中数据以表格形式存储,并且表格之间可以建立关系。主要代表为Oracle、MySQL、SQL Server等。

(2)非关系型数据库(NoSQL):不使用传统的关系模型,通常采用键-值、文档、列族等方式来存储数据,适用于大数据量、高并发、分布式等场景。主要代表为MongoDB、Redis、Cassandra等。

(3)图数据库:以图形方式存储数据,并使用图形理论来分析和查询数据。主要用于网络和社交媒体等领域,主要代表为Neo4j、OrientDB等。

(4)对象数据库:支持面向对象编程语言,将对象直接存储到数据库中,使得数据模型更接近于实际应用场景。主要代表为db4o、Versant等。

总结:这些数据库类型之间的主要区别在于其数据模型、数据结构、数据操作语言和存储引擎等方面。关系型数据库适用于事务处理和数据分析等领域,而非关系型数据库适用于大规模数据存储和高并发访问等领域。图数据库适用于处理关系密集型数据,而对象数据库适用于面向对象应用程序。

Oracle数据库是一种关系型数据库管理系统,被广泛用于企业级应用程序中。它具有高度可靠性、可扩展性、安全性和性能优化等特点。Oracle数据库支持SQL语言,可以存储和处理大量的数据。它还提供了大量的功能和工具,包括事务管理、备份和恢复、安全性管理等等。

OceanBase数据库是由阿里巴巴集团开发的一种分布式关系型数据库系统。它使用分布式架构,可以在海量数据下提供高性能、高可靠性的数据服务。OceanBase数据库采用分布式事务和强一致性模型,确保数据一致性和可靠性。它还提供了分布式索引、分布式查询等特性,使得它可以支持高并发、高吞吐量的场景。

48.接口测试中,如何提取上一个接口的响应值

(1)使用正则表达式或XPath表达式解析响应结果,提取需要的值。

(2)将响应结果转换为JSON或XML格式,使用相应的库或工具解析数据,提取需要的值。

(3)使用接口测试工具中提供的参数化功能,将响应结果中需要使用的值作为参数传递给下一个接口。

(4)在测试脚本中使用变量保存前一个接口的响应结果,后续接口中直接引用该变量。

无论使用哪种方法,都需要对响应结果进行处理和解析,以确保提取到正确的值,并在后续测试中正确使用。

49.接口测试中,如何验证结果是否正确

(1)验证响应状态码:验证接口返回的状态码是否与预期一致,一般200表示成功,4xx或5xx表示错误。
(2)验证响应数据类型:验证接口返回的数据类型是否与预期一致,例如JSON或XML。
(3)验证响应数据结构:验证接口返回的数据结构是否与预期一致,例如JSON中某个字段是否存在。
(4)验证响应数据值:验证接口返回的数据值是否与预期一致,例如验证某个字段的值是否符合要求。
(5)验证业务逻辑:验证接口返回的数据是否符合业务逻辑要求,例如验证订单号是否唯一。
(6)验证性能:验证接口的性能是否满足要求,例如验证接口响应时间是否在可接受范围内。

以上方法可以单独或组合使用,以确保接口测试结果正确。同时,也需要根据具体接口的特点和测试需求,设计相应的测试用例,尽可能覆盖各种情况,以提高测试覆盖率和效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值