2024 Unit 3 总结博客

杨柳- 学生 2024-05-19 18:05:37

面向对象程序设计第三单元总结

测试方法

黑箱测试,白箱测试的理解:

1.黑箱测试:

黑箱测试不需要测试员对代码实现细节完全了解,只需要知道代码需要满足的条件,就像我们此次编写的Junit测试,我们可以不提前知道我们编写Junit对象的具体实现方法,可以根据我们的JML要求来编写我们的测试,以此来检验我们编写的代码是否满足了JML要求,每一个前提条件,确保,和副作用是否被满足;

2.白箱测试:

白箱测试需要程序员了解代码的细节构造,针对代码的细节分支完成完全覆盖率的测试,是穷举路径测试,就像了解了具体的视线过程,一点一点的验证每一步的对错;

其他测试:

1.单元测试:

单元测试是指对软件中的最小可测试单元进行检查和验证,但是单元的大小并不固定,可以是一个函数的实现,可以是一个方法,类,功能模块的构建。

2.功能测试:

功能测试是在规定的一段时间内运行软件系统的所有功能,以验证这个软件系统有无严重错误,目的是为了检验产品的正常功能是否正确实现;

3.集成测试:

集成测试是指在单元测试的基础之上,将所有的单元按照设计需求组装为子系统或者系统后,测试功能正确性,主要是测试单元模块间接口是否能正常实现数据的正确传递,保持数据的正确性,全局数据结构是否保证不被异常修改,以及子单元模块之间的组合是否正确有利;

4.压力测试:

压力测试是指对系统不断施加越来越大的负载的测试,如并发,循环操作,多用户等,测试代码是否能处理多并发等高压力情况;

5.回归测试:

回归测试是用于验证最近对软件的更改或更新是否无意中引入了新错误或对以前的功能方面产生了负面影响,如在为代码添加新的功能,修改结构之后,是否影响之前的正常功能
的运行与实现,其目标是确保改进的修改不会破坏软件的既定性能和可靠性;

数据结构策略:

在数据结构方面尽量做到完全覆盖,分支覆盖及代码覆盖率尽可能的高;

架构设计

此次单元要求完成维护一个关系网络,有成员,标签,消息,网络,主要围绕网络类展开,维护网络中成员之间的关系,成员的关系又依附于自己,标签,消息;构建方面大部分都按照JML给出的要求完成构造即可;维护方面,主要是维护并查集以及一些变量,并查集维护方面采用合并父节点以及删除关系时重新设置父节点方法进行维护,一些变量则按照变量的改变进行维护;

性能问题及规格与实现分离的理解

由于了解过学长学姐的经验分享,在并查集维护及其他变量的维护方面没有产生什么性能问题,但还是出现过两次问题,第一次是在完成代码时未检查,完全按照JML的要求,用复杂度为n的方法检查了网络中是否包含成员,这样导致在异常检查时时间开销大,出现了CTLE问题,第二次是在强测中遇到了多次检查Value的问题,由于每次检查Value都是n^2的复杂度,于是也超时了;

规格与实现方面,规格是关于设计层面的要求,在整体上对于代码的实现进行了约束不需要考虑具体的代码细节,而实现则是具体实现需求,在实现时,我们需要考虑代码性能及具体实现方法等;

Junit测试

在我们知道规格信息之后,就按照规格的要求结合实现的细节进行Junit测试,对每一个规格要求进行覆盖,在一致性方面,Junit代码应该是符合规格设计要求的;

本单元学习体会

在这个单元的学习中,了解到了JML,这似乎就像是我们平时完成作业时的思路构造,或者说更像是一个具体的要求指导书,可以根据JML完成整体框架的构造,只需要自己完成细节的打磨,同时,JML的要求也可以配合Junit测试代码,实现对代码实现正确性的检验;

...全文
133 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

301

社区成员

发帖
与我相关
我的任务
社区描述
2023年北航面向对象设计与构造
学习 高校
社区管理员
  • YannaZhang
  • CajZella
  • C_ecelia
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