IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 2021-08-17 -> 正文阅读

[开发测试]2021-08-17

面试题:

有无复杂逻辑业务测试

支付如何掉第三方接口

业务流程长如何高效完成测试

聚合报告的关注指标(中位数)[jmeter]

将所有请求的响应时间先从大到小进行排序,计算指定比例的请求都是小于某个时间。该指标统计 的是大多数请求的耗时。 Tp90(90%响应时间):90%的请求耗时都低于某个时间 Tp95(95%响应时间):95%的请求耗时都低于某个时间 Tp99(99%响应时间):99%的请求耗时都低于某个时间

软件质量的六大特性

性能测试关注的指标[loadrunner]

吞吐量、响应时间、每秒点击次数、并发用户数、报错信息、http响应数、cpu内存占用、网络延迟时间

深拷贝和浅拷贝区别[copy]:

对象拷贝、拷贝包括引用对象

微服务架构:springcloud/springboot+grpc+消息队列

微服务架构原理:主要面向SOA理念,更细小粒度服务的拆分,将功能分解到各个服务中,从而降低系统的耦合性,并提供更加灵活的服务支持

注册中心原理:

什么是微服务?

将项目的子模块拆分成单独的子系统

微服务的优缺点?

springcloud核心组件

微服务:解耦

redis数据类型:string、list、set、hash

redis的两种持久化机制:

rdb【定时存储】:在指定的时间间隔内将内存中的数据快照写入磁盘

优点:性能最大化、如果数据集很大,RDB的启动效率会更高

缺点:数据安全性较差

aof【】:以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录

优点:数据安全性较高

缺点:对于相同数量的数据集而言,aof文件通常要大于rdb文件。恢复数据慢

装饰器原理

装饰器就是给已有函数增加额外功能的函数,它本质上是一个闭包函数

特点:

1、不修改已有函数代码

2、不修改已有函数的调用方式

3、给已有函数增加额外的功能

list如何去重?

1、set集合去重

2、字典去重

==和is区别

is:比较两个对象是不是指向同一个内存地址

==:比较两个对象指向的内存地址的值是不是相等

is 用于判断 两个变量 引用对象是否为同一个
== 用于判断 引用变量的值 是否相等

自我介绍

1、sql如何查询重复的数据

select count(字段名) count as from表名where count>=2

2、http与https区别(应用层)tcp(传输层)

http无状态[cookie(客户端)/session(服务端)]、无连接[keep-Alive]

3、get与post区别

4、linux

查看java进程:ps-ef|grep java

磁盘空间:df-ah

查看目录大小:du -lh/du-sh

查看ip:ifconfig

查看服务器是否可用:ping ip地址

查看服务器端口是否可用:telnet ip地址

查看pid所占用的端口号:netstat-nap|grep进程ID

查看系统磁盘使用情况:df-h

查看实时占用资源:top

sed:替换文件内容

grep:搜索、过滤文件

awk:数据分割

压缩和解压缩:

1、tar文件 tar -zcvf打包/tar -xvf解压

2、zip文件zip -r打包/unzip解压

查看被占用端口号:netstat -anp | grep 800
查看cpu:lscpu
查看文件个数:ll |grep wc -l

消息队列?

1、为什么要用消息队列?(消息队列的应用场景?)

消息队列是一种先进先出的数据结构

常见的应用场景:解耦、异步、削峰(流量削峰)

2、各种消息队列产品的比较?

ActiveMQ:早起使用的较多,没经过大规模吞吐两场景的验证,不推荐

RabbitMQ:追求性能和稳定性,推荐使用(不考虑二次开发)

RocketMQ:稳定性和性能均不错,可二次开发

kafka:大数据领域日志采集等业务推荐使用

3、消息队列的优点和缺点?

缺点:

系统可用性降低——》如何保证MQ高可用?

?

系统复杂度提高——》消息丢失怎么办?重复消息怎么处理?如何保证消息传递的顺序性?

一致性问题——》如何保证消息数据处理的一致性

4、如何保证消息队列的高可用?

RabbitMQ高可用-普通集群

