100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > BUAA_OO_Unit3(JML编程)

BUAA_OO_Unit3(JML编程)

时间:2020-03-07 16:14:22

相关推荐

BUAA_OO_Unit3(JML编程)

分析本单元的测试过程

谈谈你对黑箱测试和白箱测试的理解
白盒测试

简单来说就是看代码,分析可能的输入会有哪种执行路径,分析程序中每条通路是否按照预定要求正确工作。

黑盒测试

从用户角度分析,简单来说就是输入数据,并检测输出是否符合要求。

单元测试、功能测试、集成测试、压力测试、回归测试的理解
单元测试

颗粒度最小,测试单元设计是否符合,一般使用白盒测试对单元进行测试。具体到操作,即分析各函数是否符合其要求。

集成测试

介于单元测试和系统测试之间,黑盒加白盒的形式进行测试,验证设计验证需求,可以用junit来测试

功能测试

颗粒度最大,测试某个功能是否正确,表现为,测试具体的指令是否能正常完成,一般是黑盒测试。

压力测试

为了评价所设计的程序的时间空间复杂度是否能达到要求,要进行大数据量的测试,生成的数据要有针对性,不同的测试样例应侧重不同,具体为数据生成时某些指令所占的比例。正确的输出由交简单的程序生成,只保证正确性,不要求性能。或者可以进行对拍。

回归测试

当发现某些bug后,进行debug,debug后的代码除了要通过出现bug的样例,还要通过以前其他样例。

梳理本单元的架构设计,分析自己的图模型构建和维护策略

和图有关的指令

加人、加边、改边、查询连通性、查询连通块数量、查询三元环、查询最强连接、查询“对”数量、查询含某节点的最小环

分析

在第一次作业中,没有删边的操作,使用并查集可以维护连通性、连通块数量

三元环的维护,发现,只有在增加边时,三元环发生改变,只需遍历两点的邻节点,若有相同的点即三元环数量增加。

最强连接,发现只有在加边或删边时会造成最强连接的改变,在加边和删边时维护即可。

“对”即互为最强连接,由于上方已经维护了最强链接,直接查询即可。

在第二次作业中,多出了删边的操作,仍采用并查集维护连通性。但对于删边操作,在动态维护时,可以先分别dfs寻找所有和当前两节点联通的节点,得到两个节点集,分析发现,若这两个节点集没有交集,则这两个节点集成为两个新的连通块,注意更新两个节点集各节点的父节点,以及更新祖先节点集。

在第三次作业中,增加了查询某节点最小环的指令,对于该指令,考虑以下算法:

先以该节点为源节点进行迪杰斯特拉算法,找到最小生成树,然后分析,最小环一定从以下两种情况中产生:

1.某节点是源节点的邻节点,且有一条更短的到源节点的最短路径,则该最短路径,加上该节点到源节点的边即可能的最小环。

2.某两个节点相邻,且各自有一条到源节点的最短路径,则两条最短路径加上两节点之间的边,为可能的最小环。

遍历所有可能的最小环,找到最小的即可。

具体实现,可以先遍历最小生成树上所有节点,并查看是否符合情况1

情况2实现,先把最小生成树的根去掉,得到若干子树,只有不同子树之间的节点才可以实现情况2,否则会出现路径重复,不符合最小环定义。

分析作业中出现的性能问题及其修复情况,谈谈自己对规格与实现分离的理解

性能问题及其修复情况

按照上述维护方式,性能较好没有出现性能问题。

对规格与实现分离的理解

对于编写程序来说,阅读懂规格,并明白其要求,然后直接编写代码,编写好后,在对照规格看是否符合要求,最后应严格按照规格进行测试,其中,要读懂大量规格很费时间,可以使用chatgpt,把规格给gpt并让其使用自然语言解释,

这并不是完全抛弃规格,只是用自然语言解释,方便理解,代码运行的要求还是严格符合规格。

本单元中同学们实现了OK测试方法,请同学们思考OK测试对于检验代码实现与规格的一致性的作用,有何改进何建议

OKtest即拿到某个接口方法执行前后的数据,并分析方法执行结果是否符合规格要求。OKtest即照着规格对方法进行检查,OKtest方法只检查正确性,并不要求性能,但严格要求数据前后的改变符合规格。

学习体会

JML并不太好用,对于程序编写者来说,JML并不如自然语言容易理解,但是对于测试人员来说,JML是评判一个方法是否符合要求的好方法,按照JML逐条检查方法是否符合设计要求。

同时发现JML有很多操作可以总结为原语,例如对增删改查数组元素,增加一些操作原语可能会遍历JML的使用。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。