当前位置: 首页 > news >正文

如何打造一支敏捷测试团队

文章目录

  • 摘要
  • 01 从测试角度理解敏捷理念
    • 什么是敏捷?测试人员应该怎样理解敏捷理念?
    • 敏捷宣言
    • 对于测试活动的启发与思考总结如下。
    • 敏捷原则12条
    • 敏捷实践框架
    • 为什么要做敏捷
  • 02 什么是敏捷测试
  • 03 敏捷测试为什么会失败
  • 04 诊断脑暴会的成果示例
    • 敏捷测试原则示例
    • 重大举措示例
    • 测试团队SWOT分析示例
    • TOP风险示例(针对测试交付)
  • 05 小结
  • 推荐理由
  • 赠书活动

摘要

摘要:敏捷转型大潮汹涌而来,各大技术公司均被卷入其中,在管理层的重视下,效能提升成为测试团队日常工作的口头禅。但是我们也看到,敏捷转型的效果参差不齐,真正深入理解敏捷要义的骨干员工数量很少,对敏捷概念的误解随处可见,转型打法上经常发生冲突,团队成员也频频感到受挫。

身处其中的测试团队往往陷入更加困惑的状态,一方面交付要快,另一方面质量兜底的挑战并未减少,使得测试人员身心俱疲,甚至成为转型中的消极角色。事实上,我认为在转型成功的敏捷研发团队之中,测试人员应该会得到足够多的收益,在工作时应该会更加愉悦舒心。为什么会身心俱疲,问题究竟出在哪里?

本文从“什么是敏捷测试”以及“敏捷为什么会失败”开始剖析,并分享对测试团队的敏捷现状做出自我诊断的过程。

更多详细内容请参考《无测试组织:测试团队的敏捷转型》一书。
在这里插入图片描述

01 从测试角度理解敏捷理念

首先,我们用极简的语言提出一个灵魂拷问,并尝试从测试的角度给出见解。

什么是敏捷?测试人员应该怎样理解敏捷理念?

敏捷知识体系本质上是一棵大树。从下到上,树根是敏捷宣言和价值观(道);树干是敏捷原则(法);树枝和树叶是各种层出不穷的实践方法框架(术)。如图所示。
在这里插入图片描述

敏捷知识之树——道、法、术

敏捷宣言

对于敏捷宣言,大家对此应该耳熟能详了,它是敏捷实践先驱们推出的共识:我们一直在实践中探寻更好的软件开发方法,身体力行,同时也帮助他人。由此我们建立了如下的价值观。

  • 个体与交互 胜过 过程与工具

  • 可用的软件 胜过 详细的文档

  • 客户协作 胜过 合同谈判

  • 响应变化 胜过 遵循计划

尽管右侧有其价值,但我们更重视左侧的价值。

对于测试活动的启发与思考总结如下。

  1. 测试活动不能忽视人和人的交流,我们不能指望所有测试依赖的信息都列在需求和设计文档里,这在研发过程中是不现实的。测试管理者是否创建了各种激励手段,推动测试人员加大交流的有效性,而不是“逼迫”产品和开发人员升级更完善的文档?

  2. 从软件的使用中获得测试知识,而不是依赖死板的文档提供测试知识。如何尽早地使用软件,并尽可能多的获得测试需要的启发?

  3. 合同中约定的质量标准就是一成不变的铁律吗?为了让客户更及时地刷新质量交付要求,能否邀请他尽早参与测试活动,并从客户这里获得有益的测试信息?

  4. 被测需求的变更率越低越好吗?并非如此,优秀产品一定是快速响应需求的。测试团队不应该期待用户需求尽可能保持不变,而是应该建立能根据变更需求及时调整策略和用例的机制。

注意,不要走向另一个极端! 过程、工具、文档、合同和计划,对于研发团队和测试活动依然很重要,如果完全去掉它们,会带来什么后果呢?大概率是欲速而不达,甚至欲哭无泪。一旦重要成员变动,项目时间拉长,很多工作可能要从头再来。

