零、测试开发前置知识

文章目录

  • 1、什么是冒烟测试、回归测试?
  • 2、设计测试用例的方法有哪些?
  • 3、对于404或500,你会如何分析定位?
  • 4、什么是敏捷开发?敏捷开发流程是怎么样的?
  • 5、做接口测试过程中,下游接口需要上游数据依赖,如何处理?
  • 6、POST与GET请求的区别?
  • 7、用sql查询所有学生中,各科最高学生的成绩,并按成绩大小排序。(表:student_ score,字段:student_name、score、subject)
  • 8、Python有几种数据类型?

1、什么是冒烟测试、回归测试?

冒烟测试(Smoke Testing)和回归测试(Regression Testing)是软件测试中两种不同的测试策略和阶段。
(1)冒烟测试(Smoke Testing)
定义:冒烟测试是软件开发中的一个初步测试阶段,也称为版本验证测试、健康检查或健全性测试。它的目的是确认新的或更改的代码不会破坏系统的基本功能。
特点:
快速:通常只包含少量关键的测试用例,目的是在短时间内确认系统是否基本可用。
前置:通常在进行详细测试之前进行,如果冒烟测试失败,那么进一步的测试可能会被推迟或取消。
验证基本功能:确保系统的核心或基本功能可以正常运行。
应用:在软件开发中,当开发团队完成了某个迭代或修复了一些严重的缺陷后,会进行冒烟测试以确保系统仍然稳定且基本功能可用。
(2)回归测试(Regression Testing)
定义:回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
特点:
重复性:每次代码更改后,都需要重新运行回归测试集。
全面性或选择性:可以是全面的(测试所有以前的功能),也可以是选择性的(只测试与更改相关的功能)。
自动化:由于需要频繁运行,回归测试通常会被自动化以提高效率。
应用:
新功能开发:当开发新功能时,需要确保新功能没有破坏现有功能。
缺陷修复:在修复一个缺陷后,需要确保修复没有引入新的缺陷,并且没有破坏其他功能。
软件升级或迁移:在软件升级或从一个环境迁移到另一个环境后,需要确保所有功能仍然可用。
总的来说,冒烟测试和回归测试都是软件开发中非常重要的测试阶段,它们确保了软件的质量和稳定性。

2、设计测试用例的方法有哪些?

等价类划分法
边界值分析法
错误推断法
场景设计法
判定表法

3、对于404或500,你会如何分析定位?

HTTP状态码404(未找到):
(1)检查URL:
确认请求的URL是否正确,没有拼写错误或多余的字符。
检查URL是否区分大小写(虽然大多数现代服务器不区分,但某些服务器可能仍然会)。
(2)服务器配置:
查看服务器配置文件(如Nginx、Apache的配置文件),确保请求的URL映射到了正确的资源或处理脚本。
如果使用的是动态路由,检查路由表是否包含了该URL。
(3)资源文件:
确认服务器上确实存在被请求的资源(如HTML文件、图片、API端点等)。
检查文件权限,确保服务器有权访问这些资源。
(4)缓存问题:
清除浏览器缓存或使用无痕模式再次尝试访问。
如果服务器使用了内容分发网络(CDN)或反向代理,检查其缓存设置。
(5)日志分析:
查看服务器访问日志,确认是否收到了该请求。
检查错误日志,看是否有与404相关的错误信息。
(6)第三方服务:
如果请求涉及第三方服务(如CDN、外部API等),确保这些服务运行正常。
HTTP状态码500(内部服务器错误)
(1)服务器日志:
立即查看服务器错误日志,查找与500错误相关的详细堆栈跟踪或错误信息。
分析日志中的时间戳,确定错误发生的时间点。
(2)代码审查:
根据错误日志中的信息,定位到引发错误的代码行或模块。
仔细检查相关代码,查找可能的逻辑错误、语法错误或配置问题。
(3)环境检查:
确保服务器环境(如操作系统、数据库、依赖库等)配置正确,且版本兼容。
检查服务器资源(如CPU、内存、磁盘空间)是否充足,没有耗尽。
(4)依赖项:
如果应用程序依赖于外部库或API,确保这些依赖项可用且版本正确。
检查是否有任何已知的与依赖项相关的问题或安全漏洞。
(5)权限问题:
检查应用程序和服务器进程是否具有执行所需操作所需的权限。
特别是与文件系统、数据库和其他资源交互时,权限问题可能会导致500错误。
(6)回滚更改:
如果最近对应用程序或服务器进行了更改(如代码更新、配置更改等),尝试回滚这些更改以查看问题是否得到解决。

