解构与重构:自动化测试框架的进阶认知之旅

目录

一、自动化测试的介绍

(一)自动化测试的起源与发展

(二)自动化测试的定义与目标

(三)自动化测试的适用场景

二、什么是自动化测试框架

(一)自动化测试框架的定义

(二)常见自动化测试框架分类

(三)自动化测试框架的核心价值

三、自动化测试框架与普通测试代码的区别

四、自动化测试框架需要具备的功能

(一)测试用例管理

(二)测试执行控制

(三)依赖管理与环境配置

(四)日志与错误处理

(五)结果分析与报告生成

(六)兼容性与可移植性

五、以 Pytest 为例解析自动化测试框架

(一)Pytest 的核心必备功能

(二)Pytest 的扩展功能

(三)Pytest 的架构原理图

六、什么样的测试框架才是好的自动化测试框架

(一)易用性

(二)可扩展性

(三)稳定性与可靠性

(四)社区与生态

(五)性能与效率


  在软件研发的高速迭代时代,自动化测试早已从 "锦上添花" 变为 "刚需标配"。对于日均接口调用量过亿的互联网服务,或是对稳定性要求苛刻的智能汽车软件,手工测试的效率与覆盖率已难以满足需求。

  自动化测试通过脚本替代重复劳动,让测试工程师从 "点击侠" 蜕变为 "代码工匠",而自动化测试框架则是打造高效测试体系的核心基建。本文将与大家一起重新认识一下自动化测试框架了解一下自动化测试框架的本质与价值。

一、自动化测试的介绍


(一)自动化测试的起源与发展

在软件行业发展初期,手工测试占据主导地位。随着软件规模的不断扩大,功能日益复杂,项目迭代速度加快,手工测试在面对频繁的回归测试时,效率低下、人力成本高、测试结果不稳定等问题逐渐凸显。于是,自动化测试应运而生。它最初只是一些简单的脚本,用于重复执行一些繁琐的测试任务。随着技术的发展,自动化测试不断演进,逐渐形成了成熟的体系和框架。

(二)自动化测试的定义与目标

自动化测试是通过编写程序或使用工具,让计算机自动执行测试用例,并对测试结果进行验证和分析的过程。其核心目标主要有以下几点:

  • 提高测试效率,减少重复劳动,让测试人员从繁琐的手工操作中解放出来,专注于更有价值的测试设计和分析工作。
  • 提升测试的准确性和稳定性,避免人为因素对测试结果的影响。
  • 实现对软件的全面测试,尤其是在大规模、复杂系统的测试中,能够覆盖更多的测试场景和用例。
  • 支持持续集成和持续部署(CI/CD),确保软件在每次变更后都能快速、可靠地进行测试,加快产品的发布周期。

(三)自动化测试的适用场景

并非所有的测试场景都适合采用自动化测试,它更适用于以下情况:

场景类型​

典型案例​

自动化收益​

重复执行​

每日接口冒烟测试​

节省 90% 执行时间​

数据敏感​

批量数据校验​

避免人工误判​

环境复杂​

多设备 UI 兼容性测试​

覆盖 80% 以上设备组合​

性能压测​

高并发接口测试​

精准定位吞吐量瓶颈​

以我在互联网风控行业和汽车行业的项目经验为例,在互联网风控系统中,每天都需要对大量的风控规则进行验证,这些规则的测试用例相对稳定且需要频繁执行,自动化测试就发挥了巨大的作用;而在汽车行业的软件测试中,针对车载 APP 的兼容性测试,需要在不同的车载系统和硬件设备上进行,自动化测试能够高效地完成这些任务。


二、什么是自动化测试框架

(一)自动化测试框架的定义

自动化测试框架是一个集成了多种工具、库和规范的软件系统,它为自动化测试提供了一个结构化的环境,使得测试人员能够更方便、高效地编写、管理和执行测试用例。它不仅仅是一些测试脚本的集合,而是包含了测试用例管理、测试执行、结果分析、日志记录、报告生成等多个功能模块,形成了一个完整的测试体系。

(二)常见自动化测试框架分类