我们的目标就是通过实践,在这些产物的投入度和使用价值上取得平衡。

敏捷原则12条

敏捷原则12条的具体内容如下。

  1. 通过尽早和持续地交付有价值的软件来满足客户。

  2. 欣然面对需求变化。

  3. 不断交付可用的软件,周期越短越好。

  4. 在项目过程中,业务人员和开发人员必须在一起工作。

  5. 激发个体的斗志。给他们所需要的环境和支持,并相信他们能够完成任务。

  6. 不论团队内外,最有效的沟通方法是面对面的交谈。

  7. 可用的软件是衡量进度的主要指标。

  8. 敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持长期稳定的开发步伐。

  9. 对技术的精益求精和对设计的不断完善将提升敏捷性。

  10. 要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术。

  11. 最佳的架构、需求和设计出自于自组织的团队。

  12. 团队定期地反省如何提高成效,并相应地调整团队的行为。

这些敏捷原则是基于敏捷宣言进一步展开。

对于测试活动的启发与思考总结如下。

  1. 由交付软件的周期越短越好推导出测试活动独占的时间越短越好,这应该是核心的度量指标。

  2. 我们的测试人员是否和开发、产品、业务人员坐在一起,紧密工作?如果并非如此,管理者如何减少异地工作的负面效应。

  3. 测试人员为了达成交付目标,是否获得了敏捷团队以及测试主管的支持,是否获得了足够的信任?

  4. 测试工作投入时间是否稳定,加班情况严重吗?可持续的测试工作,首先是避免长期的加班和没有规律的工作量安排。从敏捷观点来看,长期的加班模式不但不会提高迭代速率,反而会降低速率,有规律的作息是高效工作的基础保障。

  5. 是否有合理的人力持续投入测试技术的打磨优化上?

  6. 日常的测试工作中哪些是没有必要,可以被精简的?

  7. 测试策略和方案实施,多大程度上能由敏捷团队内部人员完全掌控,而不依赖外部专业人士协助?

  8. 定期的团队反省改进措施中,是否经常有测试改进的内容?改进效果如何?

把上述原则投射到测试活动管理中,并一一做好了,测试敏捷实践的成效就不会差。可惜,能有意识地遵守大部分敏捷原则的团队少之又少。

敏捷实践框架

即使有了敏捷宣言和原则,二者还是无法在研发过程中具体指引团队完成敏捷转型。通过多年的研究和探索,各类敏捷实践框架应运而生,各具优势,能满足通用或特定团队情况。著名的敏捷实践框架有Scrum、看板、TDD/ATDD、DDD、BDD、CI/CD、PAIR、SAFe,等等。

为什么要做敏捷

在日新月异的技术高速发展的背景下,软件架构和跨软件交互的复杂度被提升到前所未有的高度。大量的行业数据告诉我们,传统研发模式遇到巨大的挑战,三分之二的功能很少甚至从来没有被客户使用,后期需求变更持续不断,但质量修复成本却不断攀升。

引入敏捷的本质,就是把传统项目管理铁三角——范围、时间和成本,进化为敏捷铁三角——价值、质量和约束条件。在现有的约束条件(可能是时间、成本或范围)下,我们会以高质量优先完成高价值的事情。
在这里插入图片描述

传统项目管理铁三角与敏捷铁三角

02 什么是敏捷测试

敏捷测试究竟是什么意思?

从2011年在某大厂开设“敏捷测试”课程至今,我对敏捷测试的理解从懵懵懂懂开始历经了几轮的重新解读,这里跟大家分享下。

从定义上可以用一句话概括,敏捷测试就是遵循敏捷价值观和原则的所有测试活动。