4、什么是敏捷开发?敏捷开发流程是怎么样的?

敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。其核心思想在于小步快跑、快速迭代、拥抱变化,不追求一开始就尽善尽美,而是把最核心的东西先交付MVP(最小可行性产品),然后根据市场反馈来对需求进行验证和矫正,以灵活敏捷的改变调整去适应变化,在一次次持续迭代中达到最终目标。
敏捷开发的流程主要包括以下步骤:
(1)目标制定与对齐:通过市场调研、业务思路、风险评估制定公司规划和目标,根据这一目标产生所有部门的目标并实现对齐。
(2)产品规划:产品研发部门根据目标制定产品关键路线图,这个路线图中分布着不同的产品特性和其完成时间。
(3)组织产品待办列表:产品规划产生的需求、客户需求、市场人员收集到的缺陷等将组成产品待办列表。
(4)需求梳理:产品负责人(Product Owner)对这个列表进行梳理,并在需求梳理会(Backlog Grooming Meeting)讲解具体每一个需求,团队成员根据需求的复杂程度评估每个任务的工作量,输出本次迭代的待办事项列表,完成优先级排序等工作。
(5)迭代规划:通过Sprint计划会,明确要执行的工作、冲刺目标等。
(6)迭代开发:期间会进行每日站会、性能测试、CodeReview、Demo、测试等工作。
(7)Sprint评审:由每个任务的负责人演示其完整的工作,由PO确定Sprint目标是否完成,版本什么时候对外发布,新增bug的紧急程度等。
(8)开回顾会议:回顾会议由Scrum团队检视自身在过去的Sprint的表现,包括人、关系、过程、工具等,思考在下一个Sprint中怎么样可以表现得更好,更高效,怎么样可以和团队合作地更愉快。

5、做接口测试过程中,下游接口需要上游数据依赖,如何处理?

(1)链式调用:
按照业务逻辑顺序,首先调用上游接口,然后基于上游接口的响应结果调用下游接口。
关键点:确保上游接口的稳定性和可用性,因为下游接口的测试依赖于上游接口的正确响应。提取上游接口的关键数据(如token、用户ID等),并将其作为下游接口的参数。
(2)使用全局变量或会话存储:
当测试框架支持全局变量或会话存储时,可以在调用上游接口后将关键数据保存在这些存储中,以便在调用下游接口时直接使用。
关键点:选择合适的存储机制(如全局变量、测试框架的会话对象等)。在调用上游接口后,立即保存关键数据。在调用下游接口前,从存储中读取数据。

6、POST与GET请求的区别?

(1)get是从服务器上获取数据,post是向服务器传送数据。
(2)get请求时通过URL直接请求数据,数据信息可以在URL中直接看到,比如浏览器访问;而post请求是放在请求头中的,用户无法直接看到。
(3) get传送的数据量较小,有限制,不能大于2KB;这主要是因为它受约于URL长度的限制。
(4)post传送的数据量较大,一般被默认为不受限制,但理论上,IIS4中最大量为80KB,IIS5中为100KB。
(5)get请求因为数据参数是暴露在URL中的,所以安全性比较低,如密码不能暴露的就不能用get请求;post请求中,请求信息是放在请求头的,安全性较高,可以使用。
(6)Get限制From表单的数据集的值必须为ASCLL字符,而Post支持整个ISO10646字符集。

7、用sql查询所有学生中,各科最高学生的成绩,并按成绩大小排序。(表:student_ score,字段:student_name、score、subject)

