接口测试 - postman

文章目录

  • 一、接口
    • 1.接口的类型
    • 2. 接口测试
    • 3. 接口测试流程
    • 4. 接口测试用例
      • 1. 测试用例
      • 单接口测试用例-登录案例
  • 二、HTTP协议
    • 1. HTTP请求
    • 2. HTTP响应
  • 三、postman
    • 1. 界面导航说明
      • 导入 导出用例集
    • Get请求和Post请求的区别:
    • 2.postman环境变量和全局变量
    • 3. postman 请求前置脚本
    • 4. postman断言
      • 常规六种断言
        • 断言响应状态码
      • 自定义动态参数(全局变量)断言的方式:
      • 全局断言
    • 5. 接口关联
      • 使用json提取器实现接口关联
      • 使用正则表达式提取器实现接口关联
      • 案例
    • 6. 测试必须带请求头的接口
    • 7. Postman接口Mock Servier服务器
    • 8. 接口加密
    • 9. 批量执行用例集
    • 10. 接口测试报告
      • 使用newman生成测试报告
      • 生成 环境 下的测试报告
    • 11. poatman参数化
      • 1. 导入外部数据文件(CSV / JSON)
      • 2. 读取数据文件数据
      • 案例:按手机号找运营商
  • 总结


一、接口

接口概念:系统与系统之间,组件与组件之间,数据传递交互的通道

1、什么是接口?
电脑:USB,投影机(数据传输)
软件:统称API,application, program,interface微信提现和充值,支付宝支付,银联支付接口。(鉴权码: token,key,appkey)
接口包括:内部接口和外部接口
内部接口:开发人员自己开发的对自身系统提供的接口。
外部接口:开发系统调用外部的,微信,支付宝,其他的接口。
总结:接口就是软件提供给外部的一种服务。用于做数据传输。
2.软件为什么需要接口?
因为接口能够让内部的数据被外部进行修改。
3.我们为什么要做接口测试?
(1)现在很多系统都是前后端分离,开发的进度不一样,需要把一开始开发出来的接口进行测试。
(2)基于安全考虑,前端有验证很容易绕过,直接请求接口,特别:身份证信息,银行卡金钱交易。
(3)测试推崇的是测试左移,测试尽早的介入。

1.接口的类型

1.按协议划分: http、 tcp、 IP
2.按语言划分:C++、java、php…
3.按范围划分:
a.系统之间: 多个内部系统之间、内部系统与外部系统之间
b.程序之间:方法与方法之间,函数与函数之间,模块与模块之间

# 接口
def eat(food):print(f'小鸟吃{food}')# 使用接口,传递数据
def bird():print(eat('虫子'))bird()

2. 接口测试

接口测试就是,对系统或组件之间的接口进行测试。校验传递的数据正确性和逻辑依赖关系的正确性!
接口测试,主要针对的测试目标—>服务器

  • 怎么测?
    模拟客户端,向服务器发送请求。
  • 用什么测?
    。工具: fiddler、 postman、 jemter
    。代码: python + UnitTest框架+ Requests框架
  • 测什么?
    测试服务器针对客户端请求,回发的响应数据是否与预期结果一致!

3. 接口测试流程

1.分析需求,产生需求文档(产品)
2.开发产生接口文档,解析接口文档
3.根据接口文档编写接口测试用例(送审)
4.执行测试用例

  • 工具:postman、jmeter、fiddler
  • 代码:python + requests + unittest

5.提交、跟踪缺陷
6.生成测试报告
7.(可选)接口自动化集成

接口文档:
1.能够让前端开发与后台开发人员更好的配合,提高工作效率。(有一 个统一参考的文件)
2.项目迭代或者项目人员更迭时,方便后期人员查看和维护
3.方便测试人员进行接口测试

4. 接口测试用例

1.防止测试点漏测。条理清晰
2.方便分配工具,评估工作量和时间

接口测试有:功能测试性能测试安全测试