结合前文的敏捷理念启发,我对敏捷测试的具体解读包含如下几个方面:

  • 强调从用户角度来测试系统,而不仅仅从产品设计逻辑角度。甚至测试活动能够卷入足够的真实用户,快速搜集到意见。

  • 强调尽早开始测试,频繁地验收测试,有节奏地测试,而不是像传统流程一样强调测试的准入门槛。

  • 测试不局限在特定阶段。换句话说,测试活动贯穿整个软件生命周期,包括上线后的监控、分析和改进。改进不只是增加场景用例,更是精简用例。

  • 测试不局限在某个岗位,所有角色都应该参与一定的测试活动,认同质量内建文化,把质量标准纳入需求估算,共同为质量事故负责。

  • 质量方面的投入永远是有限的,商业项目不可能追求过于昂贵的质量改进行动。因此,只谈质量不谈付出的成本,就是耍流氓。

  • 敏捷测试策略兼具计划测试和探索测试的优点,不在前期过度设计,在执行中发挥人员的主观能动性。

  • 敏捷测试要在各种测试活动中排除不相关的干扰,减少与业务不相关的繁文缛节。测试人员在特性交付团队内能自主工作并快速获得支持。

很多人把敏捷测试理解为自动化测试,或者持续交付中的持续测试,我认为这个理解是非常狭隘的。

自动化测试并不是帮助测试团队敏捷转型成功的银弹,因为:

  • 如果测试分析和设计能力不足,用例质量不高,那么做再多的自动化测试也发现不了问题。自动化主要用来做已有功能的回归保障。

  • 自动化测试收益不一定满足组织预期,有些时候是用来掩盖测试团队真正短板的遮羞布,看着运行数据挺漂亮,可能实际价值很低。

  • 脚本数量越大,维护成本越高,不及时更新就会有杀虫剂效应(就像庄稼长期播撒一种杀虫剂会致使害虫逐渐具有抗药性),导致有效缺陷率也会越来越低。

  • 它解决不了测试团队的低效沟通问题。

  • 它通常发现不了用户关心的体验问题。

  • 自动化测试项目并不会让所有测试人员都受益,很多测试成员在自动化实践中获得的专业提升幅度很有限。

在敏捷理论的大量经典著作中,自动化测试的工程保障内容只占比例非常小的一块。更多方向的价值有待测试团队去挖掘,更多详细内容请参考《无测试组织:测试团队的敏捷转型》一书。

03 敏捷测试为什么会失败

首先,基于观察到的案例总结一下,一个公司的敏捷转型为什么会失败?

  1. 高级管理层并没有足够的决心,或者过于乐观/悲观。

转型本身会改变大家的工作流程和习惯,而敏捷又是跨多个不同岗位部门的协作。我们把单一职能部门被称为“竖井”,即只完成垂直一块的职责,如果没有高级管理者的大力支持,敏捷转型一定会在“竖井”之间的高墙阻碍下步履蹒跚。

有些高级管理者对敏捷转型有投资意愿,但是对其价值目标缺乏清楚的认识,虽然邀请了专家顾问主导,转型启动时声势浩大,投资不菲,但是过一段时期没有看到明显的成效,马上就偃旗息鼓了。

  1. 部分管理者因为权力被触动,在敏捷转型中消极对待。

敏捷原则的落实,需要特性团队自主决策,信息透明,成员平等。原先的管理者需要放弃强力干预的风格,在考核上也做出让权,而且不能利用信息不对等谋求个人的影响力。管理者不管是否在一线特性交付团队,都需要调整自己的心态和工作方式,即从命令者/指导者变为服务者。

无法转变心态的管理者,有可能对敏捷转型的新流程和效果持负面看法。也有可能强行“加戏”,在转型目标中加入不必要的内容以凸显自己的主导地位。

置身事外的管理者,也有可能针对试点敏捷中的小失误,向高管提出抱怨,否定继续敏捷转型的必要性。