根据不同的测试对象和场景,自动化测试框架可以分为多种类型:

  • 单元测试框架:主要用于测试软件中的最小可测试单元,如函数、类等。在 Python 技术栈中,常见的单元测试框架有 unittest、pytest 等。
  • 接口测试框架:用于测试软件系统的接口,包括 HTTP 接口、RPC 接口等。通常会结合 requests、urllib3 等库来实现,例如可以基于 pytest 搭建接口测试框架。
  • UI 自动化测试框架:针对软件的用户界面进行测试,模拟用户在界面上的操作,如点击、输入、滑动等。在 APP 自动化测试中,常用的框架有 Appium;而对于 Web 界面,Selenium 是广泛使用的工具,结合 pytest 可以构建功能强大的 UI 自动化测试框架。
  • 性能测试框架:用于评估软件系统的性能指标,如响应时间、吞吐量、并发能力等。常见的性能测试框架有 JMeter、Locust 等,在 Python 中也可以使用 Locust 来编写性能测试脚本。

(三)自动化测试框架的核心价值

一个好的自动化测试框架能够为测试工作带来诸多好处:

  • 标准化和规范化:提供统一的测试编写规范和流程,确保测试用例的一致性和可维护性。例如,规定测试用例的命名规则、断言方式、日志记录格式等。
  • 复用性和扩展性:通过封装公共的功能模块,如数据库操作、网络请求、页面元素定位等,使得测试人员无需重复编写代码,提高开发效率。同时,框架的架构设计应具备良好的扩展性,方便添加新的功能和支持新的测试场景。
  • 降低测试成本:虽然搭建自动化测试框架需要一定的前期投入,但从长远来看,它能够大大减少测试人员的重复劳动,提高测试效率,降低人力成本和时间成本。
  • 提升测试质量:框架提供的丰富功能,如详细的日志记录、准确的错误定位、全面的结果分析等,有助于测试人员更快地发现和解决问题,提升软件的质量。

三、自动化测试框架与普通测试代码的区别


为了更清晰地理解自动化测试框架的特点,我们将其与普通测试代码进行对比,如下表所示:

对比维度

普通测试代码

自动化测试框架

可维护性

通常是针对单个测试场景编写的脚本,结构松散,缺乏统一的规范和组织。随着测试用例的增加,代码会变得难以维护,修改一个地方可能会影响多个测试用例。

具有清晰的架构和模块划分,遵循一定的设计模式和规范。测试用例、公共函数、配置文件等分开管理,便于维护和更新。当需求发生变化时,只需在相应的模块中进行修改,不会对整个框架造成太大影响。

复用性

代码复用率低,很多公共功能需要在每个测试脚本中重复编写,例如数据库连接、登录操作等。

高度封装公共功能,形成可复用的模块或库。测试人员可以直接调用这些公共模块,避免重复开发,提高开发效率。例如,在接口测试框架中,登录功能可以封装成一个公共函数,供所有需要登录的测试用例调用。

扩展性

扩展性较差,当需要增加新的测试功能或支持新的测试场景时,需要对现有代码进行大量修改,甚至重新编写。

设计时考虑了扩展性,提供了插件机制或扩展接口,方便添加新的功能模块。例如,pytest 框架可以通过安装插件来扩展其功能,如生成测试报告、支持分布式测试等。

功能完整性

通常只包含简单的测试逻辑和断言,缺乏测试用例管理、日志记录、报告生成等功能。测试结果的分析和定位需要手动进行,效率低下。

集成了丰富的功能模块,具备测试用例管理(如分组、排序、过滤)、测试执行控制(如并行执行、重试机制)、日志记录(详细记录测试过程中的信息)、结果分析(自动判断测试结果是否通过)、报告生成(生成美观、详细的测试报告)等功能,形成了一个完整的测试生态系统。

团队协作

适合个人或小规模团队使用,代码风格和规范因人而异,团队成员之间的协作成本较高。

提供了统一的开发规范和协作机制,便于团队成员共同开发和维护。例如,框架中规定了代码提交的流程、分支管理策略、单元测试的要求等,确保团队成员能够高效协作。

通过以上对比可以看出,自动化测试框架是普通测试代码的升级和扩展,它解决了普通测试代码在可维护性、复用性、扩展性和功能完整性等方面的不足,是实现高效、高质量自动化测试的关键。

