1023记录
米哈游二面
自动化测试中自动化驱动的能力?
pytest的驱动能力:
1,自动发现测试用例:以"test_"开头的Python文件、以"Test"开头的类和以"test_"开头的函数,将它们识别为测试用例
2,灵活的测试收集:@pytest.mark.parametrize实现参数化测试,使用@pytest.mark.skip跳过某些测试,使用@pytest.mark.xfail标记预期失败的测试,
3,断言支持:assert,assertEqual,assertTrue
4,丰富的插件生态系统:pytest-allure,pytest-xdist、pytest-cov,pytest-rerunfailures
5,并行化执行:pytest-xdist -n 多cpu并行执行。
6,丰富的测试报告:allure,html测试报告
如何理解手工测试和自动化测试?
1,相辅相成的关系,可以结合使用,根据具体的测试需求和资源限制来选择合适的测试方法。
2,二者可使用的测试场景不同:手工测试适用于一些场景,如探索性测试、用户体验测试、边界条件测试等,以及一些难以自动化的测试任务。自动化测试通常适用于需要频繁执行、回归测试、性能测试等场景,以及一些可重复和可预测的测试任务。
给了一个新需求,测试的流程是怎样的?
1,需求分析:仔细阅读和理解给定的新需求。与相关的项目团队成员(如业务分析师、产品经理)一起讨论需求的细节和期望的功能行为。
2,编写测试计划:根据需求分析结果,编写测试计划。测试计划应包括测试目标、测试范围、测试资源、测试环境、测试策略、测试方法和测试进度等内容。
3,制定测试用例:基于需求分析和测试计划,编写测试用例来覆盖新功能的各种情况和边界条件。测试用例应包括输入数据、预期结果和执行步骤。
4,准备测试环境:确保测试环境满足新功能的测试要求。这可能涉及设置测试数据库、配置测试服务器或模拟特定的外部系统等。
5,执行测试用例:按照测试计划和测试用例的要求,逐个执行测试用例。记录测试执行过程中的输入、输出和观察到的结果。
6,缺陷追踪:对于发现的缺陷,使用缺陷追踪系统(如JIRA、Bugzilla等)进行记录和跟踪。提供详细的缺陷描述、重现步骤和附加信息,以便开发团队进行修复。
7,回归测试:如果有其他已有功能或相关模块受到新需求的影响,执行回归测试以确保新功能的引入没有破坏现有功能。
8,评估和报告:评估测试结果,根据测试执行情况和缺陷统计生成测试报告。报告应包含已执行的测试用例数量、通过和失败的测试用例数量、缺陷统计和风险评估等信息。
现有功能上线之后,后续测试流程?
1,针对以往功能跑一遍回归测试,确保新引入的功能不会对原有的功能产生影响。
2,对集成的新功能进行测试,确保新功能可用。
3,缺陷管理,对测试新功能或者回归测试中的问题进行管里。
4,封版前,对新功能进行回归测试。确保新功能没有问题。
如何抽取测试用例为自动化测试用例?怎么判断?
1,重复执行的测试用例
2,高风险和关键功能,
3,可重复性和可靠性
4,可验证性和可回归性的测试用例
在用现有的问题去做自动化的时候,又遇到比较深刻的问题吗?
测试的时候,准入准出的标准?准入=提测,准出=测试通过
测试准入标准如下:
(1)开发编码结束,开发人员在开发环境中已经进行了单元测试,即开发人员完成自测。
(2)软件需求上规定的功能都已经实现。如果没有完全实现,开发人员提供测试范围。
(3)测试项目通过基本的冒烟测试,界面上的功能均已经实现,符合设计规定的功能。
(4)被测试项目的代码符合软件编码规范并已通过评审。
(5)开发人员提交了测试申请并提供了相应的文档资料。
测试准出标准如下:
(1)测试项目满足客户需求。
(2)所有测试用例都已经通过评审并成功执行。
(3)测试覆盖率已经达到要求。
(4)所有发现的缺陷都记录在缺陷管理系统。
(5)一、二级错误修复率达到100%。
(6)三、四级错误修复率达到了95%。
(7)所有遗留问题都有解决方案。
(8)测试项目的功能、性能、安全性等都满足要求。
(9)完成系统测试总结报告。
mock测试?
含义:Mock测试是一种测试方法,通过模拟(Mock)外部依赖或复杂的组件,来隔离被测试单元的行为,以便更专注地测试目标单元的功能。
框架:Python的unittest.mock
1,创建mock对象
2,创建测试对象,将mock对象注入
3,调用测试对象中的方法进行测试
4,验证Mock对象的方法调用和参数传递assert_called_once_with()
5,验证返回值
fiddler的使用场景:
- 调试HTTP请求和响应:Fiddler可以捕获和显示应用程序发送和接收的HTTP请求和响应,包括请求头、请求体、响应头、响应体等。通过查看这些信息,您可以分析请求和响应的内容、头部信息、状态码等,有助于识别问题和调试错误。
- 模拟网络环境:Fiddler允许您模拟不同的网络环境,例如低速连接()、高延迟()、丢包()等。通过模拟这些网络条件,您可以测试应用程序在不同网络环境下的性能和稳定性,以确保应用程序在真实网络环境中的良好表现。
- 改请求和响应:Fiddler提供了修改请求和响应的功能,您可以修改请求头、请求体、响应头、响应体等,并观察应用程序对修改的响应。这对于测试特定情况下的应用程序行为、调试安全性问题或进行API集成测试非常有用。
- 排查性能问题:Fiddler可以帮助您分析网络请求的性能,包括请求的延迟、传输时间、页面加载时间等。通过查看这些性能指标,您可以识别潜在的性能问题,例如慢速请求、多次请求等,并进行优化和改进。
如何使fiddler抓取https的接口
1,下载https证书
2,配置https的证书
3,在tools - options-https中配置抓取https的请求
4,在浏览器中设置fiddler代理。
1<x<=100,等价类设计?边界值设计?
边界值测试:
输入边界值测试:测试最小输入值1和最大输入值100。
边界内测试:测试2、99等边界内的值。
等价类测试:
选择一个等价类的最小值:测试1。
选择一个等价类的最大值:测试100。
选择一个等价类的中间值:测试50。
选择一个等价类的其他值:测试2、5、10、20等。
https的常用方法:
GET方法:用于从服务器获取资源。GET请求将参数附加在URL的查询字符串中,并在请求头中以明文形式发送。
POST方法:用于向服务器提交数据。POST请求将参数包含在请求体中,并在请求头中以明文形式发送。
PUT方法:用于向服务器上传或替换资源。PUT请求将请求体中的数据上传到指定的URL,并用该数据替换服务器上对应的资源。
DELETE方法:用于请求服务器删除指定的资源。
HEAD方法:类似于GET方法,但只返回响应头,不返回实际响应体。主要用于获取资源的元数据信息。
OPTIONS方法:用于请求服务器返回支持的HTTP方法和其他可用选项。
深圳市腾娱互动科技有限公司
自动化测试用例怎么做的?(用例如何设计)?
创建两个py文件,一个用来定位元素,执行元素的操作,一个用来编写具体的测试用例
1,创建测试类
2,定义测试方法
1,元素定位以及路径
2,对页面元素执行的操作,以及用例涉及的逻辑处理,比如创建用户,需要输入用户名,邮箱,点击创建按钮,断言 创建结果
接口如何测试?
1,分析接口文档(如果没有接口文档,需要自己通过抓包工具获取接口的请求参数)
2,设计相关测试用例:请求参数的必填,格式要求等
3,准备测试环境
4,执行测试用例
5,缺陷创建,沟通,跟踪,验证
6,注意异常数值的处理
参数合法不合法如何考虑
1,根据需求确定合法的参数范围,并再次基础上编写测试用例。
2,编写测试用例,设计出合法的参数用例以及不合法的参数用例。
比如?参数必须是整形,设计相关用例
1,正常值:正整数
2,边界值:-2147483648(32位有符号整数的最小值);2147483647(32位有符号整数的最大值)
3,非法值:负整数,浮点数,字符串,布尔值,特殊字符
4,多值测试:
5,性能和负载,传递大量整数值的数组
如何带领团队做回归的?
为什么是我来带领大家做?
元神中新增了一个角色,如何设计相关测试用例?
角色属性测试:例如角色名称、等级、生命值、攻击力等。、
角色能力测试:包括攻击技能、防御技能、辅助技能等。
角色界面测试:包括角色模型、头像、描述信息等。
角色升级测试:验证角色升级后属性、能力等是否按照预期变化。
角色装备测试:是否能够正常穿戴装备,例如武器、护甲、饰品等,测试装备对角色属性和能力的影响是否正确,例如攻击力增加、防御力提升等。
角色交互测试:NPC对话、与其他玩家进行交互等。
角色存储和加载测试:包括保存角色数据、读取角色数据等。
角色性能和稳定性测试:进行角色的性能和稳定性测试,验证角色在大量数据或高负载情况下的表现。
发现一个问题怎么去推进?
需求问题:
缺陷问题:
缺陷有歧义如何解决?
知迪汽车
1,虚拟内存和物理内存的区别
1,定义:
物理内存(也称为主存或实际内存)是计算机系统中实际存在的硬件内存,用于存储正在执行的程序和数据。
虚拟内存是计算机系统中的一种抽象概念,它扩展了物理内存的容量,使得程序可以访问比实际可用物理内存更大的地址空间
2,大小
物理内存的大小是硬件决定的,通常以字节为单位,可以根据计算机系统的配置进行扩充或减少。
虚拟内存的大小可以比物理内存大得多,它可以通过操作系统的管理机制,将部分数据和程序存储在磁盘上,以释放物理内存并提供更大的地址空间。
3,访问速度
物理内存的访问速度比较快,因为它直接与处理器相连,数据可以通过内存控制器快速读取和写入。
虚拟内存的访问速度相对较慢,因为数据需要从磁盘上的虚拟内存页面(页)中加载到物理内存中才能被处理器访问。
4,空间分配
物理内存的空间是有限的,由操作系统分配给不同的程序和进程。
虚拟内存的空间是逻辑上连续的,可以超过物理内存的容量,由操作系统管理和分配。
5,内存管理
物理内存的管理包括分配、回收和维护内存的数据结构,以保证程序可以正确访问和使用内存。
虚拟内存的管理包括将虚拟地址映射到物理地址的转换,页面置换算法用于将磁盘上的页面加载到物理内存中,并进行页面替换。
6,缺页管理
当程序访问的数据在物理内存中不存在(即缺页)时,处理器会触发缺页中断,操作系统会将相应的页面从磁盘加载到物理内存中。
虚拟内存中的缺页中断会导致页面置换操作,将不常用的页面从物理内存中替换出来,以便为新的页面腾出空间。
2,App monkey测试的时候,如何确定问题发生在哪里?log?
1,日志分析
2,错误报告和崩溃日志
3,运行日志
4,重现步骤
3,操作系统:堆和栈的区别
堆和栈在内存管理和数据存储方面有着不同的特点。堆适用于动态分配和释放内存,并且可以在程序的任何地方访问,而栈适用于临时存储局部变量和函数调用的上下文信息,具有自动分配和释放的特性。
5,如何确保CPU中的进程是游戏相关的?
1,进程查找,ps,top,htop
2,进程资源占用:使用命令如top或htop按照CPU利用率或内存占用进行排序,寻找占用较高的进程并检查其名称和描述信息。
3,进程关联性:使用命令如pstree或pgrep来查看进程之间的关系和依赖关系
4,进程标识:进程名称,进程id(PID)
5,进程监控工具:GameMode可以自动检测游戏进程并应用相关的性能设置
6,分布式渲染如何测试?
延申:
fiddler的回放功能?
clumsy弱网测试
相关文章:
1023记录
米哈游二面 自动化测试中自动化驱动的能力? pytest的驱动能力: 1,自动发现测试用例:以"test_"开头的Python文件、以"Test"开头的类和以"test_"开头的函数,将它们识别为测试用例 2&…...

