单元测试

前端单元测试mocha、karma、travis-ci梳理

被刻印的时光 ゝ 提交于 2019-12-01 09:03:25
前言 本章是我学习前端单元测试的一个梳理和总结,进入主题: 1.什么是前端单元测试 测试是什么:为检测特定的目标是否符合标准而采用专用的工具或者方法进行验证,并最终得出特定的结果。 对于前端开发过程来说,这里的特定目标就是指我们写的代码,而工具就是我们需要用到的测试框架(库)、测试用例等。检测处的结果就是展示测试是否通过或者给出测试报告,这样才能方便问题的排查和后期的修正。 2.为什么要做单元测试   某些库可能会被多个地方使用,需要保证它未来能够保持稳定性,这样以后在修改代码的时候不用大量去回归原来的代码 3.一些概念   TDD: 测试驱动   BDD: 行为驱动   语法上的差异只是前者在做断言,后者在做描述   出现BDD的原因是希望项目经理能写,希望PD在写story的时候就把测试用例写了,所以它强调的是多角色在生产链路上的协同问题,所以用TDD型的语法测试用例和BDD型的语法测试用例没有什么差别。 4.一些例子   mocha: mocha是一个功能丰富的测试框架,也就是运行测试的工具,   travis-ci: 持续集成工具,相当于一个docker容器,每次发布代码会把代码拉到docker容器,然后执行一些你想执行的东西   karma: 浏览器测试框架,可以搭配mocha、should.js等一起使用,为了让测试用例可以跑在真实的浏览器中,并且同时可以跑多个浏览器

敏捷项目测试策略文档模板

自闭症网瘾萝莉.ら 提交于 2019-12-01 05:32:51
敏捷项目测试策略文档模板   在一个敏捷工作环境种,我们的研发工作以冲刺期和高度迭代的形式展开。每一个迭代周期都关注少数的需求或者用户故事,所以在文档在敏捷项目种的数量和内容方面都倾向于轻量化。   对于测试计划这样的文档也是如此,不过我们也确实需要为敏捷团队去提供一个概要的敏捷测试策略,以供指导。   敏捷测试策略文档是为了给团队提供一个最佳的测试实践和一些形式的测试体系。记住,敏捷并不意味着没有体系。   下面我们来看一个敏捷测试策略文档,看看我们都应该包含些什么内容。 1.   一份测试策略中通常都会对于更宽泛的商业目的和目标做出任务说明。    一个典型的任务说明可以是:   “通过快速反馈和缺陷预防,持续的交付可工作的,满足用户需求的软件,而不仅仅是缺陷发现”   细化以后:   “● 在定义完需求的接收条件/测试之后,代码才能进行编写。    ● 接收测试不通过,一个需求就不能被判断为完成。”   在敏捷项目中,通常还会包含关于质量保证的提示:   ● 质量保证是系统和可靠的保证产品满足用户需求的一系列活动。   ● 在SCRUM(敏捷)中,质量保证是所有人的责任,而不单单是测试人员。在我们开发新产品的过程中,我们通过质量保证活动来确保正确的质量。    2.   测试级别    2.1  单元测试   WHY : 确保代码被正确开发   WHO : 开发工程师

什么是单元测试?如何做好单元测试?

大憨熊 提交于 2019-12-01 04:56:24
什么是单元测试?如何做好单元测试? 单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测试单元通常是指函数或者类。 单元测试都是以自动化的方式执行,所以在大量回归测试的场景下更能带来高收益。 单元测试代码里提供函数的使用示例,因为单元测试的具体表现形式就是对函数以各种不同输入参数组合进行调用。 如何做好单元测试? 1)代码的基本特征与产生错误的原因 无论是开发语言还是脚本语言,都会有条件分支、循环处理和函数调用等最基本的逻辑控制,如果抛开代码需要实现的具体业务逻辑,仅看代码结构的话,所有的代码都是在对数据进行分类处理,每一次条件判定都是一次分类处理,嵌套的条件判定或者循环执行,也是在做分类处理。 如果有任何一个分类遗漏,都会产生缺陷;如果有任何一个分类错误,也会产生缺陷;如果分类正确也没有遗漏,但是分类时的处理逻辑错误,也会产生缺陷。 2)单元测试用例详解 单元测试的用例是一个“输入数据”和“预计输出”的集合。需要针对确定的输入,根据逻辑功能推算出预期正确的输出,并且以执行被测试代码的方式进行验证。即“在明确了代码需要实现的逻辑功能的基础上,什么输入,应该产生什么输出”。 单元测试用例“输入数据”种类: 被测试函数的输入参数; 被测试函数内部需要读取的全局静态变量; 被测试函数内部需要读取的成员变量; 函数内部调用子函数获得的数据

