`

单元测试,测试什么?

    博客分类:
  • java
阅读更多
我们一直强调单元测试的重要性,但是有一个问题可能没有认真去想过,测试是重要的,但是我们测试什么呢?最近重读《单元测试之道》,书中给出了答案:Right-BICEP

1.Right——正确

很显然,如果代码运行的结果与你预期的不符合,那么这段代码肯定是有问题的。需要注意的是,Right并意味着正确,因为正确只是相对你所期望的结果而言,而对于用户需求也许就是错误的。

2.B——边界条件
寻找边界条件是单元测试最有价值的工作之一,因为bug一般出现在边界条件上,你常常需要考虑下面这些边界条件:
1)完全伪造或者不一直的数据进行输入
2)格式错误的数据,比如错误的URL,Email地址
3)空值或者不完整值,比如0,null
4)与常理相去甚远的数据,比如人有10000岁?
5)如果要求传入的是一个不允许重复数据的list,你传入一个有重复数据的看看出现什么情况
6)如果需要传入的有序的集合,你传入一个无序的看看结果
7)不按照次序地执行,比如未登录就尝试操作某功能等
对于边界条件,可以按照CORRECT的顺序去尝试:
Conformance——一致性,值是否和预期的一样
Ordering——顺序性,值是否如预期的那样,有序或者无序
Range——区间性,值是否处于合理的范围内
Reference——引用,值是否引用了代码无法空值的外部资源
Existence——值是否存在,为空?为0?不在集合内?
Cardinatity——基数性,检查你的函数能否正确地计数,不多不少
Time——所有的事件的发生是否按照预期的顺序,性能上满足要求?

3.Inverse——检查反向引用
如果方法导致某个结果,尝试以另一个方法能否返回最初的状态?与原状态是否符合预期?

4。Cross——交叉检查
通过不同的方法检查一个方法产生的结果是否正确,比如用Math.sqrt方法检查自己编写的求平方根的方法是否正确。另外的方式,以一种数量去检查另一种数量,比如图书馆借出的书加上架上的书的总数是固定,可以用借出的书来检查架上的书的数量是否正确。

5.E——强制错误条件的产生

一般我们所能想到的环境因素:
1)内存耗光
2)磁盘用满
3)时钟出问题
4)网络不可用或者有问题
5)系统过载
6)调色板颜色数目有限
7)显示分辨率过高

再比如JDK版本差异,我就为这个问题头痛过:)

6.Performance——性能
每天或者每隔几天运行一下一个粗糙简单的性能测试,能够保证你不会在给用户演示的时候出现尴尬的场面。

尽管书上是讲了这么多测试这个、测试那个,我想真实的项目场景中应该根据需要采取特定的测试策略,比如你总不能对于一个单机应用需要考虑地震震断海底光缆引发的问题。就我自己而言,因为项目组中似乎只有我对JUnit等单元测试工具充满兴趣,有经验的老程序员是自己写一个带Main方法的Test类进行测试,而更多的人根本就不知道单元测试或者知道也不感兴趣,在没有压力的情况下,要求自己考虑这么多的测试内容,难矣。今天试用了下NUnit,感觉比JUnit难用多了,JUnit与Eclipse的结合非常简便。





分享到:
评论

相关推荐

    单元测试实施规程 软件单元测试

    单元测试实施规程是软件开发过程中一个关键的质量保证环节,它旨在确保软件的每个独立模块都能按照预期的功能正确运行。以下是对这一规程的详细说明: 1. **目的**:单元测试的主要目的是验证软件的各个模块(任务...

    Tessy单元测试提高软件质量

    "Tessy单元测试提高软件质量" 单元测试是软件测试中的一种重要方法,旨在确保软件的质量和可靠性。在本White Paper中,我们将讨论单元测试的重要性、方法论和实践应用。 单元测试的定义和重要性 单元测试是指对...

    软件单元测试报告.doc

    软件单元测试报告 软件单元测试报告是软件开发过程中的一种重要文档,它记录了软件单元测试的结果和过程。下面是该报告的知识点总结: 一、软件单元测试报告的组成部分 软件单元测试报告通常由以下几个部分组成:...

    软件单元测试入门与实践,软件单元测试入门与实践 周立功,C,C++

    在软件开发过程中,单元测试是一项至关重要的质量保证活动,它能帮助开发者确保代码的正确性和稳定性。本资源“软件单元测试入门与实践”由周立功撰写,专注于C和C++编程语言,提供了对单元测试的基本理解及实际操作...

    单元测试说明模板

    单元测试说明模板 单元测试是一种软件测试方法,它通过在单元层面上对软件的每个组件进行测试,以确保每个组件都能正确地执行其功能。单元测试是软件测试的基础,是软件开发过程中不可或缺的一部分。 单元测试的...

    Qt单元测试演示qt单元测试demo_基于qt5单元测试工程例子qt5单元测试例子

    //qt单元测试用法,qt测试例子,qt单元测试demo,qt单元测试简单例子,qt单元测试例程,qt单元测试简单例子, qt5单元测试例子,qt5单元测试代码,qt5单元测试工程例子,测试运行ok //首先,用标准的qt测试单元导向,...

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

    什么是单元测试?如何做好单元测试? 单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测试单元通常是指函数或者类。   单元测试都是以自动化的方式执行...

    .Net 单元测试案例

    在.NET开发过程中,单元测试是一项至关重要的任务,它有助于确保代码的质量、可维护性和稳定性。单元测试允许开发者独立地测试代码的各个部分,确保每个功能模块都能按预期工作。本案例将深入探讨如何在.NET环境中...

    Android单元测试的小例子

    在Android开发中,单元测试是确保代码质量、可维护性和减少缺陷的重要环节。这个小例子将引导我们了解如何在Android项目中设置和执行单元测试。首先,我们需要知道Android的单元测试框架主要有两个:JUnit和 ...

    单元测试实例(C#版)

    (C#语言版)单元测试实例,主要功能包括:(1)输入数据到textbox,以逗号间隔,然后求数组最大值、求和,并将结果显示出来,并针对于数组求最大值函数和求和函数写单元测试代码;(2)连接数据库,写出单元测试代码来测试求...

    单元测试报告模板.doc

    《×××单元测试报告》是对软件开发过程中某一模块或组件进行独立验证的文档,它详细记录了单元测试的过程、结果以及可能遇到的问题。单元测试是软件开发中的关键环节,旨在确保代码的各个部分按预期工作,从而提高...

    单元测试

    单元测试是一种软件开发过程中的重要环节,主要用于验证代码的各个最小可测试单元,如函数、方法或类,是否能够按照预期工作。通过编写自动化测试用例,开发者可以在修改代码后快速检查新变更是否引入了错误,确保...

    java单元测试篇:使用clover为java代码的junit测试做覆盖率分析.pdf

    Java 单元测试篇:使用 Clover 为 Java 代码的 JUnit 测试做覆盖率分析 Java 单元测试是软件测试的重要组成部分,对于 Java 开发者来说,单元测试是必不可少的。今天,我们将学习使用 Clover 框架来分析 Java 代码...

    C++单元测试简单示例

    首先,我们需要理解什么是单元测试。单元测试是对软件中的最小可测试单元进行检查和验证的过程。对于C++,这可能是一个函数、一个类的方法或者一个独立的对象。它的目标是确保每个独立的部分都能按照预期工作,从而...

    JUnit单元测试原则 单元测试工具

    ### JUnit单元测试原则与工具详解 #### 一、单元测试概述 单元测试(Unit Testing)是一种软件测试方法,主要用于验证程序中的最小可测试单元(通常是单个函数或方法)是否按预期工作。对于Java这样的面向对象语言来...

    单元测试的代码覆盖率至少80%

    单元测试的代码覆盖率至少80%!一大早,一个年轻的程序员问大师:“我准备写一些单元测试用例。代码覆盖率应该达到多少为好?”大师回答道:“不要考虑代码覆盖率,只要写出一些好的测试用例即可。”  一大早,一个...

Global site tag (gtag.js) - Google Analytics