1.手工测试,测写入到输入框中的数据是否正确。接口测试测参数对应的参数值是否正确。
2.接口测试,不单单针对参数值进行,还可以针对参数本身进行测试。

  • 正向参数:
    必选参数:所有的必选(必填)都包含。
    组合参数:所有的必选 + 任意一个或多个可选参数。
    全部参数:所有的必选 + 所有的可选参数
  • 反向参数:
    多参:多出一个或多个必选参数(可以任意指定)
    少参:缺少一个或多个必选参数。
    无参:没有必选参数。
    错误参数:参数名输入错误。

1. 测试用例

手工测试八大要素:编号、用例名称、模块、优先级、预置条件、测试数据、操作步骤、预期结果

接口测试十大要素:编号、用例名称、模块、优先级、预置条件、请求方法、URL、请求头、请求体、预期结果

单接口测试用例-登录案例

功能测试有:
1.单接口测试
2.业务场景功能测试:(按用户的实际使用场景,设计接口业务场景,建议用最少测业务场景,覆盖最多的接口)
例如:登录 - 添加用户 - 查询用户 - 修改用户- 再次查询 - 删除用户 - 查询用户

两个参数:手机号和密码
登录模块测试点:

  • 数值
    正向:登陆成功
    反向:
    1.用户名为空
    2.用户名包含特殊字符/字母
    3.用户名超过11位(12位)
    4.用户名不超过11位(10位)
    5.用户名未注册
    6.密码为空
    7.密码包含特殊字符/字母
    8.密码为1位
    9.密码错误

  • 参数(接口测试特有)
    正向:
    1.必选参数:正确用户名 + 正确密码
    2.可选参数:忽略
    3.全部参数:正确用户名 + 正确密码
    反向:
    1.多参:多abc:“123”
    2.少参:(少mobile) 没有用户名,正确密码
    3.无参:没有任何参数
    4.错误参数:(手机号参数名错误) abc:13800000002,password:123456

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、HTTP协议

什么是http协议?
http是超文本传输协议,主要用于浏览器和服务器之间交互数据,交互有两个部分:
HTTP请求: get,post,put,delete
HTTP响应: 1XX信息, 2XX成功, 3XX重定向(跳转不传值), 4XX客户端错误 , 5XX服务器错误。

1. HTTP请求

HTTP请求由三部分组成:请求行、请求头、请求体

完整格式:
请求行: http请求第一 行。 请求方法(空格) URL (空格)协议版本
请求头:语法格式: k: v
1.User-Agent: 描述请求发送端的浏览器类型。
2.Content-Type: 描述请求体的数据类型!

  • application/json: JSON数据格式
  • application/x-www-form-urlencoded: form表单数据

空行:代表http请求头结束。
请求体:请求发送时携带的数据。数据类型Content-Type的值!

2. HTTP响应

HTTP响应由三部分组成:响应行、响应头、响应体

完整格式:
响应行(状态行) :协议版本(空格)状态码(空格)状态描述

  • 状态码:
    1xx:代表指示信息。表请求已经被接收,等待继续处理。
    2xx:代表请求成功被处理、接收。常见: 200、 201
    3xx:重定向,待访问的资源,需求重新指定路径访问。
    4xx.代表客户端错误。常见: 404(请求路径不存在)、403(无权限访问)
    5xx:服务端错误。

响应头:Content-Type:描述响应体中数据类型。
空行:代表响应头结束
响应体:绝大多数不为空。回发给客户端的消息内容。常见的有htm|网页、xml、json (请求成功: 回发数据,失败:回发错误信息),数据类型受Content-Type值影响。

三、postman

问题:
1.多种环境: 开发环境,测试环境,生成环境。
2.接口关联: 需要手动关联.
3.参数需要手动修改.

1. 界面导航说明

在这里插入图片描述

导入 导出用例集

1.导出指定用例集
在这里插入图片描述
2.导入用例集
在这里插入图片描述

Get请求和Post请求的区别:

1.get请求一般是获取数据,post请求一般的提交数据。
2.post请求和get请求安全。
3.本质区别是传参的方式不-样:
get请求在地址栏后面以?的方式传参,多个参数之间用&分隔。
post请求是在body以表单的方式传参。

2.postman环境变量和全局变量

环境变量:环境变量就是在特定环境下(生产环境、开发环境、测试环境)生效的变量,在本环境唯一。
在这里插入图片描述
全局变量:全局变量是能够在任何接口里面访问的变量。
获取环境变量和全局变量的值通过: {{变量名}}

