天天看点

软件开发中的自测及C代码示例

在软件开发中,程序自测是一个永远都绕不开的话题。很多开发人员以写出有难度的代码为荣,但却不重视对自己编写的代码进行测试,这导致了最终到达客户手中的产品质量不高,bug频发,损害了公司的形象。对于一个开发人员来说,我们应该将开发和自测置于同等重要的地位,我们花在自测上的时间要不比开发少。能否对自己编写的代码进行充分的自测也是检验一个开发人员水平高低的标准之一。

自测方法

根据所编写的程序的特点,自测方法大致有如下几种:

第一种,利用模拟工具进行自测。这种方法适用于需要其他模块(尚不具备)发过来的消息才能触发程序流程的情况。模拟工具要严格按照协议的要求发消息,并处理相应的应答消息。这种方法的优点是可模拟真实的系统来测试代码,功能覆盖比较完全;其缺点是模拟工具的编写比较复杂(相当于要实现一个完整的功能模块)、花费的时间较多。

第二种,利用对端模块进行自测。这种方法适用于两个软件模块功能的耦合性比较强且在同时开发的情况。例如,正在开发的模块1的功能A需要正在开发的模块2的功能B才能触发,而模块1和模块2的开发进度差不多,此时,就可以通过模块2向模块1发消息的方法来对功能A和功能B进行自测。

第三种,手动插入数据或执行命令进行自测。这种方法适用于某个软件模块的功能比较独立的情况。此时,没有其他模块与该模块进行消息的交互,也没有编写单独的测试模块。利用手工的方法的优点是可以根据程序的特点设置测试用例,代码覆盖率比较高;其缺点是难以对大数据量的消息进行测试,无法保证程序性能。

第四种,在程序中添加测试代码进行自测。也就是说,在编写软件功能代码的同时,将测试代码一并加入其中。这种方法的优点比较明显,那就是无需与其他程序模块进行消息交互、无需手动插入数据或发消息,当整个软件模块运行起来之后,测试代码即可发挥其功效。当然,该方法也有缺点,那就是编写这些测试代码需要花费一定的时间,可能导致代码过于臃肿。

本文接下来的部分,将用实际的C代码来示例第四种自测方法的使用。

示例程序

本文用到的示例程序比较简单,其功能是每个一段时间(1分钟)将源目录中满足前缀要求的文件备份(移动)到备份目录中。

程序(FilesBackup.c)如下:

添加测试代码之后的程序

我们添加测试代码的基本思路是在扫描源文件目录之前,先在该目录下生成文件,这样就相当于手动将文件放到源目录中了。

添加之后的程序代码如下:

程序说明如下:

第一,本程序中添加的测试函数是CreateTestFile,其作用是在源目录中创建测试文件。考虑到程序性能,我们设定最多生成1000(可根据实际情况修改)个满足前缀要求的文件,并且每一轮生成的文件数比上一轮多一个。同时,每生成10轮的满足前缀要求的文件之后,要生成一个不满足前缀要求的文件,用以测试异常情况。如此,正常和异常情况都考虑到了。

第二,示例代码中写入文件的内容是固定的“Hello,world!”,大家可以根据需要修改该内容以满足自身测试的要求。

第三,在提交正式版本的时候,大家要将测试代码注释掉或删掉,以免影响正常的程序流程。

总结

很多人所理解的软件开发人员的工作就是写代码,而不包括测试,这样的理解是片面的。实际的经验表明,很多时候,我们花在测试上的时间比写代码的时间还要多。为了保证产品质量,很多项目组也对自测提出了较高的要求。

作为一位合格的软件开发人员,自测是一个检验和提升自身能力的好方法,大家一定要对自己编写的代码进行充分的测试。通过不断地实践,大家也可以总结出更多和更好的自测方法。

继续阅读