官本位的管理者,往往把管理下属的人数作为自己权力大小的体现。在原来职能部门的竖井管理模式中,员工创造的价值是不太透明的。而在敏捷特性团队的模式中,每一个全职人员交付了多少价值,相对是清晰透明的,这样很容易把原来职能团队的人力水分挤出去,导致管理规模缩小。这也是一小部分管理者对敏捷持警觉态度的原因。

  1. 团队初期充满干劲,但并没有深入理解敏捷。

对于这种情况,通常随着时间的推移,团队会越来越疲乏,转型负责人身心俱疲,员工信心受挫。

团队缺乏一个精通敏捷的有影响力的教练,缺乏一个循序渐进的理解敏捷的过程。负责人可能非常热情,通过各种调研给出了改进现状的各种措施,研发平台也上线了大量提效功能,团队在初期像打了鸡血往前冲。但需要敏捷改进的地方实在太多了,在业务压力下,激情难以持续。利用工具平台提升效率的场景通常很零散,难以统一团队共识,如果大家内心连基础的敏捷原则都没有遵守,再强大的工具平台也无济于事。而且,被设计得越来越复杂的平台,会让员工更加有抵触情绪。

正确的姿势应该是先全员学习敏捷课程,演练基本技巧,明确三驾马车(Scrum Master,产品负责人,技术负责人)的角色职责,从初期到中长期,循序渐进,工具平台仅作为配套支持,从简单功能到进化功能,逐步上线。

  1. 组织架构缺乏激励。

在公司激励制度不足的情况下,有可能出现试点团队很成功,但是并没有得到任何收益,甚至团队被迫解散的情况。也经常发生一旦支持变革的领导离职,敏捷转型就走向沉默的现象。

一个长期支持敏捷成果落地的组织架构非常重要,它的目标就是让敏捷先行者根据收益得到回报,激励其他团队转型,同时也给予足够的自治权。

所有特性团队的内部考核流程也很关键,这和单一职能部门的内部考核完全不同。敏捷团队考核强调的是集体成功导向,个人被团队认可,职能部门管理者(如果有的话)最多保留部分考核权力,让业务成功的特性团队整体上都得到更多的激励,其中受团队爱戴的核心角色应该得到更多的专业晋升机会。

当然,除了这四种主要的失败原因,还有很多其他原因,这里暂且不一一展开。

让我们再从测试人员的角度来看转型失败,又有哪些原因值得更进一步剖析?

1)测试人员没有深入理解敏捷,并利用好它。

不少测试人员认为“敏捷”就是个虚架子,给我们徒增麻烦,让本就紧张的交付周期变得更加紧张,加班也会更加严重。

这些都是对敏捷的误解。测试人员没有认真理解敏捷精髓,白白错过了通过它保护自己劳动成果的机会,也可能让自己总是被不懂敏捷的其他角色瞎指挥,最终得出“敏捷没啥用”的错误认知。这类错误认知还会让其他负面因素恶化,加速失控。

2)老流程考核还在,新敏捷流程也要搞。

这是很常见的敏捷转型失败原因。测试人员经常诉苦道,原先制定的复杂流程和指标考核一个没少,新敏捷的各种纪律保障和指标又不断增加,感觉在同时打两份工,自然对敏捷行动产生抵触情绪。

敏捷变革应该从试点项目开始,重新塑造交互流程和交付标准,而不是背着历史包袱。尤其是要去除测试人员的“质量兜底”心理负担,树立起质量事故的全员担当文化,根据用户反馈数据来调整敏捷交付的质量标准。

敏捷需求和任务分工中,让测试人员的精力得到可持续保障,把测试类任务充分纳入排期(结合需求的优先级),让测试人员得到自主开展工作的充分授权。

3)缺乏技术提升机会,测试人员流失。

因为敏捷特性团队的目标是快速交付产品,而测试人员在其中可能感觉势单力薄,被辅导的机会很少,所以很多人在快节奏下逐步放弃了对测试技术的打磨,最终影响自己的专业晋升,甚至被迫离开团队,去追求更磨练技术的岗位。人员流失又加重了自动化保障缺乏的困境,陷入恶性循环。