特点:

1、没有真正做到高可用

2、有数据拉取的开销和单实例的瓶颈问题

RabbitMQ高可用-镜像集群

在多台机器上分别启动rabbitMQ实例;

多个实例之间可以相互通信;

每次生产者写消息到queue的时候,都会自动把消息同步到多个实例的queue上。每个RaabitMQ节点上都有Queue的消息数据和元数据;

某一个节点宕机,其他节点依然保存完整数据,不影响客户端消费;

RocketMQ高可用-双主双从

生产者通过NameSever发现Broker;

生产者发送队列消息到2个broker主节点;

Broker主节点分别和各自从节点同步数据;

消费者从主或者从节点订阅信息

5、如何保证消息不丢失?

消息丢失原因:

消息生产者没有成发送到MQ Broker;

消息发送给MQ Broker后,Broker宕机导致内存中的消息数据丢失;

消费者获取到消息,但消费者还没有来得及处理宕机了,但此时MQ中消息已经删除,消费者重启后不能再消费之前的消息;

解决处理:

消息发送者发送给MQBroker后,MQBroker给生产者(confirm确认)确认收到;【发送方可靠发送】

MQ收到消息后进行消息持久化;【MQ进行消息持久化】

消费者收到消息处理完毕后手动进行ack确认;【消费方消费完毕进行ACK确认,MQ收到消费方的ACK确认再删除本地消息】

MQ收到消费者ack确认后删除持久化的消息;

6、如何保证消息不被重复消费?(幂等性)

消息重复的根本原因是网络不可达;

发送时消息重复;

消费时消息重复;

解决方案:

消费发送者发送消息时携带一个全局唯一的消息id;

消费者获取消费后先根据id在redis/db中查询是否存在消费记录;

如果没有消费过就正常消费,消费完毕后写入redis/db;

如果消息消费过就直接舍弃

备注:幂等性是重复消息处理一次和多次结果一样,不影响业务

【消息携带全局ID,消费方接到消息时先查再处理,根据全局ID做判重操作】

7、如何保证消息消费的顺序性?

消息有序指的是可以按消息的发送顺序来消费【消息消费顺序和发送顺序一样】分为全局顺序消费和局部顺序消费

如何解决:

全局顺序消息:生产者:MQSever:消费者=1:1:1

局部顺序消息:

生产者将同一组信息发送到单个队列;

多个消费者并行对消息进行消费;

Queue通过分段锁保证消息消费的顺序性

8、基于MQ的分布式事务实现?

分布式事务是为了保证不同数据库的数据一致性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UTgTyO3m-1629200368592)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210809161104069.png)]

消息发送发:

1、处理业务逻辑

2、保存消息到本地数据库

3、发送消息给MQ

4、监听MQ消息方通知消息,更改消息状态为已处理

5、定时任务长期未处理消息重新发送到MQ

消息消费方:

1、监听MQ中间件消息

2、判断消息是否重复,重复就丢弃

3、消息未重复,执行本地业务

4、业务处理完毕,写消息记录到本地数据库

5、发送通知消息到MQ

接口自动化测试:

接口:是为系统提供服务的一种形式

前端发送的请求内容——网络协议——服务端接收请求(接口)——进行处理产生响应结果——网络协议——返回响应

请求(ququest):用户下发

网络协议:传输渠道,目前业内最为核心的http协议

接口:接收从传输渠道传递过来的请求数据,不同接口对应不同的数据

响应:接口运算的结果,会在执行之后返回至前端

实际请求下发时不需要经过前端界面

登录操作:

? 输入账号密码——提交表单——校验是否正确——返回成功或失败

? 开展接口测试的原因:

? 1、为了确保系统的安全

? 2、能够更早介入测试工作,从而降低缺陷的修复成本

? 3、尽可能多地发现系统中存在的问题

? 4、接口测试是比较重要的测试手段

如何实现接口测试:

? 模拟请求,直接下发至接口,获取返回响应,校验响应内容是否正确

网络协议:http是核心的协议

? 1、规范

