单元测试

《构建之法》之第一二三章读后感

匆匆过客 提交于 2020-01-27 20:34:32
  读《构建之法》这本书就像读故事书那样,耐人寻味,又很多故事和经验都是源自作者本身,读起来很有趣,并不会像其他书那样的枯燥乏味。   这本书的第一章——概论,为我们解释什么是软件,什么是软件工程,读完这章对这些概念有一定的认识这章让我明白,代码不能盲目的敲,好的软件并非两三天内就能赶出来的。在编写程序之前,需要做一系列的分析、设计,要满足客户的需求,后续还要对软件进行测试、维护等。在这之前,我一直觉得能把程序运行,能有正确的结果,那就完成任务了,可这只是整个软件流程的一部分而已。   问题:目前软件工程的影响力如何?日后的发展趋势又如何?   第二章——个人技术和流程,这章引入了“单元测试”的知识,单元测试对一个好的软件起着重要的作用,单元测试应该是准确、快速地保证程序基本模块的准确性,单元测试也有一系列的标准验证其好坏。单元测试必须由最熟悉代码的人(即程序的作者)来写,最好是在设计的时候就写好单元测试,这样会减少程序问题的出现。单元测试是用VSTS来写的。   问题:还不理解单元测试的原理,怎么写单元测试?   第三章——软件工程师的成长,这章主要是讲个人能力的衡量和以及软件工程师的职业发展。成为软件工程师,首先要学习和积累软件开发相关的知识,不断学习,不断积累,提升技术技能,理解通用的软件设计思想和软件工程思想。学好专业技能以外,还要有一定的自我管理能力、与人合作能力等。  

单元测试入门及实践

被刻印的时光 ゝ 提交于 2020-01-27 02:35:14
单元测试 单元测试是 开发人员 对其所实现功能的代码进行的另外编写的测试,用于检测其代码功能的完整性、正确性和其运行效率,从而提高代码质量,并且在写单元测试时发现功能代码间的依赖等设计问题,从而提高产品的可扩展性。 这会让开发人员费更多的时间关注于这个,在短时期来看确实是这样,但放到整个产品周期中来评估的话,其时间上来说是节约的,在后期不会陷入整个产品代码无尽的Bug状态,可以说越是在后期越能显现UT的威力,还可以更自信的交出产品。 目的 单元测试用来作用于: 代码质量保证 在开发人员修改代码后保证不会对之前、其它代码产生影响,通过简单的运行测试就可以知道当前修改会产生哪些影响(那些Failed掉的Case即是所受影响的代码) 代码清晰、提高可维护性 有点代码先过自己一关的味道,这样写出来的代码更优美,更具可维护性。 使项目架构更合理 在进行UT,可以发现代码设计中不合理的地方,提高代码的配置性,可扩展性。 Unit Test Framework 测试框架不仅提供了一整套的判断机制,还提供了运行测试用例的工具,很方便的去运行单元测试用例。 在.NET中有几个著名的测试框架,NUnit和MS Unit是其中比较火的,关于两者的对比大家可以网上找下,选择一款适合自己的,这里呢,我们使用MS Unit。 单元测试的方法 A sample case: 1 public int Add

五、测试-六、优化方案

我是研究僧i 提交于 2020-01-26 02:56:31
五、测试 1.单元测试    单元测试的方式是黑盒测试,即通过每个环节的输入输出情况进行测试。程序由四个类组成,对应生成四个测试类,使用Junit5对其中的主要方法进行测试。测试的大致思路是预先设计较为简单的数独用例,生成新的对象,运行方法,并将阶段性的结果与预先计算的结果相比较。    有些方法具有返回值,便于设计测试类,例如对 Main::isNumber()进行测试: //Main::isNumber public static boolean isNumber(String str){ String reg = "^[0-9]+?$"; return str.matches(reg); }//MainTest::testIsNumber @Test final void testIsNumber() { Assert.assertEquals(true, Main.isNumber("100")); Assert.assertEquals(true, Main.isNumber("10a")); Assert.assertEquals(true, Main.isNumber("4.5")); }    对于更多没有返回值的方法,采取验证阶段结果的方法,预测方法执行后对象属性的变化并加以验证。例如对SudokuGenerator::creatFirstBlock()方法的测试