快速交付产品的基础保障就是测试技术的高效能,这需要跨特性团队的测试领域负责人(或专家),提供更多的横向拉通和技术辅导机会。所以,测试人员分配到各个特性团队做全职工作,并不意味着原先的测试主管或测试架构师就只能做甩手掌柜。同时,每个特性团队也要在迭代排期中预留测试技术债的偿还时间,并给予较高的优先级。

4)测试变成打杂的。

和上一个原因类似,如果敏捷团队的主导者不重视专业测试的价值,不重视测试类工作,把项目当前低优先级的各类工作去填满测试人员的工作区,必将导致测试人员缺乏成就感。

这种情况也暴露了特性团队并非处于“平等、自治”和追求全栈能力的状态,违反“共同为质量负责”的原则。对于可以跨角色完成的工作,可以遵循自愿分工,按估算分配的模式。如果现阶段不希望在专业测试任务上花费太多精力,建议不在团队里安排全职的测试工程师,指派组织内的其他测试工程师参与技术评审和验收阶段把关即可。

最后,我们对敏捷测试的认知做一下纠偏:

  • 所有敏捷理论中保护开发活动效能的道理,也适用于测试活动。

  • 测试人员也会面临和开发人员一样的困扰:被频繁打扰、被浪费成果、被怀疑专业度、没有精力完成技术债。

  • 测试活动的任务排期、估算、完成速率、优先级等,也是需要统一纳入敏捷规划中的。

因此,测试团队需要建立信任、自主、透明、共建的敏捷测试文化,真正融入到整个敏捷转型组织之中。如想了解更多详细内容请参考《无测试组织:测试团队的敏捷转型》一书。

04 诊断脑暴会的成果示例

测试团队转型愿景示例
成为业界领先的高效能游戏测试团队。
说明:愿景立足于团队自身,是对团队未来3-5年的美好状态的憧憬。对愿景的描述不需要具体,业务大方向通常是长期稳定的,但业务具体规则和项目计划则每年都会变。从多年经验来看,敏捷、高效能、转型、业界领先、一流、品质、测试技术、用户体验、价值等关键词被愿景选中的概率比较高。

确定愿景的目的是从信念上把大家拉成一股绳,面向未来长期合作、共同奋斗。

敏捷测试原则示例

1) 必须优先处理超过48小时的测试环境阻塞事件,公布原因和处理措施。

2) 在所有新增测试需求被接受前,必须给出需求方理由、针对的风险等级,以及测试成本。
3) 应该将所有质量审批流程设计为并行,不能串行,非关键角色审批可以忽略。

4) 对于所有紧急的加班测试及发布版本,需给出必须紧急发布的充分理由。

说明:敏捷原则就是一句话说清楚如何操作的共识,需要是跨不同场景都能适用的抽象指导。因为工作场景五花八门,洋洋洒洒写一堆细化规则反而无法传播主旨。既然是原则,一定是挑选最典型的痛点,通过严格执行来落实敏捷价值观。

补充:我们也可以挑选几个价值观的关键词,作为敏捷测试原则的进一步提炼,方便所有成员牢牢记忆,比如:“show me the code”,流程去中介,拒绝浪费,少发报告,单测先行,劳逸结合,等等。

重大举措示例

示例一:重点参与三个试点项目敏捷转型,测试交付效能提升指标达成,梳理出敏捷测试相关的通用总结。

示例二:针对敏捷原则刷新现行的所有测试流程规范,通过评审并在团队中宣导和常规执行。

说明:重大举措相当于团队要完成的年度史诗故事,制定后还需要多次讨论其实现方案,里程碑,考核指标,拆解到个人的分工,等等。举措描述也要符合SMART。相关的辅助工作如调研和培训,可以纳入拆解出来的子举措中(相当于一个个特性需求的实现)。