Springboot单元测试Junit深度实践

为君一笑 提交于 2019-12-01 04:36:31
Springboot单元测试Junit深度实践 前言 单元测试的好处估计大家也都知道了,但是大家可以发现在国内IT公司中真正推行单测的很少很少,一些大厂大部分也只是在核心产品推广单测来保障质量,今天这篇文章就是介绍下单测的方法论和如何在Springboot中解决类之间的依赖来实施junit单元测试。 先来他轮下大家不做单元测试的原因: 产品经理天天催进度,哪有时间写UT。 UT是测试自己的代码,自测?那要QA何用? 自测能测出bug?都是基于自身思维, 就像考试做完第一遍,第二遍检查一样,基本检查不出什么东西 。 UT维护成本太高,投入产出比太低 不会写UT 只有真正尝到UT的好处的甜头才会意识到UT的价值。 其实这篇文章大部分章节是讲述单元测试的难点和解决办法,springboot如何集成其实很简单文章中会讲到。 单元测试的困难 假设我们一个service实现依赖某个RPC Service那我们要测试的这个类的话需要做哪些工作。 第一步:数据准备 跑到别人家的数据库插几条数据?或者跟PRC Service的Owner商量好,搭一个测试环境供我们测试?有些公司还真有专门的自动化测试环境,那么即使有测试环境,那如何实现各种case场景下,第三方Service很配合的返回数据给我们?想想都蛋疼。 第二步:执行方法 假设我们成功的解决了第一步中的问题,皆大欢喜。现在来看第二步

如何写好单元测试

拜拜、爱过 提交于 2019-12-01 04:27:05
如何写好单元测试 本文主要阐述单元测试(UT)的重要性,以及解释一些常见的困惑,以帮助我们写出质量更高的 UT。至于类似 Mocha 怎么用,断言库怎么用之类的问题,建议看官方文档。 一、为什么需要写 UT 我发现很多朋友意识不到单元测试的重要性。在谈如何写好 UT 之前,我想先说说测试的必要性,这有利于提高我们写 UT 的内驱力。 假如,张三负责开发接口,李四负责开发具体的业务。 李四会调用张三开发的接口 ,但由于种种原因,张三开发的接口可能存在一些 bug 。 在没有单元测试的情况下,这些 bug 往往都是由接口的使用者也就是李四发现。 这无形中给李四增加了额外的工作量 ,因为保证接口质量的工作本该是写接口的人也就是张三应该做的事儿。假设张三还是一个比较粗心的人,其中额外增加的时间成本会更大(实际开发中经常遇到)。 张三可能会很委屈的说:谁能保证代码永远不会产生 bug 。 是的,没人能够绝对的保证代码的正确性。但张三需要对他所提供的这些接口有一些起码的保证。他需要保证这些接口的确具备接口文档中所描述的那些功能,且能正常执行。 于是乎,张三含情脉脉的望着李四的眼睛说道:I promise. 哈哈哈,显然,口头上的保证永远都是不靠谱的,我们需要白纸黑字的保证,也就是我们本文的主题:单元测试。 再回到上述的场景。假如张三为他所写的那些接口写了一些质量还不错的测试用例。

前端单元测试工具karma

