深入探讨分层测试的必要性与优势!

测试分层 Time will tell. 从开发架构上来分层,目前接触到的项目,基本上都是如图所示的架构模式(MVC),每一层都衍生出对应的测试: 对应的测试: 市场上的测试岗位大多数都是围绕这这些来设定的:功能测试自动化测试测试开发,性能测试,服务端测试。 最近几年都是服务端测试,基本上也是在接口层,但目前偏重数据层,也明白了数据的重要性,业务的根源在数据,从数据上可以反应业务的健康度。 不要被表象中的自动化、性能所迷惑,觉得做测试往上走就是搞自动化,性能,这样太局限了。 值得思考的是,即使你自动化搞得. 阅读详情

概述

分层测试的概念

分层测试是一种软件测试方法,将测试活动按照层次结构进行组织和执行。每个层级都有其特定的测试目标和关注点。分层测试的主要目的是确保软件在不同层次上的功能和性能都符合预期,初衷是为了效率提升和质量保证

分层测试的目的

提高测试效率和质量:分层测试将测试任务分解为多个阶段,使得测试人员可以更有针对性地进行测试,并在每个层级上发现和解决对应问题,降低修复问题成本,提高测试的效率和质量。

可以降低风险:通过分层测试,可以在早期阶段发现和解决问题,减少缺陷在后续阶段被发现的概率。这有助于降低项目风险,并提高软件的可靠性。

保证系统的稳定性:分层测试可以保证软件在不同层次上的功能和性能都能够正常工作。通过集成测试和系统测试,可以验证各个组件之间的交互和整体系统的稳定性。

支持持续集成和持续交付:分层测试可以与持续集成和持续交付流程结合,确保每个层级的测试都得到适当的覆盖和执行。这有助于确保软件在不断迭代和发布的过程中保持稳定和可靠。

分层测试的层级

从测试模型来说可以分为:单元测试、集成测试、系统测试

从测试手段方面来说说可以分为:手工测试、自动化测试

下面主要从公司目前正在进行的分层测试里面几个测试实现:单元测试、接口自动化、 UI 自动化、流量录制回放

单元测试

定义和特点

单元测试是软件开发中的一种测试方法,用于验证单个模块(函数、方法、类)的正确性。

目前公司要求 Java 后端代码的单元测试覆盖率不低于80%,这个数据与公司、团队都有关系,但是我们既然要求了这个数据,怎么来衡量才是我们要做的,目前 Java 单元测试覆盖率有个很好的工具 Jacoco,下面为Jacoco主要介绍:

Jacoco有两种插桩方式,分别为 在线(on the fly)离线(off line) 两种模式。两种方式比较中,on the fly模式在使用中更方便,所以一般使用on the fly模式。

  • • on the fly插桩:jvm通过 -javaagent参数指定特定的jar文件启动Instrumentation的代理程序,代理程序通过ClassLoader装载一个class前判断是否转换修改class文件,将统计代码插入class 测试覆盖率可以在JVM执行测试代码的过程中完成。

  • • off line插桩: 在测试前先对文件进行插桩,然后生成插桩的class或jar包 测试插过桩的class和jar包后,会生成动态覆盖信息到文件,最后统一对覆盖信息进行处理 并生成报告

Jacoco 主要的覆盖率统计指标:

  • • 行覆盖率:度量被测程序的每行代码是否被执行,判断标准行中是否至少有一个指令被执行。

  • • 类覆盖率:度量计算class类文件是否被执行。

  • • 分支覆盖率:度量if和switch语句的分支覆盖情况,计算一个方法里面的总分支数,确定执行和不执行的 分支数量。

  • • 方法覆盖率:度量被测程序的方法执行情况,是否执行取决于方法中是否有至少一个指令被执行。

  • • 指令覆盖:计数单元是单个java二进制代码指令,指令覆盖率提供了代码是否被执行的信息,度量完全 独立源码格式。

  • • 圈复杂度:在线性组合中,计算在一个方法里面所有可能路径的最小数目,缺失的复杂度同样表示测 试案例没有完全覆盖到这个模块。

Jacoco 的工作原理是通过在编译期间修改字节码,插入用于统计覆盖率的监控代码。在测试运行期间,Jacoco 会记录代码的执行情况,并生成覆盖率报告。

使用 Jacoco 进行覆盖率统计的步骤通常如下:

  1. 1. 集成 Jacoco 插件:将 Jacoco 插件集成到构建工具(如 Maven 、 Gradle、 Jenkins 、 Devops流水线中)中。

  2. 2. 配置 Jacoco 插件:在构建配置文件中配置 Jacoco 插件,指定要统计覆盖率的代码路径和报告输出路径。

  3. 3. 运行测试:执行测试用例,Jacoco 会记录代码的覆盖情况。

  4. 4. 生成报告:根据收集到的覆盖数据,Jacoco 会生成各种格式的报告,包括 HTML、XML 和 CSV 等。