可以通过敏捷研发管理系统去跟进落实所有相关的大小举措,这和普通产品需求研发的管理过程没有什么不同。

测试团队SWOT分析示例

优势:分层自动化测试平台比较完善,工程师普遍掌握自动化测试技能。

劣势:线上低级漏测情况严重,经常被质疑用例设计能力不足,测试占用周期太长,没有时间提升自动化覆盖率。

外部机会:客服部和试用用户平台愿意配合测试部,完善漏测问题的快速分析和验证,参与灰度测试活动。

外部威胁:黑盒执行团队人力比同行庞大,效率较低,管理层考虑大幅收缩编制。

说明:SWOT分析是我们在明确愿景之前对自己的深刻剖析,分析的结果就是让高价值的长板更长,并集中力量补齐阻碍我们达成愿景的关键短板。

TOP风险示例(针对测试交付)

业务交付风险:智能语音产品没有明确的质量验收范围,可测试场景数量巨大,导致交付周期长,而且线上吐槽不断。

团队发展风险:自动化测试建设口碑平平,核心工程师兴致索然,离职风险加大。

说明:最典型和严重的风险,也是制定年度举措的重要输入,因为除了一定要建设的成果,也有一定要防范的危险,否则业绩目标就可能功亏一篑。而TOP风险可以从业务交付视角和团队内部健康发展视角来提炼,内外需兼顾。

我经常在敏捷转型的启动会议上,把导致转型彻底失败的风险摊开,做个“事前追悼”的思维碰撞:请每个与会者都说一说,如果我们按照商议的计划去执行,一年后测试团队敏捷转型仍然惨败,那最有可能的导火索是什么?

这个问题可以更直接的激发员工深入思考本质风险,找出值得纳入举措的遗漏点。以下是可能的导火索示例:

  • 领导朝令夕改,放弃转型计划,不提供资源支持。

  • 一线测试人员仍然独自背负着质量兜底的责任,拒绝拥抱敏捷,甚至大量离职。

  • 测试人员的专业水平跟不上,无法支持整个特性团队的每日持续测试。漫长的测试周期和强硬的通过标准,间接影响业务发布节奏的达成。

需要更多武器?
有了诊断结果和行动目标,如何为各位读者输送合适的强力“武器”,提升关键能力,帮助愿景的达成?

每个团队的专业度和境遇不同,对于敏捷测试的指导需求也不同。敏捷测试的工具箱非常丰富,在一段时期内并不需要同时展开实践,避免负担过大。

《无测试组织:测试团队的敏捷转型》一书将为读者提供不同细分领域的理论与实操方案,帮助测试团队走向更有生命力的敏捷组织形态。欢迎读者阅读后结合自身需求采取行动。

05 小结

本文从敏捷理念的知识开始介绍,阐述了敏捷宣言和原则对于测试活动的启发,引出敏捷测试的定义。为什么敏捷转型会失败,为什么敏捷测试会失败?本章也给出了观察到的主要现象和原因。接下来,引导测试团队对最突出的阻碍和风险进行自我诊断,通过集体脑暴对团队愿景、敏捷测试原则和关键举措达成共识,并持续付诸行动。更多内容请参考《无测试组织:测试团队的敏捷转型》。
在这里插入图片描述

正版购书链接https://item.jd.com/14105386.html

这是一本从敏捷测试团队打造、敏捷测试技术修炼两个维度指导一线的测试团队和质量团队全面实现敏捷转型的著作。从一线测试团队和质量团队的视角出发,以解决测试工作中的实际困难为宗旨,以“敏捷效果”为挑选观点和素材的准绳,内容既不会随着技术的发展而过时,又能引发各类角色广泛深入地思考。

推荐理由

(1)作者背景资深:阿里巴巴海外电商公司Lazada(东南亚旗舰电商平台)的执行副总裁,曾在阿里、腾讯、OPPO、小赢科技等多家知名科技公司从事测试技术和管理工作。

