单元测试

软件单元测试之我见

浪子不回头ぞ 提交于 2019-11-27 01:35:49
本文是个人对于UT的一些想法和总结,参考时建议请查阅官方资料。 转载请注明出处:http://www.cnblogs.com/sizzle/p/4476392.html 测试思想 编写UT测试代码,通常是为了达到下面几个目的: 在程序可以运行前确认部分模块的正确性。 实行自动测试,减少人力成本。 增加测试手段,降低bug到下游的概率。 明确变更代码时产生的影响。 但是在实际的开发过程中,UT做成后很难达成以上目标,反而会产生一些副作用: UT代码难于编写导致成本增加。 使用UT检测出的bug量少,甚至在初期检测出的bug都是UT编写错误而引入的无效bug。 以上问题发生的原因是开发人员在设计和编码时没有考虑可测试性,导致UT容易发生弊大于利的情况。 在设计和编码时充分考虑可测试性,需要具备丰富的测试经验,而且难于达成,因此产生了”测试驱动开发“(Test Driven Development,简称TDD)。 TDD的测试做成过程很简单,基本可以概括为以下步骤: 根据需求和接口式样书编写测试代码,验证接下来编写的功能代码是否满足期待实现的需求点(此时的测试结果是NG)。 编写功能代码。 确认测试结果,如果NG需要修改功能代码或测试代码,如果OK则从1步骤开始实现下一个需求点或完善功能代码。 总之,TDD过程就是先写期待实现功能的测试代码,然后实装代码使测试通过的。当然

软件测试之-单元测试

拜拜、爱过 提交于 2019-11-27 01:35:24
1、单元测试概念 1)单元测试是对软件基本组成单元进行的测试,如函数(fuction或procedure)或一个类的方法(method)。这里,基本单元不一定是指一个具体的函数(fuction或procedure)或一个类的方法(method),在具体实现时,也可能对应的是多个程序文件中的一组函数。 2)在软件系统中,单元也具有一些基本属性,如:明确的功能、规格定义、明确的与其他部分的接口定义等,可清晰的与同一程序的其他单元划分开来。 2、单元测试的目的 1)单元测试的目的在于发现各模板内部可能存在的各种错误,主要是基于白盒测试。 2)软件产品不仅仅包含代码,还包含各种文档,因此测试应从三方面考虑: a.针对文档的测试; b.针对代码的测试; c.针对文档和代码是否一致的测试。 3)单元测试阶段,对应的文档时详细设计说明书,对应的代码是单元代码,因此单元测试的目的主要有三方面: a.验证单元代码和详细设计文档的一致性; b.跟踪详细设计文档中设计的实现,发现详细设计文档中存在的错误; c.发现在编码过程中引入的错误(编码过程中引入的错误包含两类:和设计不符引入的错误;和设计相符但由于编码出现疏漏导致错误),这里其实是针对文档和代码是否一致的测试。 3、单元测试中常见错误(单元测试关注重点) 单元的常见错误一般出现在5个方面:代码的稳定、易读、规范、易维护、专业。 因此

软件测试

自作多情 提交于 2019-11-27 01:18:38
1、整个流程:需求分析-->概要设计-->详细设计-->编码实现-->单元测试-->集成测试-->系统测试-->验收测试。 2、单元测试覆盖率包括:语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,条件组合覆盖,路径覆盖。 转载于:https://www.cnblogs.com/nzbbody/p/3558397.html 来源: https://blog.csdn.net/weixin_30751947/article/details/99234669

软件测试-测试分类

非 Y 不嫁゛ 提交于 2019-11-27 00:45:59
软件测试-测试分类 一、按软件测试阶段: a. 单元测试 b. 集成测试 c. 系统测试 d. 验收测试 1、单元测试 单元测试的原则: 1、尽可能保证部没测测试用例相互独立 2、一般由代码的编写人员来实施 单元测试的优点: 1、能尽早发现缺陷 2、有利于重构 3、可以简化集成 单元测试的缺陷 1、不可能穷尽测试,即测试用例不可能覆盖所有的执行路径,不可能捕捉到所有的错误 2、每一行代码需要3-5行测试代码来完成测试 单元测试框架 xUnit,比如:JUnit 例:eclipse->new->Java project->(finish)->右键项目->properties->Java Build Path->Add library->选择JUnit->next->选择Junit版本->finish 选中需要测试的类,在上右键->new->junit test case(勾选setUp()和tearDown() )->next( 选择需要测试类中待测试的方法 ) -> finish() 2、集成测试 在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块,子系统或者系统的过程中各部分工作是否达到或者实现相应3技术指标及要求的活动。 集成测试实施方案 1、BIg Bang(一次性集成/大爆炸):把大部分开发模块耦合起来,形成一个完整的软件系统

Python单元测试笔记

守給你的承諾、 提交于 2019-11-27 00:45:45
单元测试根据级别不同可分为:单元测试、集成测试、系统测试、验收测试、回归测试 单元测试的更能特点:对代码最基本单元(函数、方法)的测试、 给予特定条件判断结果是否符合预期 相对整个程序的测试,单元测试简化了测试任务 unittest 模块 代码组织: 断言:assertEqual(值,表达式) 是否相等、 assertTrue() 是否为真 assertIn() 是否包含 assertAlmostEqual() 是否约等于 assertIs() 是否为同引用 assertIsNone() 是否为空 assertIsInstance() 是否某类型实例 assertGreater() 是否大于 ... 装置: 测试用例类继承自unittest.TestCase test_ 定义功能测试函数名 setUp() 函数定义准备初始化代码 setUp() 函数定义准备初始化代码 来源: https://www.cnblogs.com/yang901112/p/11336993.html