公司一般都是将这些流程加到 Devops流程里面,开发提测到测试之前,会自动执行单元测试代码、代码扫描等步骤,生成单元测试覆盖率报告和代码扫描报告,有些项目还会作为提测卡点流程

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

接口自动化测试

公司稍微测试团队规模 20+以上,都会开发各种测试平台化,尤其接口自动化平台,开发成本不高、收益高的。接口自动化主要有如下的优势:

  • • 提高效率:接口自动化相比手动测试可以节省大量的时间和人力资源。同时,自动化测试可以并行运行,提高测试的效率。

  • • 提高准确性:程序执行可以减少人为因素的干扰,避免了手动测试中的人为错误。自动化测试可以准确地执行测试用例,并且可以在每次执行时保持一致性。

  • • 提高测试覆盖率:可以快速执行大量的测试用例,覆盖更多的功能和场景。

  • • 提高可重复性:可以重复执行用例,用来保证软件在不同的环境和配置下的稳定性。这对于持续集成和持续交付非常重要。

  • • 提高反馈和修复效率:接口自动化测试可以在每次代码提交后立即运行,快速给出测试结果和反馈。这样开发团队可以及时发现和修复问题,提高软件交付的速度。

目前接口大部分用来冒烟测试、回归测试、线上接口监控等场景,冒烟测试可以快速反馈提测功能的可测性,提高测试效率;回归测试主要用来保证老功能的稳定性,是否被新版本影响到;线上监控尤其重要,及时发现线上服务、接口可用性、正确性,降低公司损失,提高用户满意度。下面是最近一次线上监控第一时间发现了问题,这就是我们测试价值的最好体现。

UI 自动化

有了接口自动化,那为啥还需要 UI 自动化,而且接口自动化投入成本比较接口自动化大很多,因为UI自动化测试可以完全模拟用户的实际操作,全面测试应用程序的功能和用户界面,这也是分层测试的原因,这些我们可以看一下开发里面的 MVC 模型就更加清楚了,每一层都有各自存在的意思。下面是 UI 自动化相对接口自动化的优势:

  • • 完整性测试:UI自动化可以模拟用户的实际操作,全面地测试应用程序的各个功能模块和用户界面。它可以检查整个应用程序的流程和交互,保证用户界面的正确性和一致性。

  • • 兼容性测试:UI自动化可以在不同的操作系统、浏览器和设备上运行,测试应用程序在各种环境下的兼容性。这对于跨平台应用程序或移动应用程序非常重要。

流量录制回放

目前这个我们就应用在接口自动化场景里面,主要是提高用例效率和测试覆盖率。目前主要落地下面方案:

  • • 通过nginx 日志、服务日志信息提取接口相关信息:主要在生产环境获取流量数据,在预发环境或者测试环境进行回放,目前实现的是 GET 请求

  • • 通过python 的 Mitmproxy 库进行代理拦截数据解析:这个主要和测试平台对接,一键生成自动化接口用例,提高编写用例效率

上述方案有明显的缺点,依赖日志记录、 http 协议,单服务,对于分布式的系统,长链路的不支持,目前市场上有JVM-Sandbox-Repeater、Goreplay等常用工具,但是这些工具也有各自的优缺点,对于工具来说,选择适合业务的工具才是好工具,对于业务能够提供价值,不要看谁热门,就选哪个。

分层测试的挑战和解决方案

有了分层测试,我们需要投入的成本肯定需要发生改变,做的事情前期会变多,对于团队、个人来说,要求都会提高,这样对于有些人来说是一个负担,比如我原来只需要最后通过业务进行测试,现在添加了接口测试、服务端测试、自动化测试等等,增加了他们的任务量,肯定不愿意。所以我们在做这之前,需要思考清楚一些事情。

  • • 团队成员质量意识:明确团队质量目标、建立质量导向的工具和流程、持续沟通和反馈、建立质量标杆并进行激励、质量文化建设

  • • 分层测试价值和意义:初衷是为了效率提升和质量保证,我们从这些方面去宣讲

  • • 对他们的好处:进行换位思考、提高自身能力、晋级加薪

总结

持续学习和不断改进是团队成长和提高质量水平的关键。在软件测试领域,技术和工具的更新迭代非常快,团队成员需要持续学习新的测试技术、方法和工具,以跟上行业的发展。

同时,团队应该建立一种持续改进的文化,通过总结经验教训、回顾测试结果和反馈等方式,不断改进测试流程和方法。这样可以不断提高团队的质量意识和能力,进一步提升软件的质量。

在持续学习和不断改进的过程中,团队成员应该积极参与培训和知识分享,与同行交流经验,关注行业的最佳实践和新技术,以便不断提升自己的能力和水平。

