Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从单元测试标准中学习

从单元测试标准中学习

作者头像
FunTester
发布于 2020-03-04 01:58:31
发布于 2020-03-04 01:58:31
8360
举报
文章被收录于专栏:FunTesterFunTester

单元测试是一件棘手的事情。我很确定测试人员在某个时候会抱怨开发人员没有正确地进行单元测试,导致交付的质量很差。另一方面,开发人员发现很难创建和维护单元测试用例以及维护系统的敏捷性。

毫无疑问,单元测试是SDLC的关键部分,也是迈向测试的第一步。

在这里,将讨论更多的单元测试标准,我们可以在测试和自动化中加以利用,以使其更加有效。

什么是单元测试

单元测试是一种测试形式,旨在确保应用程序的各个单元或组件按预期工作。在这种情况下,使用驱动程序对单元或组件进行独立测试。单元测试至关重要,因为它可以尽早发现缺陷,从而降低总体项目成本并确保代码稳定性。

作为测试工程师,确保单元测试是我们部署的一部分也是我们的责任。随着质量检查的角色在最近几年中不断发展,他们不仅执行功能集成测试、单元测试、系统测试,而且还积极参与单元测试。在持续集成和交付中,质量保证的作用已变得多维且更加灵活。重要的是要知道在发行版中执行了哪些单元测试以及覆盖范围是多少。单元测试的重要性,我相信每个人都很清楚。

单元测试概念

了解单元测试的核心概念很重要。单元是可以独立执行的任何实体。可以是几行代码,也可以是整个功能。最重要的是,它应该是独立的可执行代码段。

在设计自动化框架时,我们还应该将测试视为一个独立的单元,以便可以独立测试和执行测试。

单元测试涉及单元测试框架,驱动程序,模拟/假对象。它基于白盒技术进行工作,其中对条件,循环和代码覆盖范围进行了测试。

以下是一些同样适用于自动化测试的单元测试原理,让我们重新回顾一下它们:

  • 测试应该是独立的:这是基本原则,测试用例之间不应存在任何依赖关系。这很重要,因为一个测试用例的结果不应影响后续用例。在自动化中,我们应确保不存在依赖项,例如环境设置,创建共享资源的实例以及对其进行清理。
  • 测试应该是确定性的:测试应该通过或失败。如果测试失败,我们应该始终有明确的原因,并且在更正时,测试应该始终通过。
  • 测试应该明确通过/失败的情况:这是指测试应该失败时应该失败。仔细放置断言,并针对失败情况进行测试。
  • 测试应该是自我验证的:这意味着测试本身应该确定预期的输出与否。
  • 重复性:每次运行时,测试应产生相同的结果输出。这可以通过使它们孤立和独立来实现。

如何进行单元测试

单元测试需要Mock。它适用于填充要测试功能的缺失部分的模拟对象。由于其他组件仍在开发中或尚未开发,我们将需要一些代码来使这些功能看起来好用

单元测试的另一个重要组成部分是API自动化测试API提供了两个组件之间进行通信的接口。API包含业务逻辑,并且API的工作方式使其在单元测试中非常方便使用。

测试自动化与单元测试

随着越来越多的组织进入敏捷模型,测试(手动和自动化)在SDLC的初始阶段就开始了。为了加快过程自动化,必须发挥关键作用。在敏捷需求不断变化,开发仍在进行的情况下,在这种情况下,API和模拟对自动化非常有帮助。

使用模拟对象:可以使用数据模拟来加快过程,而不是依赖于实际的测试数据。当自动化测试与对象的属性而不是其功能和行为进行交互时,可以使用Mock。当应用程序与任何外部服务交互时,大多数情况下都需要模拟,但也可以在其他情况下使用模拟。

真实对象是:

  • 运行缓慢,例如:数据库访问
  • 难以触发,例如:服务器崩溃情况或网络错误。
  • 仍在开发中。
  • 不兼容或需要高成本的测试环境设置。

有各种可用于模拟的库,用于模拟的使用WireMock进行更好的集成测试Mockitopowermockeasymock

直接说一下,API更快。而且,API测试是可靠的。UI测试可能很不稳定且执行缓慢,但是API测试会通过或失败。在大多数情况下,API是在UI之前开发的,因此我们始终可以从API测试入手。

在编写集成测试和端到端测试时,API也很有用。我们始终可以将API集成到UI测试框架中以执行先决条件。API使它们更快,从而减少了测试套件的总体执行时间,从而使发布更加高效。