【并发编程JUC】AQS详解
定义理解 AQS,全称为AbstractQueuedSynchronizer,是Java并发包(java.util.concurrent)中的一个框架级别的工具类,用于构建锁和同步器。它是许多同步类的基础,如ReentrantLock、Semaphore、CountDownLatch等…...

如何找BMS算法、BMS软件的实习
之前一直忙,好久没有更新了,今天就来写一篇文章来介绍如何找BMS方向的实习,以及需要具备哪些条件,我的实习经历都是在读研阶段找的,读研期间两段的实习经历再加上最高影响因子9.4分的论文,我的秋招可以说是…...

AR视频技术与EasyDSS流媒体视频管理平台:打造沉浸式视频体验
随着增强现实(AR)技术的飞速发展,其在各个领域的应用日益广泛。这项技术通过实时计算摄影机影像的位置及角度,将虚拟信息叠加到真实世界中,为用户带来超越现实的感官体验。AR视频技术不仅极大地丰富了我们的视觉体验&a…...
每天一个数据分析题(三百九十九)- 逻辑回归
逻辑回归中,若选0.5作为阈值区分正负样本,其决策平面是( ) A. wxb= 0 B. wxb= 1 C. wxb= -1 D. wxb= 2 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点…...
【ARMv8/v9 GIC 系列 5.2 -- GIC 分组介绍:Group 0 |Group 1| Non-Secure Group 1】
请阅读【ARM GICv3/v4 实战学习 】 文章目录 GIC Interrupt grouping中断分组配置寄存器GIC 中断分组介绍Group 0(安全组0)Group 1(安全组1)Non-Secure Group 1(非安全组1)总结及例子GIC Interrupt grouping ARM GICv3 通过中断分组机制,与ARMv8异常模型和安全模型进行…...
前端代码规范 - 日志打印规范
在前端开发中,随着项目迭代升级,日志打印逐渐风格不一,合理的日志输出是监控应用状态、调试代码和跟踪用户行为的重要手段。一个好的日志系统能够帮助开发者快速定位问题,提高开发效率。本文将介绍如何在前端项目中制定日志输出规…...

