[BUAA OO]第四次博客做业

 

1、      测试与正确性论证的区别java

在最后一个单元的OO做业中,咱们主要进行了代码的测试与正确性论证工做。这俩者在做业中的体现分别是junit单元测试以及jsf论述语言。这二者在java代码开发中分别可以帮助咱们检测代码、测试代码,最终起到对工程正确性进行检测的功能。程序员

这两者就比如一个是完成前的完整性检查,一个是完成后的正确性测试。固然了,理论上来讲,这二者之一均可以帮助咱们避免代码中问题的出现,可是更保险一点又有谁会反对呢?多线程

先说说junit单元测试。这个相比jsf论述语言,应该是咱们比较熟悉的一个了。就像咱们平时完成代码后的功能测试同样,junit经过编写可以完整覆盖代码逻辑分支、语句分支的测试样例,对每个功能单元进行测试,并与预期结果进行比对,从而起到辅助程序员规避代码bug的功能。这种方法十分亲民,可是,却有着必定的问题。通过实践发现,因为逻辑自己存在的问题,虽然使用的测试样例达到了代码覆盖率100%,逻辑分支覆盖率100%,可是样例过于简单,没有在数据范围上完整覆盖全部区间,在经过单元测试以后,仍然致使了问题的出现。单元测试

这就须要jsf论述语言来帮咱们规避问题。jsf论述语言,在刚开始学习的时候让咱们感到无比头痛。绝不亲民的语言格式,不直观的展现方式,啰嗦的描述方式,让我对其功效一度产生了怀疑。但这却能让咱们规避junit所没法规避的问题,那就是在逻辑上对实际实现的代码与程序员所构思的程序应该具备的功能作比较。在这个单元的学习中,我就经过jsf论述成功发现了个人第三次OO做业中的一处逻辑漏洞,是判断语句中数据覆盖不完整致使的,若是不使用极其特殊的测试样例,使用junit单元测试就很难发现其中的问题。学习

 

2、      OCL VS JSF测试

OCL(Object Constraint Language)语言,即对象约束语言,跟jsf语言同样,是声明式语言,对于方法只关心作什么、效果怎样,而具体如何实现,则不关心。都是使用逻辑表达式来描述具体的约束内容,采起了相似前置条件,后置条件,不变式这样的语法。可是OCL一般会结合uml类图来使用,相比jsf的约束性也更广。线程

 

3、        第十四次做业总结设计

 

 

以上是个人时序图和uml图。3d

 

4、      学期总结对象

这学期的面向对象程序设计课程主要进行了四个单元的练习,分别以基础java程序设计,基础多线程程序设计,进阶多线程程序设计、jsf论述入门,以及jsf论述进阶、junit单元测试为主。在总体上来看,逐步深刻,每一个单元的做业由三次程序做业组成,按照指导书加答疑的方式布置内容,要求咱们有非直观信息的理解能力。

这个学期的做业我作起来仍是至关认真的,每次都是“谋定然后动”,中间的电梯第二次做业还在周一夜因为逻辑设计的问题重构过一次,总体上来讲应该算是质量不低的。但事实却跟我想的有点区别。第一次单元测试做业,让咱们测试第三次做业(也就是第一次电梯做业)。在回顾的时候,简直惨不忍睹。虽然做业总体功能上没有出现问题,可是各类变量名混乱、类功能混乱、对于同一个信息的检测分割在不一样类中,羞于认可这是我写的。进而总体重构了一遍。在羞愧之余,我却发现,这未尝不是一种提升呢?在当时我那样设计,虽然已经忘记了当时的初衷,可是如今对于当初的鄙夷不正是表现了我对于清晰的面向对象程序的认识与向往么?这种提升每次一都很小,可是12次做业积累下来,简直让人没法相信这些都是同一我的写的。不可谓提升不小。

相关文章
相关标签/搜索