四、自动化测试框架需要具备的功能


一个完整的自动化测试框架需要具备以下核心功能,这些功能相互协作,共同构成了框架的基础:

(一)测试用例管理

  • 用例组织与分类:能够按照不同的维度对测试用例进行组织和分类,如按照功能模块、测试类型(冒烟测试、回归测试、性能测试等)、优先级等。例如,在框架中可以创建不同的目录结构来存放不同模块的测试用例,每个测试用例文件中可以通过标签或注释来标记测试类型和优先级。
  • 用例编写与维护:提供方便的测试用例编写方式,支持多种断言方式和数据驱动测试。数据驱动测试可以通过读取外部文件(如 Excel、JSON、YAML 等)中的数据来生成多个测试用例,提高测试用例的复用性。例如,使用 pytest 的参数化功能,可以轻松实现数据驱动测试。
  • 用例筛选与执行:能够根据不同的条件筛选出需要执行的测试用例,如按标签、模块、优先级等。在持续集成环境中,通常只需要执行冒烟测试用例或本次变更相关的测试用例,通过框架的用例筛选功能可以快速实现。

(二)测试执行控制

  • 执行流程管理:控制测试用例的执行顺序,支持顺序执行、并行执行等多种执行方式。并行执行可以提高测试效率,尤其是在测试用例之间相互独立的情况下。例如,pytest 可以通过插件实现多线程或多进程并行执行测试用例。
  • 重试机制:对于一些偶发失败的测试用例,框架应具备重试机制,自动重新执行失败的用例,减少人为干预。可以设置重试的次数和间隔时间,避免因环境不稳定等因素导致的误判。
  • 断点调试:方便测试人员在测试执行过程中进行断点调试,查看变量值、调用栈等信息,快速定位问题。例如,在 Python 中使用 pdb 调试器结合自动化测试框架,可以实现对测试脚本的调试。

(三)依赖管理与环境配置

  • 环境配置管理:能够轻松配置不同的测试环境,如开发环境、测试环境、生产环境等。通过读取环境配置文件,框架可以自动加载相应的配置信息,如数据库连接参数、接口地址、浏览器驱动路径等。
  • 依赖注入:在测试用例中,经常需要依赖一些外部资源,如数据库、文件系统、网络服务等。框架应提供依赖注入机制,方便测试人员管理这些依赖,降低测试用例与依赖资源之间的耦合度。例如,使用 fixture(夹具)机制来管理测试用例的前置条件和后置清理操作,这是 pytest 框架的一个重要特性。
  • 环境清理:在测试用例执行完毕后,能够自动清理测试过程中产生的垃圾数据和临时文件,确保测试环境的一致性和纯净性。例如,在数据库测试中,每个测试用例执行完毕后,应删除测试过程中创建的测试数据,避免影响其他测试用例的执行。

(四)日志与错误处理

  • 详细日志记录:记录测试执行过程中的详细信息,包括测试用例的开始和结束时间、输入输出数据、异常信息等。日志可以帮助测试人员在测试失败时快速定位问题,分析测试过程中的行为。例如,在框架中可以使用 Python 的 logging 模块来实现日志功能,将日志输出到文件或控制台。
  • 异常捕获与处理:能够捕获测试执行过程中出现的异常,并进行适当的处理,如记录异常信息、跳过当前测试用例、终止测试执行等。同时,框架应提供友好的错误提示信息,帮助测试人员理解异常发生的原因。
  • 错误定位:当测试用例失败时,框架应能够准确地定位到失败的代码行,并提供相关的上下文信息,如变量值、调用栈等,方便测试人员进行调试和修复。

(五)结果分析与报告生成

  • 结果判断:自动判断测试用例的执行结果是否通过,根据断言条件来验证测试预期是否满足。断言是自动化测试中非常重要的环节,它决定了测试用例的正确性。
  • 统计与分析:对测试结果进行统计和分析,如计算测试用例的通过率、失败率、执行时间等指标。通过这些指标,测试人员可以了解测试的整体情况,评估软件的质量。
  • 报告生成:生成美观、详细的测试报告,报告应包含测试基本信息(如测试时间、环境、执行人员等)、测试结果统计、失败用例详细信息(如错误信息、日志截图等)。常见的测试报告格式有 HTML、XML、JSON 等,例如 pytest 可以通过 pytest - html 插件生成 HTML 格式的测试报告,通过 allure 插件生成更美观、功能更强大的报告。