本秂侑毒 提交于 2019-12-01 02:33:00
Jasmine是一个很好的单元测试框架,它有漂亮简单的API describe('you can group test cases in "describe" blocks...', function() {     describe('...which can also be nested', function() {         it('test cases are in "it" blocks', function() {         var string = 'where we can run arbitrary JavaScript code...'; // ...and make assertions about results using "expect":         expect(string).toEqual('expected string');       });     }); });    Karma 是一个集成了像 Jasmine(基于 BDD 的测试框架),PhantomJS(无界面的浏览器)等的测试工具。 npm安装好后,就要写karma的配置文件 //karma.conf.js module.exports = function(config) { config.set({ frameworks: ['jasmine'], files

maven跳过单元测试-maven.test.skip和skipTests的区别

北战南征 提交于 2019-11-30 16:10:18
-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。 -Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。 一 使用maven.test.skip,不但跳过单元测试的运行,也跳过测试代码的编译。 mvn package -Dmaven.test.skip=true 也可以在pom.xml文件中修改 <plugin> <groupId>org.apache.maven.plugin</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.1</version> <configuration> <skip>true</skip> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <skip>true</skip> </configuration> </plugin> 二 使用 mvn package -DskipTests

Python单元测试

我是研究僧i 提交于 2019-11-30 16:04:22
是单元测试 程序开发过程中,写代码是为了实现需求。当我们的代码通过了编译,只是说明它的语法正确,功能能否实现则不能保证。 因此,当我们的某些功能代码完成后,为了检验其是否满足程序的需求。可以通过编写测试代码,模拟程序运行的过程,检验功能代码是否符合预期。 单元测试就是开发者编写一小段代码,检验目标代码的功能是否符合预期。通常情况下,单元测试主要面向一些功能单一的模块进行。 举个例子:一部手机有许多零部件组成,在正式组装一部手机前,手机内部的各个零部件,CPU、内存、电池、摄像头等,都要进行测试,这就是单元测试。 在Web开发过程中,单元测试实际上就是一些“断言”(assert)代码。 断言就是判断一个函数或对象的一个方法所产生的结果是否符合你期望的那个结果。 python中assert断言是声明布尔值为真的判定,如果表达式为假会发生异常。单元测试中,一般使用assert来断言结果。 常见的断言方法 assertEqual 如果两个值相等,则pass assertNotEqual 如果两个值不相等,则pass assertTrue 判断bool值为True,则pass assertFalse 判断bool值为False,则pass assertIsNone 不存在,则pass assertIsNotNone 存在,则pass 如何测试 首先,定义一个类,继承自unittest

单元测试框架Uinttest一文详解

感情迁移 提交于 2019-11-30 14:22:40
一谈及unittest,大家都知道,unittest是Python中自带的单元测试框架,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作。unittest单元测试框架不仅可以适用于单元测试,还可以适用web自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。 在聊unittest时,需要先明白,最基础的四个概念:TestCase,TestSuite,TestRunner,TestFixture,看如下静态图: unittest运行流程 先编写好TestCase,然后由TestLoader加载TestCase到TestSuite,其次由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,我们通过命令行或者unittest.main()执行时,main会调用TextTestRunner中的run来执行,或者我们可以直接通过TextTestRunner来执行用例。 unittest模块的各个属性说明 unittest.TestCase :TestCase类,所有测试用例类继承的基本类。 class BaiduTest(unittest.TestCase): unittest.main() :使用它可以方便的将一个单元测试模块变为可直接运行的测试脚本

Spring Boot 的单元测试和集成测试

谁说我不能喝 提交于 2019-11-30 14:22:12
学习如何使用本教程中提供的工具,并在 Spring Boot 环境中编写单元测试和集成测试。 1. 概览 本文中,我们将了解如何编写单元测试并将其集成在 Spring Boot 环境中。你可在网上找到大量关于这个主题的教程,但很难在一个页面中找到你需要的所有信息。我经常注意到初级开发人员混淆了单元测试和集成测试的概念,特别是在谈到 Spring 生态系统时。我将尝试讲清楚不同注解在不同上下文中的用法。 2. 单元测试 vs. 集成测试 维基百科是这么说 单元测试 的: 在计算机编程中,单元测试是一种软件测试方法,用以测试源代码的单个单元、一个或多个计算机程序模块的集合以及相关的控制数据、使用过程和操作过程,以确定它们是否适合使用。 集成测试 : “集成测试(有时也称集成和测试,缩写为 I&T)是软件测试的一个阶段,在这个阶段中,各个软件模块被组合在一起来进行测试。” 简而言之,当我们在做单元测试时,只是测试了一个代码单元,每次只测试一个方法,不包括与正测试组件相交互的其他所有组件。 另一方面,在集成测试中,我们测试各组件之间的集成。 由于单元测试,我们可知这些组件行为与所需一致,但不清楚它们是如何在一起工作的。 这就是集成测试的职责。 3. Java 单元测试 所有 Java 开发者都知道 JUnit 是执行单元测试的主要框架。它提供了许多注解来对期望进行断言。 Hamcrest