C# 类型转换之显式和隐式
文章目录 1、显式类型转换2. 隐式类型转换3. 示例4. 类型转换的注意事项5. 类型转换的应用示例总结 在C#编程中,类型转换是一个核心概念,它允许我们在程序中处理不同类型的数据。类型转换可以分为两大类:显式类型转换(Explicit Ca…...

Ubuntu多显示器设置不同缩放比例
Ubuntu多显示器设置不同缩放比例 设备问题解决方案 设备 笔记本屏幕分辨率为2560 \times 1600,外接显示器的分辨率为3840 \times 2160。 问题 Ubuntu默认的显示器设置中,缩放仅能选择100%,200%,300%,400%。假…...

以太网协议介绍——UDP
注:需要先了解一些以太网的背景知识,方便更好理解UDP协议、 以太网基础知识一 以太网基础知识二 UDP协议 UDP即用户数据报协议,是一种面向无连接的传输层协议,属于 TCP/IP 协议簇的一种。UDP具有消耗资源少、通信效率高等优点&a…...
FFMpeg rtmp 无压缩推送本地yuv文件 压缩推送本地yuv文件
可以借鉴的:C使用FFmpeg实现YUV数据编码转视频文件_C 语言_脚本之家 yuv文件下载地址:YUV Sequences 无压缩的方式推送本地yuv文件 代码: #include <stdio.h> #include <unistd.h> #include <iostream> extern "C&…...
PostgreSQL LIMIT 子句
PostgreSQL LIMIT 子句 PostgreSQL 是一种功能强大的开源对象关系数据库管理系统,广泛用于各种应用中。在处理大量数据时,我们通常只需要检索部分记录,而不是整个数据集。这时,LIMIT 子句就变得非常有用。本文将详细介绍 Postgre…...

