第六周作业----单元测试
一、单元测试的概念。
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
二、单元测试的目的。
单元测试的目的在于发现各模块内部可能存在的各种错误。
- 验证代码是否与设计相符合;
- 发现设计和需求中存在的错误;
- 发现在编码过程中引入的错误;
- 使得代码重构成为可能。
三、单元测试的策略。
1. 自顶向下的单元测试策略
方法:先对最顶层的基本单元进行测试,把所有调用的单元做成桩模块。然后再对第二层的基本调用的单元做成桩模块。使用上面已测试的单元做驱动模块。依此类推直到测试完所有基本单元。
优点:在集成测试前提供早期的集成途径。不需要开发驱动模行上和详细设计的顺序一致。
缺点:随着测试的进行,测试过程越来越复杂,开发和维护成本增加。
总结:比孤立单元测试的成本高很多,不是单元测试的一个好的选择。
2. 自底向上的单元测试策略
方法:先对最底层的基本单元进行测试,模拟调用该单元的单元做驱动模块。然后再对上面一层进行测试,用下面已被测试过的单元做桩模块。依此类推,直到测试完所有单元。
优点:在集成测试前提供系统早期的集成途径。不需要开发桩模块。
缺点:随着测试的进行,测试过程越来越复杂。
总结:比较合理的单元测试策略,测试周期较长。
3. 孤立单元测试策略
方法:不考虑每个单元与其它单元之间的关系,为每个单元设计桩模块或驱动模块。每个模块进行独立的单元测试。
优点:简单、容易操作,可达到高的结构覆盖率。
缺点:不提供一种系统早期的集成途径。
总结:最好的单元测试策略。
四、单元测试工具。
1.java、android语言的单元测试工具—JUnit.
下面讲解一下平时我是怎么单元测试的。我的环境(myeclipse 2013 pro+junit4)
step 1. 把junit的jar包添加到buildpath。右键项目名,选择“Build Path”—>”Add Library”.出现下图所示。选择“JUnit”,项目目录下会多出“JUnit4”,右键选中,点击“add to build path”.
step2. 新建测试类,编写测试方法。添加JUnit注解.常用的注解有@Test,@Before,@After.执行顺序是Before->Test->After. 一般Before方法中邪初始化操作,如数据库的连接;Test方法中写具体要测试的函数,如查询数据库;After方法中一般写数据库连接的释放。具体看单元测试的是什么。
step 3. 右键测试类,选择“Run as”->”JUnit Test”
2. C#单元测试工具。(VS2015 社区版)。
step1. 下载单元测试插件。联机搜索插件“Unit Test Generator”并下载,这是进行单元测试要用到的插件工具。
step 2. 新建项目,创建C#类库。(实际中对应自己编写的模块,即要测试的类)。
step 3. 右键刚创建的类,选择“创建单元测试”。可以看到VS自动创建了一个“Class1Tests”的类库,其中看到有“TestClass”和“TestMethod”,这是单元测试专用的测试类和测试方法。
step 4. 下一步,点击上方工具栏的“测试”-“窗口”-“测试资源管理器”。测试资源管理器出现在屏幕的左边,在这里可以清晰地看到测试结果。现在点击测试资源管理器的“全部运行”。运行结果如图所示。
我目前只使用过上诉两种单元测试工具。但是,有时候我也不会借助单元测试工具,我会自己写一个main方法,测试自己要单元测试的方法或类。并跟踪调试。