(六)兼容性与可移植性

  • 多平台支持:能够在不同的操作系统(如 Windows、Linux、macOS)上运行,支持不同的浏览器(如 Chrome、Firefox、Edge)和设备(如手机、平板、车载终端等)。例如,Appium 框架可以同时支持 iOS 和 Android 系统的 APP 自动化测试。
  • 多语言支持:对于一些大型团队或复杂项目,可能需要支持多种编程语言的测试脚本。虽然我们这里主要讨论 Python 技术栈,但优秀的自动化测试框架通常具有良好的开放性,能够与其他语言的工具和库进行集成。
  • 版本兼容性:能够兼容不同版本的开发框架、测试工具和依赖库,确保在软件版本升级时,框架能够稳定运行,减少因版本不兼容导致的问题。

五、以 Pytest 为例解析自动化测试框架


Pytest教程可移步我的专栏: https://blog.csdn.net/weixin_40025666/category_12080951.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12080951&sharerefer=PC&sharesource=weixin_40025666&sharefrom=from_link

(一)Pytest 的核心必备功能

        1.简洁的测试用例编写

Pytest 采用非常简洁的语法,不需要像 unittest 那样创建测试类和继承 TestCase 类,只需要编写普通的函数即可,函数名以 "test_" 开头,测试方法中的参数可以直接使用 fixture。以下是一个简单的 Pytest 测试用例示例:

def test_addition():result = 1 + 1assert result == 2, "加法运算失败"

        2.强大的 fixture 机制

fixture 是 Pytest 的一大特色,它用于管理测试用例的前置条件和后置清理操作,实现了测试用例之间的依赖管理和资源共享。fixture 可以通过 @fixture 装饰器来定义,然后在测试用例中直接作为参数传入。例如,以下是一个用于数据库连接的 fixture:

import pytest
import psycopg2@pytest.fixture(scope="module")
def db_connection():connection = psycopg2.connect(dbname="test_db",user="user",password="password",host="localhost")yield connectionconnection.close()def test_query_data(db_connection):cursor = db_connection.cursor()cursor.execute("SELECT * FROM users")data = cursor.fetchall()assert len(data) > 0, "查询结果为空"

在这个示例中,db_connection fixture 在模块级别(scope="module")创建数据库连接,所有使用该 fixture 的测试用例共享同一个连接,测试结束后关闭连接,实现了资源的高效管理。

        3.灵活的参数化测试

Pytest 支持通过 @parametrize 装饰器实现参数化测试,允许使用不同的输入数据运行同一个测试用例,大大提高了测试用例的覆盖率。例如,测试一个加法函数:

import pytest@pytest.mark.parametrize("a, b, expected", [(1, 2, 3),(0, 0, 0),(-1, 1, 0),
])
def test_add(a, b, expected):assert a + b == expected

这样,一个测试用例就可以覆盖多种输入情况,减少了重复编写测试用例的工作量。

        4.测试发现与执行控制

Pytest 能够自动发现项目中的测试用例,无需手动配置测试套件。它会在指定的目录下查找所有以 "test_" 开头的文件和函数。同时,支持通过命令行参数灵活控制测试用例的执行,如指定执行某个文件、某个测试函数、按标签筛选等。例如,执行所有标记为 "smoke" 的测试用例:

pytest -m smoke

(二)Pytest 的扩展功能

        1.丰富的插件生态

Pytest 拥有庞大的插件生态系统,通过安装不同的插件可以扩展其功能,满足各种不同的测试需求。以下是一些常用的插件:

  • pytest-html:生成美观的 HTML 格式测试报告,包含测试结果统计、失败用例详细信息、日志记录等。
  • pytest-allure:生成更强大的测试报告,支持丰富的可视化效果,如趋势图、饼图等,还可以集成到 CI/CD 系统中。
  • pytest-xdist:实现测试用例的并行执行,提高测试效率,尤其适合大规模测试套件。
  • pytest-mock:用于模拟和补丁对象,方便在测试中处理依赖关系,例如模拟数据库连接、网络请求等。
  • pytest-django:专门用于 Django 框架的测试,提供了对 Django 模型、视图、表单等的支持。

        2.与其他工具的集成