误删分区后的数据拯救:双管齐下恢复策略
在数字化时代,数据的价值日益凸显,而误删分区作为常见的数据安全威胁之一,常常让用户措手不及。本文将深入探讨误删分区的现象,并为您揭示两种高效的数据恢复方案,旨在帮助您在最短时间内找回失去的数据,同…...
git 添加本地分支, clean
//以develop为源创建本地分支fromdevelop git checkout -b fromdevelop git add . git commit -m "local" git checkout -b local/dev //切换到远程分支. git checkout dev git clean_git clean -f -d-CSDN博客 git clean -f -d #删除当前目录下没有被track…...

Linux:进程间通信(一.初识进程间通信、匿名管道与命名管道、共享内存)
上次结束了基础IO:Linux:基础IO(三.软硬链接、动态库和静态库、动精态库的制作和加载) 文章目录 1.认识进程间通信2.管道2.1匿名管道2.2pipe()函数 —创建匿名管道2.3匿名管道的四种情况2.4管道的特征 3.基于管道的进程池设计4.命…...
QML-各类布局
Colunm布局 Column{id:colspacing: 30Repeater{id:repmodel: ListModel{}Button{width: 100height: 50text: "btn"index}}//开始时候移动move: Transition {NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce }}//添加时变化add:Transi…...

el-table封装点击列筛选行数据功能,支持筛选,搜索,排序功能
数据少的话,可以前端实现,如果多的话,建议还是请求接口比较合理父组件: <template> <div class"home"> <!-- <img alt"Vue logo" src"../assets/logo.png"> <HelloWorld …...

【SpringBoot3学习 | 第1篇】SpringBoot3介绍与配置文件
文章目录 前言 一. SpringBoot3介绍1.1 SpringBoot项目创建1. 创建Maven工程2. 添加依赖(springboot父工程依赖 , web启动器依赖)3. 编写启动引导类(springboot项目运行的入口)4. 编写处理器Controller5. 启动项目 1.2 项目理解1. 依赖不需要写版本原因2. 启动器(Starter)3. Sp…...

SpringBoot整合Dubbo的快速使用教程
目录 一、什么是Dubbo? 二、SpringBoot整合Dubbo 1、父工程引入依赖 2、各个Dubbo服务子模块引入依赖 3、服务提供者 (1)启动类添加注解EnableDubbo (2)服务类添加注解DubboService (3)配置文件…...
昇思25天学习打卡营第12天| 基于MindNLP+MusicGen生成自己的个性化音乐
之前都是看图文类的东西,今天体验一点不一样的。来点听力的内容。 mindspore有音乐生成模型MusicGen,MusicGen支持两种生成模式:贪心(greedy)和采样(sampling)。在实际执行过程中,采…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...
字符串哈希+KMP
P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...