单元测试
单元测试概念
单元测试应对模块内所有重要的控制路径进行测试,以便发现模块内部的错误。单元测试是检查软件源程序的第一次机会,通过孤立地测试每个单元,确保每个单元工作正常,这样比单元作为一个更大系统的一个部分更容易发现问题。在单元测试中,每个程序模块可以并行、独立地进行工作。单元测试主要测试模块在语法、格式和逻辑上的错误。
单元测试的测试对象是代码模块,使用的测试方法主要是白盒测试,测试的工作内容包括模块内程序的具体实现、逻辑结构以及数据流向等。
单元测试用例设计
单元测试用例的设计既可以使用白盒测试也可以使用黑盒测试,但以白盒测试为主。白盒测试进入的前提条件是测试人员已经对被测试对象有了一定的了解,基本上明确了被测试软件的逻辑结构。黑盒测试是要首先了解软件产品具备的功能和性能等需求,再根据需求设计一批测试用例以验证程序内部活动是否符合设计要求的活动。
1)模块接口测试
2)模块局部数据结构测试
3)模块中所有独立执行路径测试
4)各种错误处理测试
5)模块边界条件测试
判断得到的结果是否正确,对于测试而言,首要的任务就是查看所期望的结果是否正确,即对结果进行验证。
单元测试环境建立
由于一个模块或一个方法并不是一个独立的程序,在考虑测试它时要同时考虑它和外界的联系,因此要用到一些辅助模块,来模拟与所测模块相联系的其他模块。一般把这些辅助模块分成两种。
1)驱动模块,相当于所测模块的主程序。用来模拟被测试模块的上一级模块,相当于被测模块的主程序。它接收数据,将相关数据传送给被测模块,启动被测模块,并打印出相应的结果。
2)桩模块,用于代替所测模块调用的子模块。用来模拟被测试模块工作过程中所调用的模块。它们一般只进行很少的数据处理。
JUnit测试框架
每个测试方法都对应一个测试用例类的实例。当TestCase实例被运行时,依照以下步骤进行:
1)创建测试用例实例
2)调用setUp()方法,执行一些初始化工作
3)运行testXxx()测试方法
4)调用tearDown()方法,执行销毁对象的工作
------------------------------以上摘抄至 《软件测试 技术案例教程》李海生 郭锐 编著
Angular单元测试
https://angular.cn/guide/testing-components-basics
https://jestjs.io/docs/using-matchers