总之,分层测试对于提高软件质量至关重要,而持续学习和不断改进则是保持团队竞争力和质量水平的关键。通过不断学习和改进,团队可以不断优化测试策略和方法,提高测试效果。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

自动化测试如何做?分层自动化测试如何实施?一篇概全... 分层自动化测试1、单元自动化测试定位:对软件中最小可测试单元进行检查和验证谁做:由开发做更合适测试人员做的优化是具备测试思维,在设计用例时考虑的更加全面,劣势是不熟悉被测代码开发做的优势是熟悉自己的代码,只需要掌握单元测试框架的使用和一些常用的测试方法,即可写单元测试,而且定位BUG时更加方便2、接口自动化测试web应用的接口自动化测试大体分为两类:模块接口测试和协议接口测试。模块接口测试,主要测试程序模块之间的调用返回。它主要强调对一个可实现完整功能的类、方法或函数的调用的测试 阅读详情

相关推荐

从“跑通Demo”到“工程落地”:三层框架破解技术工具“无法解释为什么”困境

在技术学习和工程实践中,掌握一个工具或框架的核心价值,往往比单纯“跑通Demo”更为关键。理解其底层原理,是将其从概念验证转化为稳定生产组件的基石。这涉及到对输入输出映射、核心算法机制以及关键配置参数的理解,从而建立准确的心智模型,避免盲目调参。其技术价值在于,通过系统性的工程化思维,将单点成功转化为可靠的自动化流程,提升开发效率系统稳定性。典型的应用场景包括数据处理管道构建、AI模型集成、以及自动化脚本开发等。本文以内容摘要工具为例,通过场景层、机制层、工程层的三层分析框架,并结合异常处理日志监控等工

weixin_34353714的博客 736

分层测试(Layered Testing Approach)

提纲 为什么要做分层测试 怎么做分层测试 分层测试的好处 为什么要做分层测试 从软件工程的角度,结合软件开发的V模型、MVC架构、测试金字塔,综合起来便于理解 1.借鉴软件开发的V模型 从V模型的底部往右上方向,先做单元测试,再做集成测试一直到最后的验收测试。 2.来源于MVC架构 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。 我们可以简单理解为V是用户看到的界面,C是中间逻辑,M是数据。对于

A_Captain 1万+

从传统到现代:分层大语言模型在推荐系统中的应用

在数字化时代,推荐系统如同一位无形的购物顾问,帮助用户在浩如烟海的信息中找到心仪的产品。随着大语言模型(LLMs)如ChatGPT的崛起,研究者们开始探索如何将这些强大的模型融入推荐系统中,从而改善推荐效果。随着大语言模型的进一步发展,HLLM有望在更多复杂的推荐场景中发挥更大的作用。针对上述挑战,本文提出了分层大语言模型(HLLM)架构,该架构由两个层次的模型组成:商品LLM和用户LLM。商品LLM负责从商品详细描述中提取丰富的内容特征,而用户LLM则利用这些特征根据用户的互动历史预测未来的兴趣。

步子哥的博客 910

分层测试(一):什么是分层测试

分层测试是通过对质量问题分类、分层来保证整体系统质量的测试体系。模块内通过接口测试保证模块质量,多模块之间通过集成测试保证通信路径和模块间交互质量,整体系统通过端到端用例对核心业务场景进行验证,用户体验通过手工测试确保无妨碍用户的交互。分层测试实现代码、服务、界面分层测试的整体架构目标,逐层建设完善自动化测试能力,逐步做到在保证质量的前提下提升需求交付效率。可以这么说,当你遇到对一个系统进行整体保障,不知道怎么入手的时候,进行分层测试是一个良好的解决思路。

人生不怕起点低,就怕没追求 3608

工业软件测试效率提升80%的秘密:模块化分层测试模型深度剖析

提升工业软件测试效率80%的方法揭秘,基于模块化分层模型实现精准高效验证。涵盖工业控制、智能制造等场景,通过工业软件模块化的测试策略,实现快速定位持续集成,显著缩短测试周期,值得收藏。

InstrFun的博客 1084

测试笔记】接口测试

接口测试笔记(一)持续更新关于“接口测试”的面试问题

Zzzz__的博客 368

架构演进之路:Flutter项目模块化分层设计

本文深入探讨了Flutter项目模块化分层设计的架构演进之路,从单体应用到模块化架构的必然演进,详细介绍了Clean Architecture在Flutter中的落地实践,以及依赖注入在模块化中的关键作用。通过电商APP的模块化改造实战案例,展示了如何优化项目结构、提升工程化水平,并规避常见陷阱,为Flutter开发者提供了一套完整的架构设计方法论。

weixin_30536513的博客 380

