软件工程学习笔记一:单元测试
软件的完成一般需要多人的合作,作为团队中的一员,可以通过对自己负责的模块进行单元测试而得到一个质量高的、稳定的成果。单元测试,刚遇到这个概念是很迷茫的,在之前编写程序的过程中,一般都是在多次编译中发现自己的问题并改正之,一旦运行通过就不再管了。当然,程序和软件是不同的概念,有的软件是需要多次维护的,为了避免程序员写的某些模块被其他接手的人误解而引起软件的bug,写完代码后进行单元测试是很必要的。
创建单元测试函数的主要步骤是:
1.设置数据
2.使用被测试类型的功能
3.比较实际结果和预期的结果
而什么才是好的单元测试呢?下面将列举一系列的标准:
1.单元测试应该在最基本的功能/参数上验证程序的正确性(如C++中的类)
2.单元测试必须由程序的作者来写
3.单元测试过后,机器状态保持不变(在teardown阶段删掉单元测试创建的临时文件或目录)
4.单元测试要快,且产生可重复、一致的结果
5.独立性(当其他模块费时或不稳定时可以人为构造数据来进行单元测试)
6.单元测试应覆盖所有代码路径(必须测试公开的和私有的函数/方法)
7.对于需要长期使用的软件,最好将单元测试自动化
8.单元测试必须和产品代码一起保存和维护
看起来,单元测试不是一件简单的事,尤其是对于大量代码的程序,但如果不写单元测试,可能将在后期遇到更多难以修复的bug。
因此,在编写完软件的一项功能后(如我们想要做的音乐软件的读取音乐功能),最好做一下测试。并养成做单元测试的习惯。
引用部分出自《构建之法》,作者邹欣。
=======================
使用VS2015实验了一下,由于VS无法对C++进行单元测试,照着书上编写了简短的C#程序,然而依然没有成功完成单元测试。
也许单元测试的工作需要具备更高的编程能力才能完成。