(2)作者经验丰富:在软件质量和测试领域深耕20余年,曾负责手机QQ、手机QQ浏览器、腾讯手机管家、应用宝等多个知名产品的测试项目和团队管理。

(3)顶流专家推荐:阿里P10高级总监、腾讯质量通道会长、微信测试总监等多位资深专家联袂推荐。
在这里插入图片描述

赠书活动

  • 🎁本次送书1~4本【取决于阅读量,阅读量越多,送的越多】👈
  • ⌛️活动时间:截止到2023-11月10号
  • ✳️参与方式:关注博主+三连(点赞、收藏、评论)

转载自:https://blog.csdn.net/u014727709/article/details/134153533
欢迎点赞、收藏,欢迎评论,欢迎指正

相关文章:

如何打造一支敏捷测试团队

文章目录 摘要01 从测试角度理解敏捷理念什么是敏捷?测试人员应该怎样理解敏捷理念?敏捷宣言对于测试活动的启发与思考总结如下。敏捷原则12条敏捷实践框架为什么要做敏捷 02 什么是敏捷测试03 敏捷测试为什么会失败04 诊断脑暴会的成果示例敏捷测试原则…...

STM32F40EZT6 PWM可控制电压原理

PWM可控制电压原理 主要通过PWM 输入模式根据控制单位时间内输出的平均电压,以调节电压大小。而PWM输出模式通过调节占空比,控制平均电压大小; 设置TIM为PWM输出模式 第一步:时钟使能: GPIO,TIM; 第二步&a…...

信号灯集,消息队列

信号灯集 1、概念 信号灯(semaphore),也叫信号量。它是不同进程间或一个给定进程内部不同线程间同步的机制;System V的信号灯是一个或者多个信号灯的一个集合。其中的每一个都是单独的计数信号灯。而Posix信号灯指的是单个计数信号灯。 通过信号灯集实现…...

我在Vscode学OpenCV 初步接触

OpenCV是一个开源的计算机视觉库,可以处理图像和视频数据。它包含了超过2500个优化过的算法,用于对图像和视频进行处理,包括目标识别、面部识别、运动跟踪、立体视觉等。OpenCV支持多种编程语言,包括C、Python、Java等&#xff0c…...

[threejs]让导入的gltf模型显示边框

