软件测试笔记(十三)单元测试的介绍和工具选择

前言

单元测试一般是做为软件测试中基础的测试类型,用于测试单独的模块是否能够正常工做。它于功能测试不一样,它更加关注的是代码内部的逻辑,而非是用户的需求。javascript

单元测试定义

前面粗略了介绍了单元测试的定义,详细的解释是:单元测试也称为模块测试或组件测试。在软件开发过程当中,检查软件的单个单元或模块是否正常工做,它是由开发人员在开发人员的环境中完成的。php

image.png

软件测试一般划分为四个层次,每一个层次都会去验证软件产品的功能,质量和性能指标。它们是:单元测试,集成测试,系统测试和验收测试。java

单元测试的目标

  • 隔离代码的每一个部分。
  • 确保单个模块功能正确。
  • 在开发周期的早期,发现代码缺陷。
  • 早期介入,以节省测试成本。
  • 容许开发人员在之后重构或升级代码。

单元测试的优点

  • 它在产品开发周期的早期发现问题。所以它下降了测试成本,早发现一个缺陷的成本要比晚发现它的成本低得多。
  • 在改变现有功能(回归测试)时,它同时能够保证减小缺陷。
  • 它简化了调试过程(测试驱动开发就是基于测试用例来完成功能开发)。调试是在程序中发现并解决妨碍软件正确运行的缺陷的过程。当实现单元测试时,发现测试失败时,只须要调试代码中所作的更改,就能够快速定位到错误。
  • 因为更好的编码标准和实践,它给组织提供了更好的代码文档。

单元测试的内容

单元测试的方法

一般单元测试是使用白盒测试的方法node

单元测试的类型

单元测试能够是手动测试或者是自动化测试git

何时执行单元测试

它做为测试层次的第一层,一般是在集成测试以前完成。程序员

单元测试有谁执行

它须要由对于代码内部逻辑熟悉的人执行,一般是开发或者是白盒测试人员。github

单元测试有哪些具体的任务

首先须要准备单元测试计划:api

  • 准备测试计划
  • 回顾测试计划
  • 修订测试计划
  • 定义单元测试计划的基准数据

其次是要准备测试用例和脚本:浏览器

  • 准备测试环境和测试用例和脚本
  • 回顾测试用例和脚本
  • 修订测试用例和脚本
  • 定义单元测试用例和脚本的基准数据

最后是单元测试的执行。安全

单元测试的工具

市面上有不少单元测试的工具,它们可用于协助单元测试。具体的单元测试的工具的选择仍是要根据项目的具体状况决定,好比说项目的具体技术栈,是否能够重用已有的单元测试工具等。咱们将提供如下几个示例:

Junit:
Junit的目标是为JVM开发人员开发一个基础测试的测试框架。这包括关注java 8和更高版本,以及支持多种不一样风格的测试。

TestNG:
TestNG是一个受JUnit和NUnit启发的测试框架,可是它引入了一些新的功能,这些功能使它更增强大和易于使用,例如:

  • 注释。
  • 使用各类可用的策略在任意大的线程池中运行测试(全部方法都在本身的线程中,每一个测试类一个线程,等等)。
  • 测试您的代码是不是多线程安全的。
  • 灵活的测试配置。
  • 支持数据驱动测试(使用@dataprovider)。
  • 参数支持。
  • 强大的执行模型(再也不是TestSuite)。
  • 由各类工具和插件(eclipse、idea、maven等)支持。
  • 嵌入BeanShell以得到更大的灵活性。
  • 运行时和日志记录的默认JDK函数(无依赖项)。
  • 应用服务器测试的依赖方法。.

NUnit:
它是.net语言的单元测试框架。最初是从JUnit移植而来的,目前的产品版本3已经被彻底重写了,它有许多新特性,而且支持各类各样的.NET平台。

xUnit.net:
xUnit.net是一个免费的、开源的、面向社区的.net框架单元测试工具xunit.net是由nunit v2的原始发明者编写的,它是用于c、f、vb.net和其余.net语言单元测试的最新技术。xunit.net与resharper、coderash、testdriven.net和xamarin一块儿工做。它是.NET基金会的一部分,根据他们的行为准则运做。它是根据Apache 2(OSI批准的许可证)受权的。

JMockit
JMockit是开源的单元测试工具jmockit是一个用于开发人员测试的java工具包,包括模拟api和代码覆盖工具。

EMMA
EMMA是一个用于测量和报告java代码覆盖率的开源工具包。EMMA支持大规模的企业软件开发,同时保持单个开发人员的快速工做和迭代团队中的每一个开发人员如今均可以避免费得到代码覆盖率,最主要的是能够很快的得到覆盖率!

PHPUnit
PHPUnit是一个面向程序员的php测试框架。它是单元测试框架的xunit架构的一个实例。

Cantata:
Cantata是一个单元和集成测试工具,使开发人员可以在本地和嵌入式目标平台上验证标准兼容或业务关键代码。
Cantata经过自动化,帮助加速符合标准的动态测试要求:

  • 测试框架生成
  • 测试用例生成
  • 测试执行
  • 结果诊断和报告生成

TestComplete:
TestComplete是一个适用于多种应用类型和技术的自动化测试环境,包括(但不限于)Windows、.NET、WPF、Visual C++、Visual Basic、Delphi、C++Builder、Java和Web应用程序和服务。

Mocha:
Mocha是一个功能丰富的javascript测试框架,运行在node.js和浏览器中,使异步测试变得简单有趣。MOCA测试连续运行,容许灵活且准确的报告,同时将异常异常映射到正确的测试用例。托管在github上。

Jasmine:
Jasmine是一个用于测试JavaScript代码的行为驱动开发框架它不依赖于任何其余JavaScript框架它不须要dom。并且它有一个干净、明显的语法,因此您能够轻松地编写测试。

总结

单元测试做为测试的第一层次,被很早引入项目。因此在项目开始前,咱们同时须要对单元测试的技术选型和测试案例的计划进行准备。这样才能够在项目研发阶段,同时实现单元测试,以保证功能模块的功能。若是大伙有关于单元测试的一些见解,也请留言区回复和分享。

相关文章
相关标签/搜索