python单元测试-unittest

前提是你 提交于 2020-01-26 02:19:44
python内部自带了一个单元测试的模块,pyUnit也就是我们说的:unittest 1、介绍下unittest的基本使用方法: 1)import unittest 2)定义一个继承自unittest.TestCase的测试用例类 3)定义setUp和tearDown,在每个测试用例前后做一些辅助工作。 4)定义测试用例,名字以test开头。 5)一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。 6)调用unittest.main()启动测试 7)如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,这时可以添加-v参数显示详细信息。 2、 下面是unittest模块的常用方法: assertEqual(a, b) a == b assertNotEqual(a, b) a != b assertTrue(x) bool(x) is True assertFalse(x) bool(x) is False assertIs(a, b) a is b 2.7 assertIsNot(a, b) a is not b 2.7 assertIsNone(x) x is None 2.7 assertIsNotNone(x) x is not None 2

Python开发入门与实战11-单元测试

依然范特西╮ 提交于 2020-01-24 23:05:22
11. 单元测试 本章节我们来讲讲django工程中如何实现单元测试,单元测试如何编写以及在可持续项目中单元测试的重要性。 下面是单元测试的定义: 单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。 1. 它是一种验证行为 程序中的每一项功能都是测试来验证它的正确性。它为以后的开发提供支援。就算是开发后期,我们也可以轻松的增加功能或更改程序结构,而不用担心这个过程中会破坏重要的东西,它为代码的重构提供了保障。这样,我们就可以更自由的对程序进行改进。 2. 它是一种设计行为 编写单元测试将使我们从调用者观察、思考。特别是先写测试(test-first),迫使我们把程序设计成易于调用和可测试的,即迫使我们解除软件中的耦合。什么时候测试?单元测试越早越好,早到什么程度?极限编程(Extreme Programming,或简称XP)讲究TDD,即测试驱动开发,先编写测试代码,再进行开发。 不过在实际的编码过程中,我们不必过分强调先干什么后写什么,重要的是高效和个人感觉舒适。从笔者的经验来看,根据设计或需求先编写某个功能函数的框架,然后就着手编写测试函数,针对产品的功能编写测试用例,最后编写函数的实现代码,每完成一个功能点都运行单元测试,随时补充完善测试用例。这种 测试同行 代码编写模式,会对函数的构思有很大的帮助

JUnit单元测试