边框1效果图如下: 代码如下: const gltfLoader1 new GLTFLoader();gltfLoader1.load( "/assets/box/1/scene.gltf" ,function(gltf){let model gltf.scene;model.scale.set(3,3,3)// scene1.add(model);// renderer1.render(scene1, camera…...

YOLOv5优化:独家创新(SC_C_Detect)检测头结构创新,实现涨点 | 检测头新颖创新系列

💡💡💡本文独家改进:独家创新(SC_C_Detect)检测头结构创新,适合科研创新度十足,强烈推荐 SC_C_Detect | 亲测在多个数据集能够实现大幅涨点 目录 1. SC_C_Detect介绍 2. SC_C_Detect加入YOLOv5 2.1 新建models/head_improve.py...

作物模型--土壤数据制备过程

作物模型–土壤数据制备过程 首先打开FAO网站 下载下面这两个 Arcgis打开.bil文件 .mdb文件在access中转成.xls格式 Arcgis中对.bil文件定义投影...

学习笔记|单样本t检验|无统计学意义|规范表达|《小白爱上SPSS》课程:SPSS第四讲 | 单样本T检验怎么做?很单纯很简单!

目录 学习目的软件版本原始文档一、实战案例二、案例解析本案例之目的 四、SPSS操作1、正态性检验Tips:无统计学意义 2、t检验结果 五、结果解读六、规范报告1、规范表格2、规范文字 注意划重点 学习目的 SPSS第四讲 | 单样本T检验怎么做?很单纯很简单&…...

Bug管理规范

1BUG定义 1.1Bug状态 BUG状态标记BUG当前所处的状态,是用来处理BUG流程的主要参数,JIRA缺陷管理平台有以下一些状态: 新增(New):测试人员新发现的系统Bug; 打开(Open&#xf…...

剑指JUC原理-8.Java内存模型

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…...

Azure 机器学习 - 使用 AutoML 和 Python 训练物体检测模型

目录 一、Azure环境准备二、计算目标设置三、试验设置四、直观呈现输入数据五、上传数据并创建 MLTable六、配置物体检测试验适用于图像任务的自动超参数扫描 (AutoMode)适用于图像任务的手动超参数扫描作业限制 七、注册和部署模型获取最佳试用版注册模型配置联机终结点创建终…...

【深度学习】pytorch——快速入门

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ pytorch快速入门 简介张量(Tensor)操作创建张量向量拷贝张量维度张量加法函数名后面带下划线 _ 的函数索引和切片Tensor和Numpy的数组之间的转换张量(tensor)与标量…...

git本地项目同时推送提交到github和gitee同步

git本地项目同时推送提交到github和gitee同步 同时推送到GitHub和Gitee(码云)可以通过设置多个远程仓库地址来实现。具体步骤如下: 一、分别推送 # 初始化仓库 git init# 添加远程仓库 git remote add gitee gitgitee.com:bealei/test.git…...

结构体数据类型使用的一些注意点

1.结构体定义时的注意事项: 1.错误定义结构体: struct students {char name[9] "Mike";int height 185; }; 这是不对的,在 C 语言中,这是由语言的设计原则所决定的。结构体的定义(struct declaration&…...

Serverless化云产品超40款 阿里云发布全球首款容器计算服务

10月31日,杭州云栖大会上,阿里云宣布推出全球首款容器计算服务ACS,大幅提升操作的易用性并节省20%资源成本,真正将Serverless理念大规模落地,同时阿里云 Serverless化进程进入快车道,有超40款云产品提供了S…...

最小化安装移动云大云操作系统--BCLinux-R8-U2-Server-x86_64-231017版

有个业务系统因为兼容性问题,需要安装el8.2的系统,因此对应安装国产环境下的BCLinuxR8U2系统来满足用户需求。BCLinux-R8-U2-Server是中国移动基于AnolisOS8.2深度定制的企业级X86服务器通用版操作系统。本文记录在DELL PowerEdge R720xd服务器上最小化安…...

索引创建的原则

索引的创建是数据库优化中非常重要的一部分,正确创建索引可以大大提高查询效率。以下是一些创建索引时需要考虑的原则: 根据查询频率创建索引: 频繁用于检索的列: 那些频繁用于查询的列或经常出现在 WHERE、JOIN、ORDER BY 和 GR…...

动态表单生成Demo(Vue+elment)

摘要:本文将介绍如何使用vue和elment ui组件库实现一个简单的动态表单生成的Demo。主要涉及两个.vue文件的书写,一个是动态表单生成的组件文件,一个是使用该动态表单生成的组件。 1.动态表单生成组件 这里仅集成了输入框、选择框、日期框三种…...

JMeter断言之JSON断言

JSON断言 若服务器返回的Response Body为JSON格式的数据,使用JSON断言来判断测试结果是较好的选择。 首先需要根据JSON Path从返回的JSON数据中提取需要判断的实际结果,再设置预期结果,两者进行比较得出断言结果。 下面首先介绍JSON与JSON…...

LuatOS-SOC接口文档(air780E)--mqtt - mqtt客户端

常量 常量 类型 解释 mqtt.STATE_DISCONNECT number mqtt 断开 mqtt.STATE_SCONNECT number mqtt socket连接中 mqtt.STATE_MQTT number mqtt socket已连接 mqtt连接中 mqtt.STATE_READY number mqtt mqtt已连接 mqttc:subscribe(topic, qos) 订阅主题 参数 …...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...