select
subject,
MAX(score) AS max_score
from
student_score s
group by
subject
order by
max_score;

8、Python有几种数据类型?

(1)Numbers(数字):数值类型就是我们日常生活中的数字,python的数字类型包括:int(长整型) float(浮点型) complex(复数)。
(2)Boolean(布尔):布尔类型是与逻辑相关一种数据类型,只有两个值:True(真)与False(假)。
(3)String(字符串):在Python变量定义中,如果其赋值的内容是通过单引号或双引号引起来的内容就是字符串String类型。
(4)List(列表):python的列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套或者叫多维列表,可以用来表示多维数组)。
(5)Tuple(元组):python的元组类似于list列表,元组用()标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。它支持字符,数字,字符串,列表,元组等所有类型元组的取值、截取、连接、重复与列表一样。
(6)Dictionary(字典):字典是除列表以外python之中最灵活的内置数据结构类型;列表是有序的对象集合,字典是无序的对象集合;字典用"{ }"标识;字典由索引(key)和它对应的值value组成。
(7)Set(集合):集合是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员,基本功能是进行成员关系测试和删除重复元素,可以使用大括号 { } 或者 set() 函数创建集合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/23878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink端到端的精确一次(Exactly-Once)

目录 状态一致性 端到端的状态一致性 端到端精确一次(End-To-End Exactly-Once) Flink内部的Exactly-Once 输入端保证 输出端保证 幂等写入 事务写入 Flink和Kafka连接时的精确一次保证 整体介绍 需要的配置 案例 状态一致性 流式计算本身就…

Java工作学习笔记

1、ConfigurationProperties注解是什么意思? ConfigurationProperties 可以将属性文件与一个Java类绑定,将属性文件中的变量值注入到该Java类的成员变量中 示例代码: /*** SSP配置** author mua*/ Component Data ConfigurationProperties…

如何提高接口响应速度

在非大数据(几万以上记录)的情况下,影响接口响应速度的因素中最大的是查询数据库的次数,其次才是数组遍历和简单数据处理(如根据已有字段增加新的属性,或计算值)。 一般一次数据库查询需要50毫秒…

Java Web应用,IPv6问题解决

在Java Web程序中,如果使用Tomcat并遇到了IPv6相关的问题,可以通过以下几种方式来解决: 1. 配置Tomcat以使用IPv4 默认情况下,Java可能会优先使用IPv6。如果你希望Tomcat使用IPv4,最简单的方法是通过设置系统属性来强…

无线麦克风哪个牌子性价比高?一文告诉你无线领夹麦克风怎么挑选

​当我们谈论到演讲、表演或者录制视频时,一个高质量的无线麦克风能够使得整个体验提升至一个全新的水平。它不仅能够保证声音的清晰度和真实度,还能够让使用者在演讲或者表演时更加自信和舒适。基于对市场的深入研究和用户体验的考量,我挑选…

TypeScript 中的 tsconfig.json

什么是 tsconfig.json? tsconfig.json 是 TypeScript 编译器的配置文件,用于指导编译器如何编译 TypeScript 代码。在 TypeScript 项目中,如果存在这个文件,那么在执行 tsc 命令时,编译器将会使用该文件中定义的配置选…

【Java】解决Java报错:IllegalArgumentException

文章目录 引言1. 错误详解2. 常见的出错场景2.1 非法的参数值2.2 空值或 null 参数2.3 非法的数组索引 3. 解决方案3.1 参数验证3.2 使用自定义异常3.3 使用Java标准库中的 Objects 类 4. 预防措施4.1 编写防御性代码4.2 使用注解和检查工具4.3 单元测试 结语 引言 在Java编程…

【NPS】微软NPS配置802.1x,验证域账号,动态分配VLAN(有线网络续篇)

继上一篇文章中成功实施了有线802.1x验证域账号并动态分配VLAN的策略之后,我们迎来了一个新的目标:在用户验证失败时,自动分配一个Guest VLAN,以确保用户至少能够访问基本的网络服务。这一改进将显著提升网络的灵活性和用户的上网…