六月ゝ 毕业季﹏ 提交于 2020-01-24 17:16:38
简介 JUnit是一个开源的java语言的单元测试框架 专门针对java语言设计, 使用最广泛, JUnit是标准的单元测试架构 java单元测试是最小的功能单元测试代码, 单元测试就是针对单个java方法的测试 目的 确保单个方法正常运行 测试代码可以作为示例代码 可以自动化运行所有测试并获得报告 Maven依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> 项目结构 断言 在 JDK 1.4 之后, Java 中增加了断言的功能,关键字 assert 断言是java的一种语句,它允许对程序提出一个判断(假设)。断言包含一个布尔表达式,在程序运行中它应该是真。假设程序期望得到某个结果,如果没达成则报错。断言用于确保程序的正确性,避免逻辑错误。 与异常处理类似,断言不能代替正常的检验,只是检测内部的一致性和有效性。断言在运行是检验,可以在程序启动时打开或关闭。 PS:不要在正常的业务逻辑中使用断言。对于程序正确性的判断可以在测试环境使用断言,生成环境则可以关闭该功能。 期望之外的结果: import org.junit.Assert; /** * @author wzm * @version 1.0.0 *

Android单元测试

隐身守侯 提交于 2020-01-24 01:14:49
Android单元测试 单元测试 单元测试理解 Java的单元测试 Android客户端的单元测试 单元测试 说到测试,主要分为,冒烟测试,集成测试,单元测试。单元测试是保证基础模块、单元工作正常的一种保证手段。在互联网短平快的敏捷开发的开发模式中,常常因为业务繁多,而忽视了单元测试,造成积重难返的局面。编程好比造房子,砖块好比每一个单元,只有保证每一块砖的坚实耐用,才能保证整个房子的坚固可靠。而在业务繁多的互联网公司,尤其是2C企业的业务部门,往往只是做一个活动,能跑起来就上线,几天后就下线,对性能,可靠性不是那么考量。但是,个人觉得SDK和支撑上层业务的基础能力是一定需要单元测试的。 单元测试理解 单元测试是保障单元可用性的途径,主要通过验证单元的逻辑,需要注意以下几点: 多条分支的逻辑必须覆盖 预期结果与实际结果必须一致才算测试通过 Java的单元测试 java的单元测试,主要通过jUnit框架来实现,通过注解来标注每个测试用例。通过断言来判断是否测试通过。 主要的注解有: @Before @After @Test @BeforeClass @AfterClass Android客户端的单元测试 Android开发是Java开发衍生,测试也大致相同,有多种测试框架。这里推荐UI单元测试 robolectric 配置如下: build.gradle 中添加配置 android

(二期)单元测试的代码覆盖率接入Jacoco技术实现

折月煮酒 提交于 2020-01-22 22:54:29
一、背景 项目的接口方法写了单元测试后,怎么才能知道单元测试对接口的方法的调用是否执行了有效的逻辑代码呢?而且还有的接口压根就没有写单元测试,怎么自动执行测试?代码覆盖率的统计就可以比较有效解决这个问题。 二、目标 项目的接口方法写了单元测试后,需要知道单元测试对接口的方法的调用是否执行了有效的逻辑代码,而且没有写单元测试的接口也需要被统计; 设置代码覆盖率合格率的阈值,检测到低于这个阈值的标记结果不合格,大于或等于这个阈值的标记结果合格。 无论检测结果是失败还是合格,都需要一周至少发布一次检测结果告知java开发。 三、技术方案 市场上java主要代码覆盖率工具:Cobertura、EMMA、JaCoCo,而其中Cobertura和EMMA已停止维护,但JaCoCo社区比较活跃,官网也在不断的维护更新。jenkins上也有插件JaCoco可以统计单元测试TestNG的结果。 在java项目中添加插件jacoco-maven-plugin。 在Java项目中添加依赖jacoco-maven-plugin。 四、方案实施 java项目中的pom.xml配置 在Java项目中依赖jacoco-maven-plugin。 <dependency> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin<

单元测试-测试类-test_api

喜夏-厌秋 提交于 2020-01-22 21:48:03
import unittest from API_AUTO.tools.http_request import HttpRequest class TestLogin(unittest.TestCase): def setUp(self): print("开始执行测试用例") def tearDown(self): print("用例执行完毕") def __init__(self, methodName, url, method, data, expected): super(TestLogin, self).__init__(methodName) self.url = url self.method = method self.data = data self.expected = expected def test_api(self): res = HttpRequest().http_request(self.url, self.method, self.data) r = res.json()["info"] try: self.assertEqual(r, self.expected) except AssertionError as e: print("test_case's error is {}".format(e)) raise e # 处理异常后抛出去

浅谈单元测试

陌路散爱 提交于 2020-01-22 13:03:50
单元测试或是最好的项目文档。 很早之前在学习使用Java做测试的时候,得到过一个神秘大佬的帮助,在一起聊过单元测试,基本结论就是:单元测试大概率没啥鸟用。 众所周知,自动化测试相比手动测试一个比较明显的特点就是见效慢,需要积累一定的时间所产生的的价值才能超过手动测试,这还是在比较理想的情况下。某些时候可能永远也超不过。而单元测试更甚,据大佬和吹牛逼的群聊中判断:好的单元测试代码大概是被测代码的2-3倍,这种工作量对于开发人员来讲是不可接受的。单元测试见效比自动化测试更慢,这一点也是大家的共识,甚至到不了见效的时候就黄了。 之前对单元测试进行过一些尝试,写过一点文章: Maven和Gradle中配置单元测试框架Spock Groovy单元测试框架spock基础功能Demo Groovy单元测试框架spock数据驱动Demo 人生苦短?试试Groovy进行单元测试 使用WireMock进行更好的集成测试 如何测试这个方法--功能篇 如何测试这个方法--性能篇 单元测试用例 JUnit 5和Selenium基础(一) JUnit 5和Selenium基础(二) JUnit 5和Selenium基础(三) 近几日一直在对之前的性能测试框架进行优化,在这个过程中,我之前利用Groovy单元测试框架spock写过的两个性能测试框架的单元用例起到了非常大的帮助