3. postman 请求前置脚本

在send按钮点击后,请求前置脚本代码,第一时间被执行。在postman内部实际http请求之前。

Postman内置动态参数以及自定义的动态参数(时间戳)

  1. postman内置动态参数:
    {{$timestamp}} 生成当前时间的时间戳。
    {{SrandomInt}} 生成0-1000之间的随机数
    {{$guid}} 生成GUID字符串。
  2. 自定义动态参数
//手动的获得时间戳
var times = Date.now();
//设置为全局变量
pm.globals.set("times", times);// 使用:{{times}}

在这里插入图片描述

4. postman断言

常规六种断言

Status code:Code is 200检查返回的状态码是否为200
Response body:Contains string检查响应中包括指定字符串
Response body:Json value check检查响应中其中json的值
Response body : is equal to a string检查响应等于一个字符串
Response headers : Content-Type...检查是否包含响应头Content-Type
Response time is less than 200ms :检查请求耗时小于200ms
在这里插入图片描述
在这里插入图片描述

断言响应状态码
//断言响应状态码是否为200
pm.test("检查返回状态码位200", function () {pm.response.to.have.status(200);
});pm:代表postman的一个实例
test():是pm实例的一个方法。有两个参数参数1:在断言成功后,给出的文字提示。可以修改。"Status code is 200"参数2:匿名函数。
pm.response.to.have.status(200);// postman的响应结果中应该包含状态码200

自定义动态参数(全局变量)断言的方式:

pm.globals.get("times")
globals['times"]
globals.times
在这里插入图片描述

全局断言

如果有多种重复的断言,比如状态断言,可以设置为全局断言。
在这里插入图片描述

5. 接口关联

介绍:应用于多个http请求之间,有数据关联、或依赖关系时。

A接口依赖B接口的数据:

  1. 向B接口发送http请求,获取数据
  2. 将数据设置至全局变量(环境变量)中
  3. A接口获取全局变量(环境变量)中数据值,进行使用。

使用json提取器实现接口关联

json校验工具:https://www.bejson.com/
脚本1:

// 第一个接口:
//使用json提取器提取accesss_token值。
//把返回的字符串格式的数据转换成对象的形式。
let res = JSON.parse(responseBody)
//把access_token设置为全局变量
pm.globals.set("access_token", res.access_token);// 第二个接口:
{{access_ token}}

在这里插入图片描述
在这里插入图片描述
脚本2:

// 获取全部响应结果
var jsonData = pm.response.json()
// 从响应结果中获取token
var access_token = jsonData.access_token
// 将token写入到全局变量
pm.globals.set("access_token",access_token)

使用正则表达式提取器实现接口关联

脚本:

// 第一个接口:
//使用正则表达式提取器实现接口关联, match匹配。
let res = responseBody.match(new RegExp('"access_token":(.+?),'))
//设置为全局变量
pm.globals.set("access_token", res[1]);// 第二个接口:
{{access_ token}}

在这里插入图片描述

案例

请求获取天气接口,提取响应结果中的城市,将城市名,给百度搜索接口使用。
实现步骤:
1.创建用例集,分别创建查询天气请求和百度搜索的请求
在这里插入图片描述
2.在查询天气请求Tests中,编写代码获取城市名,写入全局变量
在这里插入图片描述
3.点击Send按钮,发送请求,查看设置的全局变量。
在这里插入图片描述
4.修改百度搜索请求,使用全局变量,按城市名进行搜索。
在这里插入图片描述

6. 测试必须带请求头的接口

常见的请求头:
Host 请求的主机地址
Connection 连接方式
Accept 客户端接收到的数据格式
X-Requested-With 异步请求
User-Agent 客户端的用户类型
Referer 来源
Cookie Cookie信息
Content-Type :请求内容的格式

7. Postman接口Mock Servier服务器

mock模拟
后端的接口还没有开发完成,前端的业务需要调用后端的接口。

  1. 创建服务器
    在这里插入图片描述
    在这里插入图片描述
  2. 自行设置返回格式
    {“error_code”:0,msg:“返回成功”,data:[]}
    在这里插入图片描述

8. 接口加密

base64
MD5 (最多)

var user = CryptoJS.MD5 ("admin").toString().toUpperCase();
var pass = CryptoJS.MD5("123").toString().toUpperCase();
pm.globals.set("user",user);
pm.globals.set("pa33",pass);

RSA
DES
AES
SHA
自定义加密算法
接口签名(难度系数高,金融项目,支付项目,银行项目,电信项目)

9. 批量执行用例集

步骤:
在这里插入图片描述
在这里插入图片描述

10. 接口测试报告

安装postman的插件newman:前提安装好node.js
npm i -g newman
newman -v 查看版本
安装newman的插件:npm i -g newman-reporter-html

使用newman生成测试报告

使用newman命令,运行导出的测试集脚本,打开cmd输入:
newman run 测试脚本文件 -e 环境变量文件 -d 外部数据文件 -r html --reporter-html-export 测试报告名.html(完整命令)
eg:
newman run demo.postman_collection.json -r html
newman run demo.postman_collection.json -r html --reporter-html-export report.html

生成 环境 下的测试报告

  1. 导出用例集
  2. 导出环境文件
    在这里插入图片描述
  3. 执行生成测试报告的命令
    newman run 用例集名称.json -e 环境变量文件 -r html --reporter-html-export 报告名称.html

11. poatman参数化

poatman参数化就是读取外部数据文件
当http请求,使用的数据有较高相似度时,相同的请求时,考虑使用参数化 (将数据组织到数据文件中)

数据文件常用的两种文件:

  • CSV
    优点: 数据组织形式简单,适用于大量数据的场合。
    缺点:
    1.不支持bool类型数据。(数据被 postman读入后,自动添加 “” 包裹bool值。)
    2.不支持多参、少参、无参、错误参数的接口测试。
    3.不支持复杂数据类型。(如 嵌套字典、列表等)
  • JSON
    优点:
    1.支持bool类型。
    2.支持多参、少参、无参、错误参数。
    3.支持复杂数据类型。
    缺点: 对于相同数据量,json数据文件大小远大于CSV文件。

格式:
在这里插入图片描述

1. 导入外部数据文件(CSV / JSON)

CSV文件

  1. 创建 xxx.csv 文件。
  2. 将数据写入到csv文件中。
  • 第一行写入的是数据对应的"字段名”。
  • 从第二行向后依次是对应的数值,数据间用英文逗号隔分
    在这里插入图片描述
  1. 在Postman中,选中使用数据文件的用例集,导入数据文件。
    1.点击用例集名称,使用Run按钮,进入"Runner"页面。
    2.使用"Select File"按钮选择xxx.csV文件。
    3.点击预览按钮,校验数据文件是否正确
    在这里插入图片描述
    在这里插入图片描述

JSON文件
用在线书写 json代码工具:https://www.json.cn/
为保证json文件书写正确再贴入记事本

  1. 创建xxx.json数据文件
  2. 在数据文件中,按json语法写入json数据。postman要求, json格式的数据文件,数据内容的最外层,必须是[ ]。内部所有的数据用{ }存储。
  3. 在Postman中,选中使用数据文件的用例集,导入数据文件。
    1.点击用例集名称,使用Run按钮,进入"Runner"页面。
    2.使用"Select File"按钮选择xxx.csV文件。
    3.点击预览按钮,校验数据文件是否正确

特性1: postman会循环一行一行的读取{}中的数据。
特性2:建议书写json数据时,无论是不是字符串,都可以用 “” 包裹value的值。

2. 读取数据文件数据

根据使用数据位置不同,有两种获取数据文件中数据的方法。

  • 第一种:请求参数(请求行、请求头、请求体)中,使用数据文件中的数据
    使用{{}}包裹 csv文件字段名 或 json文件中的key
    如: {{username}}{{password}}
  • 第二种:代码(断言、请求前置脚本)中,使用数据文件中的数据
    需要借助postman提供的关键字 data点csv文件的字段名 或 json文件的key
    如: data.usernamedata.password

案例:按手机号找运营商

在这里插入图片描述

  1. 测试单个接口,工作中参数和响应体数据对应关系。
    在这里插入图片描述
  2. 写好数据文件,按csv或json对应语法的语法格式组织数据。
    在这里插入图片描述
  3. 替换:上述用例中的两处:
    1.归属地:在代码中,用 data.字段名替换
    2.手机号:在查询参数中, 用 {{字段名}}替换。
    在这里插入图片描述

强调:一旦替换完成,Send 就不再能正常获取响应数据。(数据必须从数据文件中读取,才能正常发送请求,Send 不具备读取数据文件的功能)

  1. 选择使用数据文件的用例集,进入Runher页面。导入数据文件。运行。
    在这里插入图片描述

如果有异常,借助postman的控制台,查看。

  1. 生成测试报告
    步骤:
    1.批量执行测试用例(借助数据文件)
    2.导出测试用例集(建议与 数据文件放在一起)
    3.执行生成测试报告的命令
    newman run 用例集名称.json -d 数据文件名.csv/. json -r html --reporter-html-export 报告名称.html
    在这里插入图片描述

总结:借助数据文件,实现“数据驱动"–>有多少条数据,对应就有多少个http请求。

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

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

相关文章

《Fundamentals of Power Electronics》——Boost电路及仿真

Boost电路的拓扑结构如下所示: 下面是在simulink中搭建的一个Boost电路的仿真实验平台,其中直流输入电压为100V,电感值为1mH(模拟电阻为1毫欧),电容值为470uF,负载为50欧姆,占空比选择为0.5,开关…

探索的时光 (整数三分)

本题链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例: 输入 5 3 2 1 2 3 输出 28 思路: 根据题意,已经给出了运算函数 当我们看到这些函数的时候,联想一下,它们的单调性,以…

【建议收藏】用AI快速生成一个网页(名侦探柯南~灰原哀主题网页),适合大学生web期末大作业

下面是提供给AI的提示词和AI给出的代码以及成果展示 1、生成一个网页导航栏,宽度为1300px,高度为60px。导航区域在导航栏最右侧不超出导航栏,高60px,宽度500px,里面是5个导航菜单项横向排列,每个宽度100px&…

MySQL-查询数据-练习

练习 1.创建一个查询,显示收入超过 12,000 的雇员的名字和薪水。 select LAST_NAME,SALARY from employees where SALARY > 12000;2.创建一个查询,显示雇员号为 176 的雇员的名字和部门号。 select LAST_NAME,DEPARTMENT_ID from employees where …

Electron+Vue3+Vite+ElectronForge整合 - 一键启动两个服务 一键打包两个服务

说明 本文介绍一下 Electron Vue3 Vite Electron Forge 的高级整合操作。vue3 : 使用 TS 的语法开发; Electron : 使用 JS 的语法开发。本文将从项目初始化开始,一步一步的完成项目的启动、打包全流程的介绍。实现的效果是 : 1、一个正常…

开源博客项目Blog .NET Core源码学习(19:App.Hosting项目结构分析-7)

本文学习并分析App.Hosting项目中后台管理页面的主页面。如下图所示,开源博客项目的后台主页面采用layui预设类layui-icon-shrink-right设置样式,点击主页面中的菜单,其它页面采用弹框或者子页面形式显示在主页面的内容区域。   后台主页面…

鸿蒙OpenHarmony【轻量系统 环境搭建】 (基于Hi3861开发板)

安装Hi3861开发板特有环境 除上述[安装库和工具集]和[安装编译工具]外,针对Hi3861开发板还需要安装特定的编译工具。 工具要求 表1 Hi3861 WLAN模组需要安装的编译工具 开发工具用途SCons3.0.4编译构建工具python模块:setuptools、kconfiglib、pycry…

日本一站式软文发稿:开启你的日本市场之旅

在当今的业界里,软文发稿已经成为一种被广泛采用的营销策略。不同于硬广告的直接推销,软文发稿注重以讲故事,提供有价值的信息,借此影响和吸引读者,从而间接推广企业的产品和服务。 相对于其它地区,日本市…

【酱浦菌-爬虫项目】python爬取彼岸桌面壁纸

首先,代码导入了两个库:requests和parsel。这些库用于处理HTTP请求和解析HTML内容。 然后,它定义了一个变量url,指向网站’樱花2024年4月日历风景桌面壁纸_高清2024年4月日历壁纸_彼岸桌面’。 接下来,设置了一个HTT…

OpenHarmony实战开发-如何实现background-position样式动画开发

通过改变background-position属性&#xff08;第一个值为X轴的位置&#xff0c;第二个值为Y轴的位置&#xff09;移动背景图片位置&#xff0c;若背景图位置超出组件则超出部分的背景图不显示。 <!-- xxx.hml --> <div class"container"><div class&…

2024.4.23 LoadRunner 测试工具详解 —— VUG

目录 引言 LoadRunner 三大组件之间的关系 LoadRunner 脚本录制 启动并访问 WebTours 脚本录制 编译 运行&#xff08;回放&#xff09; LoadRunner 脚本加强 事务插入 插入集合点 插入检查点 参数化 ​编辑 打印日志 引言 问题&#xff1a; 此处为啥选择使用 Lo…

【论文阅读】ELAN-Efficient Long-Range Attention Network for Image Super-resolution

ELAN-Efficient Long-Range Attention Network for Image Super-resolution 论文地址简介1 引言2相关工作2.1 基于 CNN 的 SR 方法2.2 基于 Transformer 的 SR 方法 3 方法论3.1 ELAN 的整体流程3.2 Efficient Long-range Attention Block (ELAB) 4实验4.1实验设置4.2 与轻量级…

上位机图像处理和嵌入式模块部署(树莓派4b利用驱动实现进程数据共享)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们讨论过&#xff0c;目前在linux系统上面有很多办法可以实现多进程数据共享。这里面比如说管道&#xff0c;比如说共享内存&#xff0c;比如…

anaconda的安装和Jupyter Notebook修改默认路径

anaconda的安装 就一个注意事项:在结尾时候记得配置系统环境变量 要是没有配置这个环境变量,后面就不能cmd启动Jupyter Notebook Jupyter Notebook修改默认路径 我们要找到Jupyter Notebook的配置文件 输入下面指令 jupyter notebook --generate-config就可以找到存放配置文…

lt Redis变慢的原因及排查解决方法

前言 Redis 作为优秀的内存数据库&#xff0c;其拥有非常高的性能&#xff0c;单个实例的 OPS 能够达到 10W 左右(5-10W)。但也正因此如此&#xff0c;当我们在使用 Redis 时&#xff0c;如果发现操作延迟变大的情况&#xff0c;就会与我们的预期不符。 你也许或多或少地&…

刚刚!MySQL8.4.0 LTS发布,接着再探

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、My…

【Sentaurus TCAD仿真】学习2

Swb工具栏View简介 Swb 全称 Sentaurus Work Bench Flow Orientation 指得是 Tools 的方向。 Customize Current View 为自定义当前视图。去掉前面的勾&#xff0c;再Apply可以隐藏该变量。 Swb主页字体调整 多节点并行仿真

可平滑替代FTP的FTP替代解决方案,具有哪些强大功能?

FTP是一种广泛使用的文件传输协议&#xff0c;主要用于在网络上的计算机之间传输文件。具有以下特点&#xff1a; 1.简单易用&#xff1a;FTP协议相对简单&#xff0c;易于设置和使用&#xff0c;许多操作系统和应用程序都内置了对FTP的支持。 2.广泛的客户端支持&#xff1a…

机器学习 | 准确率、召回率、精准率、特异度傻傻分不清?ROC曲线怎么看?一篇文章帮你搞定

一、真正类、假负类、假正类与真负类 二、准确率、召回率、精准率、特异度与假正率 1. 准确率 (Accuracy) 准确率表明成功预测&#xff08;预测为负或为正&#xff09;的结果占总样本的百分比。 准确率 &#xff0c; 2. 召回率/查全率/灵敏度/真正率&#xff08;Recall&a…

OpenTK:安装和说明

OpenTK介绍 OpenTK是一个开源、跨平台的游戏开发库&#xff0c;由MonoGame团队创建。它为C#开发者提供了一个简单易用的接口&#xff0c;以便使用OpenGL、OpenAL和OpenCL进行3D渲染、音频处理和并行计算。OpenTK的目标是提供一个一致且高效的框架&#xff0c;让开发者能够专注于…