Java实习模拟面试之Service调用Mapper操作数据库:深入理解分层架构MyBatis-Plus实践

分层架构的重要性:清晰划分Service(业务逻辑)和Mapper(数据访问)的职责,实现解耦。依赖注入(DI):利用Spring的@Autowired实现组件间的松耦合引用。MyBatis-Plus的威力BaseMapper极大简化了基础CRUD开发,自定义方法处理复杂查询。事务管理(Transaction):使用注解确保复杂业务操作的原子性,维护数据一致性。掌握这些知识,不仅能够应对实习面试,更是构建健壮、可维护的企业级Java应用的坚实基础。希望这篇模拟面试能帮助你在求职路上更进一步!

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 779

阶段性总结(从软件工程到分层架构)

阶段性总结(从软件工程到分层架构) 阶段性总结(从软件工程到分层架构) 写在前面软件工程 什么是软件工程我对软件工程的理解软件工程流程 UML 定义为什么会出现UMLUML模型UML建模过程UML如何描述一个系统UML总结 设计模式三层架构总结 写在前面 这篇文字将会将2011年下半年的学习内容做个总结,不求细节只为从宏观上理解它们之间的联系

yuluo 7788

VectorChord分区调优秘籍:如何通过分层K-means实现向量数据的智能分片

VectorChord作为PostgreSQL中可扩展、快速且磁盘友好的向量搜索解决方案,其核心优势之一在于通过分层K-means算法实现向量数据的智能分片。本文将深入探讨如何利用这一技术优化向量数据分区,提升搜索性能存储效率。 ## 为什么需要向量数据分区? 随着向量数据规模的爆炸式增长,传统的线性存储方式面临两大挑战:查询延迟增加和存储成本上升。VectorChord的分区功能通过将大规

gitblog_00252的博客 352

分层测试实施总结思考

从10年开始实践分层测试理论,再到开始在企业培训《分层测试精要》课程也有七八年了,这段时间很多同仁也在不断探索和实践,在各个企业中也有了很多实践和总结。前段时间在参加某公司面试时提到这个课题,感觉还是有很多内容可以分享和总结,本文结合面试交流内容(有删改省略部分内容),从分层测试概念、策略应用、以及实施建议三个方向聊一下笔者本人的思考总结。-1-分层测试几个概念...

wonew1228的博客 2470

分层测试:什么是分层测试?(详解)

分层测试是通过对质量问题分类、分层来保证整体系统质量的测试体系。模块内通过接口测试保证模块质量,多模块之间通过集成测试保证通信路径和模块间交互质量,整体系统通过端到端用例对核心业务场景进行验证,用户体验通过手工测试确保无妨碍用户的交互。分层测试实现代码、服务、界面分层测试的整体架构目标,逐层建设完善自动化测试能力,逐步做到在保证质量的前提下提升需求交付效率。可以这么说,当你遇到对一个系统进行整体保障,不知道怎么入手的时候,进行分层测试是一个良好的解决思路。

HUA1211的博客 1246

什么是分层测试

分层测试是通过对质量问题分类、分层来保证整体系统质量的测试体系。模块内通过接口测试保证模块质量,多模块之间通过集成测试保证通信路径和模块间交互质量,整体系统通过端到端用例对核心业务场景进行验证,用户体验通过手工测试确保无妨碍用户的交互。分层测试实现代码、服务、界面分层测试的整体架构目标,逐层建设完善自动化测试能力,逐步做到在保证质量的前提下提升需求交付效率。可以这么说,当你遇到对一个系统进行整体保障,不知道怎么入手的时候,进行分层测试是一个良好的解决思路。

weixin_42241611的博客 686

什么是自动化测试分层?3个层次从高到低又是哪些?

自动化测试分层,可以理解为将测试任务分解为多个层次,并在每个层次中定义特定的测试任务和测试范围,通过这种方式,测试人员可以更好地管理和组织测试工作,确保测试的全面性和准确性。自动化测试可以分解为3个层次,分别为单元测试、接口测试和UI测试,为了更好的理解分层的思想,可以借助下图:

myh919的博客 1368

分层测试_基本思想

按照V模型进行划分层次: 单元测试 模块测试又称组建测试,集成测试 系统测试 unit层的测试对象是函数或方法; service层的测试对象是模块和接口; UI层的主要测试对象是展示和交互 unit层的测试策略: 1、代码走查:开发人员自己检查自己的代码 2、代码评审code review:开发团队组织评审会,应避免走马观花,应注重效率 3、单元测试:自动化单...

weixin_30642869的博客 4171
上一篇: 安全测试工具,自动发现网站所有URL!
下一篇: 应聘测试开发时,面试官会问你的内容!
测试界的吴彦祖
博客等级 码龄5年 7002粉丝 1521原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值