Pytest 可以轻松与其他测试工具和库集成,形成强大的自动化测试解决方案。例如,在接口测试中,可以结合 requests 库发送 HTTP 请求,使用 pytest 进行测试用例的管理和执行;在 UI 自动化测试中,可以与 Selenium、Appium 等工具结合,实现对 Web 和 APP 界面的自动化测试。

        3.自定义标记与钩子函数

通过自定义标记(mark),可以对测试用例进行分类和标记,方便后续的筛选和执行。同时,Pytest 提供了丰富的钩子函数(hook function),允许用户在测试执行的不同阶段(如测试开始前、测试用例收集时、测试执行后等)插入自定义的逻辑,实现对框架的高度定制化。例如,可以通过钩子函数修改测试报告的内容,或者在测试用例失败时自动截图保存。

(三)Pytest 的架构原理图

为了更清晰地理解 Pytest 的工作原理,我们绘制了以下架构原理图:


在这个架构中,Pytest 首先收集项目中的测试用例,然后根据 fixture 的定义初始化相关的资源和前置条件,接着执行测试用例并进行断言,最后记录日志和生成测试报告。插件在各个环节中发挥了重要作用,扩展了框架的功能。


六、什么样的测试框架才是好的自动化测试框架

(一)易用性

  • 学习成本低:好的测试框架应该具有简洁明了的文档和示例,方便新手快速上手。例如,pytest 的文档非常详细,并且提供了大量的示例代码,使得测试人员能够快速掌握其基本用法。
  • 语法简洁:测试用例的编写语法应简洁易懂,避免繁琐的代码结构。像 pytest 不需要复杂的类定义,直接编写函数即可,大大提高了测试用例的编写效率。
  • 工具链完善:提供配套的工具和插件,方便测试人员进行开发、调试、运行和维护。例如,Pytest 的插件生态系统非常丰富,几乎可以满足各种测试需求。

(二)可扩展性

  • 插件机制:支持通过插件或扩展接口添加新的功能,而无需修改框架的核心代码。这样可以让框架随着技术的发展和项目的需求不断进化,保持长久的生命力。
  • 开放的架构:框架的架构设计应具有良好的开放性,能够方便地与其他工具和库进行集成。例如,能够轻松集成持续集成工具(如 Jenkins、GitLab CI)、缺陷管理系统(如 Jira、Bugzilla)等。
  • 自定义能力:允许用户自定义测试流程、断言方式、报告格式等,满足不同项目的特殊需求。例如,通过 Pytest 的钩子函数,用户可以自定义测试用例的收集规则、执行流程和结果处理方式。

(三)稳定性与可靠性

  • 健壮的核心:框架的核心代码应经过充分的测试和验证,能够处理各种异常情况,避免在测试执行过程中出现框架本身的错误。
  • 兼容性强:能够兼容不同版本的开发框架、测试工具和运行环境,确保在项目的不同阶段都能稳定运行。
  • 准确的结果判断:断言机制应准确可靠,能够正确判断测试用例的执行结果,避免误判和漏判。

(四)社区与生态

  • 活跃的社区:拥有庞大的用户群体和活跃的社区,能够及时获得技术支持和解决方案。当遇到问题时,可以通过社区论坛、技术博客、问答平台等获取帮助。
  • 丰富的生态系统:周边生态丰富,包括大量的插件、教程、最佳实践等,能够降低框架的使用成本和学习成本。例如,Pytest 的社区非常活跃,相关的教程和示例随处可见,插件数量也非常多。
  • 持续的更新与维护:框架的开发团队应持续对框架进行更新和维护,修复漏洞,添加新功能,以适应技术的发展和用户的需求。