书籍数字字符串转换为字母组合的种数(4)0607

题目: 给定一个字符串str,str全部由数字字符组成,如果str中某一个或某相邻两个字符组成的子串值在1~26之间,则这个子串可以转换为一个字母。规定“1”转换为“A”,“2”转换为“B”,“3”转换成“C”……“…

Kafka的分区副本机制

目录 生产者的分区写入策略 轮询策略 随机策略 按key分配策略 乱序分区 自定义分区策略 实现步骤: 消费者组Rebalance机制 Rebalance触发时机 Rebalance的不良影响 消费者分区分配策略 Range范围分配策略 RoundRobin轮询策略 Stricky粘性分配策略 生产…

计算机网络-NAT配置与ACL

目录 一、ACL 1、ACL概述 2、ACL的作用 3、ACL的分类 4、ACL的配置格式 二、NAT 1、NAT概述 2、NAT分类 2.1 、 静态NAT 2.2 、 动态NAT 3、NAT的功能 4、NAT的工作原理 三、NAT配置 1、静态NAT配置 2、动态NAT配置 四、总结 一、ACL 1、ACL概述 ACL&#xff…

让编程变得更加直观与高效 “JAVA图形化编程”官网上线!

公测预约开启 我们历经了长达三年的时光,执着地坚守并潜心地进行探索,始终怀着一颗敬畏的心,最终极为谨慎地推出了这款图形化编程桌面。它能够使得业务与程序清晰明了地呈现,而且还能与传统的低零代码平台实现紧密…

新品发布 | 飞凌嵌入式RK3576核心板,为AIoT应用赋能

为了充分满足AIoT市场对高性能、高算力和低功耗主控日益增长的需求,飞凌嵌入式全新推出基于Rockchip RK3576处理器开发设计的FET3576-C核心板! 集成4个ARM Cortex-A72和4个ARM Cortex-A53高性能核,内置6TOPS超强算力NPU,为您的AI…

LeetCode 两数之和 + 三数之和

两数之和 简单题 思路:一个Map,key是数值,value是该数值对应的下标,遍历的时候判断一下当前数组下标对应的值在map里有没有可组合成target的(具体体现为在map里找target-nums【i】),如果有,直接…

IDEA使用阿里通义灵码插件

在这个AI火热的时代,纯手工写代码已经有点out了,使用AI插件可以帮我们快速写代码,起码能省去写那些简单、重复性的代码,大大提高编码效率,在这里我推荐使用阿里的通义灵码 注册安装 安装注册好后,打开我们…

深入探索Spark MLlib:大数据时代的机器学习利器

随着大数据技术的迅猛发展,机器学习在各行各业的应用日益广泛。Apache Spark作为大数据处理的利器,其内置的机器学习库MLlib(Machine Learning Library)提供了一套高效、易用的工具,用于处理和分析海量数据。本文将深入探讨Spark MLlib,介绍其核心功能和应用场景,并通过…

【流媒体】音频相关概念详解

文章目录 一、前言二、概述三、音频相关概念1、采样率(Sampling rate)2、位深度(Bit depth)3、比特率(Bit rate)4、声道(Audio channel)5、音频帧6、音频编码7、音频解码 一、前言 …

【vuejs】$nextTick的原理分析和使用场景

1. $nextTick 概述 Vue.js 框架中的 $nextTick 是一个非常重要的 API,它允许开发者延迟回调函数的执行直到下次 DOM 更新循环之后。这意味着,当开发者在 Vue 组件中更改了数据,并且想要在 DOM 更新完成后执行某些操作时,可以使用…

总结开发过程遇到问题有哪些渠道可以寻找解决方案

罗列一下 百度、ChatGPT/讯飞星火等AI、Stack Overflow、github isssue 平时开发过程遇到问题的主要解决方式都是百度或者询问ChatGPT,当然在java中这两个方式也能解决百分之80的问题,毕竟java的社区圈够热闹。 如何优雅地使用 Stack Overflow 一、学…

搭建自己的DNS服务器

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…