软件构造实验1心得
1.要有合理的目录结构
在实验准备时,我曾随意的设置目录结构,最后导致代码运行时找不到所需的文件。尝试一些操作后发现更改目录结构能解决该问题。此外,合理的目录结果也能让人更清楚每部分内容的功能,易于理解、易于管理。
图1:实验1目录结构
2.测试优先
首先了解几个概念:
模块是软件系统的一部分,可以独立于系统的其余部分进行设计,实现,测试和推理。
规范(spec)描述模块的行为。对于函数,规范给出了参数的类型和它们的任何其他约束(例如,的参数必须是非负的)。它还给出了返回值的类型以及返回值与输入的关系。规范可由函数签名和其上方描述其功能的注释组成。
模块具有提供其行为的实现,以及使用该模块的客户端。对于函数,实现是函数的主体,客户端是调用该函数的其他代码。模块的规范同时约束客户端和实现。从现在开始,我们将对规范、实现和客户端进行更多介绍。
测试用例是输入的特定选择,以及规范所需的预期输出行为。
在测试前要明确待测方法的spec,按照spec设计测试用例,进行等价类划分,可以使用笛卡尔乘积的方式全覆盖,也可以只覆盖一次每个分区。在测试中尤其要注意边界值,因为调用方法产生的结果不是连续变化的,常常在边界值处发生突变。总而言之,所写测试用例覆盖面要足够广,能检验待测方法是否正确。在实验1中,我对计算角度的方法进行测试时就忽略了边界值,导致未及时发现方法的漏洞,从而出错。我从中体会到测试的意义之一就是让使用者能放心地调用该方法,不用担心其正确性,在新写的调用过之前方法的函数时,能够节省再次检查之前方法的时间和精力。调用方法时也要遵从其spec。