(五)性能与效率

  • 快速的执行速度:在处理大规模测试套件时,能够高效地执行测试用例,支持并行执行、增量测试等功能,减少测试的等待时间。
  • 资源利用率高:合理管理测试过程中的资源,如内存、CPU、网络连接等,避免资源泄漏和浪费,确保测试环境的稳定和高效。

自动化测试框架是软件自动化测试的核心支撑,它不仅仅是一个工具,更是一种测试思想和方法论的体现。从最初的简单脚本到如今功能强大、架构完善的框架,自动化测试框架在不断发展和演进。

在实际项目中,选择和搭建适合自己团队和项目的自动化测试框架至关重要。我们需要根据项目的需求、技术栈、团队成员的技能水平等因素综合考虑,选择易用性好、可扩展性强、稳定性高的框架。同时,要充分利用框架的功能和生态,结合实际项目经验,不断优化和完善测试框架,提高自动化测试的效率和质量。

随着软件行业的不断发展,自动化测试框架也将面临新的挑战和机遇。未来,自动化测试框架可能会更加智能化,结合人工智能和机器学习技术,实现测试用例的自动生成、缺陷的智能定位等功能;同时,在云计算、大数据、物联网等新兴技术的推动下,自动化测试框架需要支持更多复杂的测试场景和分布式测试环境。

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

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

相关文章

跑不出的循环 | LoveySelf 系列定位

最近开始陷入一轮一轮的循环状态,无奈,只能自我整理一下。23年暑假,在计算机系折腾了一年后,重新打开博客,回想在数学系摸索博客写作的日子,思绪涌上心头,我们决定拾起这份力量。当时觉得 hexo …

Redis最新入门教程

文章目录 Redis最新入门教程1.安装Redis2.连接Redis3.Redis环境变量配置4.入门Redis4.1 Redis的数据结构4.2 Redis的Key4.3 Redis-String4.4 Redis-Hash4.5 Redis-List4.6 Redis-Set4.7 Redis-Zset 5.在Java中使用Redis6.缓存雪崩、击穿、穿透6.1 缓存雪崩6.2 缓冲击穿6.3 缓冲…

一文读懂Python之requests模块(36)

一、requests模块简介 requests模块是python中原生的一款基于网络请求的模块,功能强大,简单便捷且高效 ,该模块可以模拟浏览器发送请求,主要包括指定url、发起请求、获取响应数据和持久化存储,包括 GET、POST、PUT、…

WPF之布局流程

文章目录 1. 概述2. 布局元素的边界框3. 布局系统原理3.1 布局流程时序图 4. 测量阶段(Measure Phase)4.1 测量过程4.2 MeasureOverride方法 5. 排列阶段(Arrange Phase)5.1 排列过程5.2 ArrangeOverride方法 6. 渲染阶段(Render Phase)7. 布局事件7.1 主要布局事件7.2 布局事件…

uniapp|获取当前用户定位、与系统设定位置计算相隔米数、实现打卡签到(可自定义设定位置、位置有效范围米数)

基于UniApp阐述移动应用开发中定位功能的实现全流程,涵盖实时定位获取、动态距离计算与自定义位置、有效范围设定等功能。文章提供完整的代码示例与适配方案,适用于社交签到、课堂教室打卡等场景。 目录 引言定位功能在移动应用中的价值(社交、导航、O2O等场景)UniApp跨平台…

Yii2.0 模型规则(rules)详解