几乎所有的单元测试原理和技术都与自动化相关,并且自动化工程师应在需要时利用它们,而不仅仅是依靠传统的自动化方法。


  • 郑重声明:文章首发于公众号“FunTester”,禁止第三方(腾讯云除外)转载、发表。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【单元测试】--工具与环境
JUnit 是一个广泛用于 Java 程序开发的开源测试框架。它是单元测试的标准工具之一,用于编写和运行测试用例,以确保 Java 程序的各个组件按预期工作。以下是一些关键特点和概念,来介绍 JUnit:
喵叔
2023/10/22
8770
【单元测试】--高级主题
在单元测试中,模拟(Mock)和存根(Stub)是两种常用的测试替代品,用于模拟外部依赖或模拟特定行为,以便测试能够独立运行。以下是深入了解模拟与存根的概念,以NUnit为例说明它们的使用。
喵叔
2023/10/25
3360
【单元测试】--高级主题
Python自动化测试指南—Mock与单元测试的深入应用
在软件开发过程中,自动化测试是确保代码质量和稳定性的关键一环。而Python作为一门灵活且强大的编程语言,提供了丰富的工具和库来支持自动化测试。本文将深入探讨如何结合Mock与单元测试,利用Python进行自动化测试,以提高代码的可靠性和可维护性。
一键难忘
2024/08/04
4760
【ASP.NET Core 基础知识】--测试--单元测试和集成测试
单元测试是软件开发中的一种测试方法,用于验证软件中的最小可测试单元——通常是函数、方法或类——的行为是否符合预期。它的核心思想是将程序分解成独立的单元,并针对每个单元编写测试用例,以验证其功能是否正确。以下是单元测试的一些关键概述:
喵叔
2024/05/24
7590
使用Django单元测试与集成测试保障Web应用程序代码质量
在开发Web应用程序时,保证代码质量至关重要。Django作为一个流行的Python Web框架,提供了强大的测试工具来确保代码的可靠性和稳定性。本文将介绍如何利用Django的单元测试和集成测试来保障代码质量,以及它们的使用方法和最佳实践。
一键难忘
2024/07/05
5450
编写更好的 Java 单元测试的 7 个技巧
测试是开发的一个非常重要的方面,可以在很大程度上决定一个应用程序的命运。良好的测试可以在早期捕获导致应用程序崩溃的问题,但较差的测试往往总是导致故障和停机。
哲洛不闹
2018/09/14
3K0
编写更好的 Java 单元测试的 7 个技巧
单元测试两三问
单元测试(英语:UnitTesting)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。 -- 维基百科
腾讯移动品质中心TMQ
2019/07/03
1.2K0
单元测试两三问
单元测试最佳实践:如何最大程度地利用测试自动化
单元测试是一种众所周知的做法,但是还有很多改进的空间!在这篇文章中,最有效的单元测试最佳实践,包括一路最大化自动化工具的方法。我们还将讨论代码覆盖率、模拟依赖关系和整体测试策略。
顾翔
2021/04/26
1.5K0
单元测试最佳实践:如何最大程度地利用测试自动化
深入了解软件测试:从入门到奥秘,揭开测试的精髓
在软件开发的世界中,软件测试是不可或缺的一部分。它是确保软件质量、功能完整性和用户满意度的关键环节。本文小编将为大家介绍各类软件测试的奥秘,并提供入门级的指导和见解。
葡萄城控件
2024/07/12
2230
深入了解软件测试:从入门到奥秘,揭开测试的精髓
当单元测试、集成测试不可被信任时, 我们该做些什么?
但有人能说得清楚,单元测试到底能保证什么样的质量吗?是至多只能保证 “某个开发人员代码的质量”?我们是否真正有深度的思考过:保证 “某个开发人员代码的质量” 与 “保证产品的质量” 间的对应关系?
Ken Fang 方俊贤
2018/06/01
5500
开发必备之单元测试
​ 计算机世界里的软件产品通常是由模块组合而成的 模块又可以分成诸多子模块。 比如淘宝系统由搜索模块、商品模块、交易模块等组成,而交易模块又分成下单模块、 支付模块、发货模块等子模块,如此细分下去,最终的子模块是由不可再分的程序单 元组成的。对这些程序单元的测试,即称为单元测试(Unit Testing ,简称单测)。单元的粒度要根据实际情况判定,可能是类、方法等,在面向对象编程中,通常认为最小单元就是方法。单元测试的目的是在集成测试和功能测试之前对软件中的可测试单 元进 逐一检查和验证。单元测试是程序功能的基本保障,是软件产品上线非常重要的环。
程序员波特
2024/01/19
3460
开发必会的测试知识,Junit+Mock+Assert+DevOps
我之前写过一篇 devops 开发相关的文章 一文理解什么是 devops,可以看到测试在整个开发流程中扮演者什么样的角色。
阿甘的码路
2022/09/22
1.2K0
开发必会的测试知识,Junit+Mock+Assert+DevOps
前端单元测试总结_javascript单元测试
目前,前端的测试框架很多,像QUnit、jasmine、mocha、jest、intern等框架,这些框架各有特点,简单描述下,感兴趣的可以具体研究:
全栈程序员站长
2022/09/20
1.8K0
自动化测试在 Go 开源库中的应用与实践
Go 语言内置的 go test 命令和 testing 库,为自动化测试提供了纯天然的支持。最近,因为 mongo-driver 官方库已发布 v2 版本,我需要为我开源的 go-mongox 库进行兼容升级。经过几个小时的开发和调试,升级工作顺利完成,其中自动化测试在整个流程起到关键作用,大大提高了工作效率。
陈明勇
2024/11/01
2060
自动化测试在 Go 开源库中的应用与实践
实例入门 Vue.js 单元测试
作为一个以 文档丰富 而广为人知的前端开发框架, Vue.js 的官方文档中分别在《教程-工具-单元测试》、《Cookbook-Vue组件的单元测试》里对 Vue 组件的单元测试方法做出了介绍,并提供了官方的单元测试实用工具库 Vue Test Utils;甚至在状态管理工具 Vuex 的文档里也不忘留出《测试》一章。
江米小枣
2020/06/15
3.2K0
单元测试之道
很多开发不写单测,可能是没有意识到单测的重要性,或者懒得写,这里单测的重要性就不多说了。还有一些同学写单测,但是基本上等于没写,比如像下面这种单测代码:
江湖前辈黄药师
2019/04/01
5410
前后端分离开发模式下后端质量的保证 —— 单元测试
概述   在今天, 前后端分离已经是首选的一个开发模式。这对于后端团队来说其实是一个好消息,减轻任务并且更专注。在测试方面,就更加依赖于单元测试对于API以及后端业务逻辑的较验。当然单元测试并非在前后端分离流行之后才有,它很早就存在,只是鲜有人重视且真的能够用好它。而在前后端分离开发模式下,特别是两者交付时间差别很大的情况时,后端可能需要更加地依赖于单元测试来保证代码的正确性。   本文主要围绕单元测试展开,从单元测试的基础概念说起,对比单元测试和集成测试,同时我们还会聊一聊单元测试与测试驱动开发的区别。在
李海彬
2018/03/23
1.9K0
前后端分离开发模式下后端质量的保证 —— 单元测试
优雅编写Java单元测试的艺术与实践
在软件开发中,单元测试是确保代码质量的关键环节。它可以帮助开发者发现潜在的错误、提高代码的可维护性,并且为后续的集成和系统测试打下坚实的基础。本文将探讨如何优雅地编写Java单元测试,分析其重要性,并提供一些实用的示例来指导读者实践。
疯狂的KK
2024/01/29
3460
优雅编写Java单元测试的艺术与实践
别再加端到端集成测试了,快换契约测试吧 | 洞见
正如大家所知,最初QA都是手动执行测试用例,开发人员每修改一个版本,QA就要手动测试一遍,随着功能的不断增加,手动测试重复的工作量越来越大。为了解脱QA重复性劳动,提高工作效率,重复执行的测试用例被自
ThoughtWorks
2018/04/17
1.4K0
别再加端到端集成测试了,快换契约测试吧 | 洞见
自动化测试工具在敏捷开发中的选择与使用
在现代软件开发中,敏捷开发强调快速迭代和高效交付,为了保证软件质量和开发速度,自动化测试成为不可或缺的环节。然而,市场上存在许多自动化测试工具,每个工具都有其特定的适用场景和优缺点。在敏捷开发环境中选择合适的自动化测试工具,能够显著提升开发团队的效率和产品的质量。本文将分析适合敏捷开发的几款主流自动化测试工具,并提供相应的选型建议。
连连LL
2024/10/31
4910
相关推荐
【单元测试】--工具与环境
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档