? url=网络协议://ip:port/path?args1=&args2=

? http默认端口号:80

? https默认端口号:443

2、请求的方法:

? get和post是核心,选择何种请求方法,是依据接口来规定的

? 响应状态码

? 2**:成功

? 3**:重定向

? 4**:路径错误

? 5**:服务端错误

3、接口的数据规则都是基于接口本身的要求来的,不是一个通用性内容

Request库的二次封装:

? 测试框架值关键字驱动设计模式

? 常用的接口自动化测试是post和get,将频繁调用的这两个方法进行封装

网络协议:

http/https—无状态连接和长连接(2版本以上) ——鉴权

http:请求下发——数据传递——响应生成——返回响应结果

请求定式:

? url,统一资源定位符,用于定位到指定接口

http通信原理:

1、浏览器基于URL的域名解析出ip地址

2、基于ip地址与服务器进行链接

3、客户端构造HTTP请求。头部信息和通信数据

4、服务器生成响应结果

5、将响应结果原路返回

6、基于前端渲染,进行展示

请求方法:

get:潜规则中get请求的参数是在url中明文显示的

获取数据

url长度有限制,get强求有长度限制

post:

请求参数放在body中

提交数据

参数在body中,url不会超长

http请求是默认无状态【cookie/session/token】连接,在请求头中可看到keep-alive【tcp】(保持连接)的设置

考虑到资源的使用以及请求的效率,所以http被设计成无状态无连接模式。

tcp主要应用在C/S架构,端游,微信、qq、在线客服等及时通信。

第一次访问将部分资源保存的本地cookie浏览器缓存中

交互会话产生session临时会话(sessionid)

授权身份令牌(token)的模式,用于鉴别客户端是否有会话权限

无连接——keep-alive

rpc+微服务

自动化测试

web自动化

页面元素定位8种方法

id,name,tagname,classname,linktext,paryaillinktext,xpath,cssselector

关键字:contains,start-wih,text

如何管理页面元素?

解决元素问题一般会选择套用设计模式进行管理

1、基于关键字的形态,所有的元素信息保存在文件中

关键字驱动:

? 1、关键字驱动+数据驱动的实现模式

? 2、关键字驱动核心的理念[代码的封装,面向对象]

? 3、关键字的设计如何实现?

数据驱动:

在测试框架中,一定会讲究代码与数据的分离

数据格式excel,Yaml,json,py

2、基于POM的形态,所有的元素信息与页面对象关联

app自动化:

? appnium自动化测试adb

接口自动化:

? 网络协议:

? 接口关联:

? 1、鉴权机制的处理,关联数据的传递方式

? 2、mock数据(mockserver)

框架的设计:

? 测试工具

? 测试框架

? 测试平台

框架的配置

? 环境配置

? 日志配置

? 持续集成:邮件信息、内容模板、报告模板

自动化测试:

1、用例维护

2、自动化测试用例执行

3、自动化的结果分析

测试开发:

1、研发测试框架

2、维护测试框架

3、研发测试工具

【工行复试】

UI自动化核心技术:

POM设计模式:最主流uI自动化设计模式,基于页面对象来实现自动化测试模式

? 1、结构本身:

? 基类:关键字驱动封装的底层类

? 页面对象类:提供不同页面的对象。在实际测试中通过调用页面对象实现自动化测试流程

? 测试用例类:unitest/pytest

? 测试数据类:Yaml/excel

2、源码

? 接口自动化驱动模式:所有接口在进行关联的时候是通过鉴权机制来实现互通

? 实现核心技术:

? 1、单接口多条件的覆盖

? 2、链路测试

? excel数据驱动(单接口)

? Yaml数据驱动(关联接口)

测试环境的配置

unitest用例按固定顺序执行

? 1、ddt

? 2、测试套件

? 3、HTMLTestRunner

pytest自由性更强(pytestini配置文件)

? 1、pytest.ini

? 2、conftest.py

? 3、pytest+alure

框架关联的持续集成技术

单元测试框架:

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 12:21:43  更:2021-08-19 12:23:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 20:30:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码