一、基本语法结构 public function rules() {return [// 规则1[[attribute1, attribute2], validator, options > value, ...],// 规则2[attribute, validator, options > value, ...],// 规则3...]; }二、规则类型分类 1、核心验证器(内置验证器&#xff0…

数据结构(三)——栈和队列

一、栈和队列的定义和特点 栈:受约束的线性表,只允许栈顶元素入栈和出栈 对栈来说,表尾端称为栈顶,表头端称为栈底,不含元素的空表称为空栈 先进后出,后进先出 队列:受约束的线性表&#xff0…

SQL Server 存储过程开发三层结构规范

以下是《SQL Server 存储过程开发三层结构规范》的正式文档结构,适用于企业级数据库应用开发场景,有助于团队协作、代码审查与自动化运维: 📘 SQL Server 存储过程开发三层结构规范 一、架构设计总览 三层结构简介 层级命名约定…

接上篇,解决FramePack启动报错:“httpx.ReadError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。“的问题

#工作记录 FramePack部署(从PyCharm解释器创建和使用开始)保姆级教程-CSDN博客 上篇我们记录到FramePack从克隆到启动调试的保姆级教程,关于启动时会报以下错误的问题,已作出解决: 报错摘录: (.venv) PS F…

ping_test_parallel.sh 并行网络扫描脚本

并行网络扫描脚本分析:提高网络探测效率 引言脚本概述核心代码分析颜色定义与初始化并行处理机制并行执行与进程控制结果处理与统计 技术亮点性能分析结论附录:完整脚本 引言 在网络管理和运维过程中,快速检测网段内主机的在线状态是一项常见…

leetcode 3342. 到达最后一个房间的最少时间 II 中等

有一个地窖,地窖中有 n x m 个房间,它们呈网格状排布。 给你一个大小为 n x m 的二维数组 moveTime ,其中 moveTime[i][j] 表示在这个时刻 以后 你才可以 开始 往这个房间 移动 。你在时刻 t 0 时从房间 (0, 0) 出发,每次可以移…

关于vue-office在vue3工程中的引用报错问题

在vue3项目工程中,根据vue-office文档在vue2中的引用: //引入VueOfficeDocx组件 相关样式import VueOfficeDocx from vue-office/docx;import vue-office/docx/lib/index.css; 报错信息: [plugin:vite:import-analysis] Failed to resolve …

【macOS常用快捷键】

以下是 macOS 最常用快捷键列表,按使用频率由高到低分类整理,涵盖日常操作、效率工具及系统控制,助你快速提升使用效率: 一、基础高频操作 快捷键功能说明Command C复制选中内容Command V粘贴Command X剪切Command Z撤销上一…

mdadm 报错: buffer overflow detected

最近跑 blktest (https://github.com/osandov/blktests) 时发现 md/001 的测试失败了 单独执行,最后定位到是 mdadm 命令报错: buffer overflow detected 这个 bug 目前已经修复: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id827e1870f3205…

查看jdk是否安装并且配置成功?(Android studio安装前的准备)

WinR输入cmd打开命令提示窗口 输入命令 java -version 回车显示如下:

STM32智能刷卡消费系统(uC/OS-III)

一、项目概述与开发背景 本系统是一款基于STM32微控制器的智能刷卡消费终端,集成RFID识别、OLED显示、Flash存储、蓝牙通信等核心模块。项目采用uC/OS-III实时操作系统实现多任务并发处理,适用于校园一卡通、企业食堂等小额支付场景。系统支持定额扣款、…

[人机交互]以用户为中心的交互设计

一.以用户为中心设计的两个特征 • 理解和指定产品的使用上下文 ,并用于指导设计 • 用户参与式开发 • 参与 评估研究 (第十 — 十四章) • 参与 设计过程 :用户作为合作设计人员 二.用户参与设计的重要性 ◦ 需求的获取主要来源…

Abaqus学习笔记

目录 Abaqus介绍 学习资源 ​编辑Abaqus/CAE abaqus下载安装 abaqus基本操作 Abaqus启动 新建模型 ​编辑 ​编辑修改界面背景 ​编辑​编辑结果信息的显示与否 ​编辑计算结果信息字体设置 ​编辑允许多绘图状态 单位量纲 视图操作 事前说明 ODB文件 本构关系…

论坛系统开发(0-1) (上 前置知识介绍)

前置知识 1. 软件的生命周期 生命周期: 对事物进行定义(描述) -> 创建 -> 使用 -> 销毁的过程 软件⽣命周期中以划分为可⾏性研究、需求分析、概要设计、详细设计、实现、组装(集成)测试、确认测试、使⽤、维护、退役10个阶段,如下图: a. 可…

架构师面试(三十七):监控系统架构模式

题目 监控是在产品生命周期的运维环节,能对产品的关键指标数据进行【实时跟踪】并对异常数据进行【实时报警】。 一句话描述,监控系统可以帮我们【主动预防和发现】业务系统中的问题。 我们常说,监控系统是 “粮草”,业务系统是…