MVC Controller进行单元测试

无人久伴 提交于 2019-11-26 21:04:15
/// <summary> /// 单元测试控制器基类。 /// </summary> public class UnitTestBaseController : Controller { public UnitTestBaseController() { var httpContext = new Moq.Mock<HttpContextBase>(); var response = new Moq.Mock<HttpResponseBase>(); httpContext.Setup(ht => ht.Response).Returns(response.Object); var request = new Moq.Mock<HttpRequestBase>(); var queryString = new System.Collections.Specialized.NameValueCollection(); request.Setup(r => r.QueryString).Returns(queryString); var httpCookieCollection = new HttpCookieCollection(); httpCookieCollection.Add(new HttpCookie("token", "124")); request.Setup(r

Python-34-单元测试

倖福魔咒の 提交于 2019-11-26 19:53:43
【= 看project_unittest项目 =====】 unittest核心工作原理 unittest中最核心的四个概念是:test case(测试用例),test suite(测试集),test runner,test fixture 一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。 而多个测试用例集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。 TestLoader是用来加载TestCase到TestSuite中的,其中有几个loadTestsFrom__()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例。 TextTestRunner是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。 测试的结果会保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。

用Mockito和PowerMockito写了20多个UT的心得

蓝咒 提交于 2019-11-26 19:39:53
用Mockito和PowerMockito写了20多个UT的体会(一) 单元测试 : 程序开发过程中,写代码是为了实现需求。当我们的代码通过了编译,只是说明它的语法正确,功能能否实现则不能保证。 因此,当我们的某些功能代码完成后,为了检验其是否满足程序的需求。可以通过编写测试代码,模拟程序运行的过程,检验功能代码是否符合预期。 软件开发的生命周期中,单元测试是由编程人员来完成的,那么作为一个初级程序员, 单元测试是必须要掌握的 。 单元测试实际上就是一些“断言”(assert)代码 。 断言 就是判断一个函数或对象的一个方法所产生的结果是否符合你期望的那个结果。 常见的断言 : assertEqual 如果两个值相等,则pass assertNotEqual 如果两个值不相等,则pass assertTrue 判断bool值为True,则pass assertFalse 判断bool值为False,则pass 常见的单元测试方式 有两种:运行测试(JUnit)和mock测试(PowerMock) 运行测试就是运行真实的项目环境(启动spring应用、连接数据库、加载各种环境等),它依赖于真实的环境和数据库,代码之间耦合性强,假如我的代码依赖程序员小B的接口,小B写的接口业务没实现完,我采用运行测试的方法进行单元测试就测不了了。 使用mock测试可以解决我刚才的问题

Google开源C++单元测试框架Google Test【转】

岁酱吖の 提交于 2019-11-26 18:32:36
gtest是个好test... 原文:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错。 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了。 其实gtest本身的实现并不复杂,我们完全可以模仿gtest,不断的完善我们的测试框架, 但最后我们还是决定使用gtest取代掉原来的自己的测试框架,原因是: 1.不断完善我们的测试框架之后就会发觉相当于把gtest重新做了一遍,虽然轮子造的很爽,但是不是必要的。 2.使用gtest可以免去维护测试框架的麻烦,让我们有更多精力投入到案例设计上。 3.gtest提高了非常完善的功能,并且简单易用,极大的提高了编写测试案例的效率。 gtest的官方网站是: http://code.google.com/p/googletest/ 从官方的使用文档里,你几乎可以获得你想要的所有东西 http://code.google.com/p/googletest/wiki/GoogleTestPrimer http://code.google.com/p/googletest/wiki

Pytest单元测试框架-环境安装

我只是一个虾纸丫 提交于 2019-11-26 17:06:19
unittest是python自带的单元测试框架,它封装好了一些校验返回的结果方法和一些用例执行前的初始化操作,使得单元测试易于开展,因为它的易用性,很多同学也拿它来做功能测试和接口测试,只需简单开发一些功能(报告,初始化webdriver,或者http请求方法)便可实现。 但自动化测试中我们常常需要根据不同需求挑选部分测试用例运行,并且我们希望用例克服环境不稳定的局限,即运行失败后自动重新运行一次,如果成功就认为是环境问题导致第一次失败,还有我们经常希望测试用例可以并发执行等等,这些unittest都做不到或者需要大量二次开发才能做到,那么有没有更加强大的框架可以替代unittests呢? pytest是python里的一个强大框架,它可以用来做单元测试,你也可以用来做功能,接口自动化测试。而且它比unittest支持的功能更多更全面。但是pytest在Getstarted里给出的实例却很简单,很多同学错以为它只是跟unittest一样是个单元测试框架罢了,如果你查询中文互联网,你也只能找到寥寥数篇大致一样的用法,可以说pytest的精髓使用,没有被大家挖掘出来,如此强大的框架不应该被埋没,今天我就带领大家深入pytest使用,共同领略pytest的强大。 1.安装pytest单元测试框架 2.检查Pytest安装版本 使用的命令是:pip show pytest 也可以使用