第三单元总结

一、黑箱测试和白箱测试

黑箱测试:根据代码所应具有的功能,通过测试来检测每一个功能是否能够正常使用

白箱测试:检测软件的结构,主要关注覆盖率等

二、单元测试、功能测试、集成测试、压力测试、回归测试

单元测试:针对最小单元(函数)进行的测试,验证函数的功能实现,包括输入、输出、错误等,检测函数是否实现了应有的功能

功能测试:针对一个特定的功能进行测试,测试单位是功能

集成测试:将多个已经测试过的单元集成在一起测试,测试不同单元之间的交互是否正常

压力测试:使用极端情况的数据使软件超负荷运行以测试软件抵抗压力的能力

回归测试:重复以前的全部或者部分的相同测试

三、数据构造策略

数据构造要覆盖面全,首先可以考虑使用随机的方法生成。但是随机方法难以生成边际条件的数据,所以这一部分数据也需要手动构造。比如在第一次作业针对queryTriSum的测试时,我生成了三种不同的图作为测试,一个是没有TriSum的图,第二个是完全图,第三个是随机生成的图,这样能够尽量地保证数据全面。

四、架构设计

在关系图模型构建时,主要使用并查集来便于查询联通块

维护了大多数查询的数据,将原本O(n^{2})的算法优化到O(n),O(n)优化到O(log(n))。如valueSum,triSum等。

五、出现的性能问题

  • 并查集不支持删边操作,使用重建图的方法导致性能较差,如果只重建部分图可以稍微优化。

  • 如果完全按照JML描述的方式进行方法的编写性能会很差,可以使用合适的算法,或者使用动态维护的方式。这就是规格与实现分离。

六、Junit测试

在验证方法执行是否正确时,可以按照JML的ensures一个个来验证,不需要设计其它算法,只需要完全按照规格描述来翻译即可。这样可以使得Junit编写较为容易,且容易发现错误。

七、学习体会

软件开发的过程,尤其是一些重要软件,需要有严格的规范和进行全面的测试。JML作为规范的一种,有利于我们去学习其它的各种规范描述语言。本单元对Junit测试的编写也能够提高我们对代码测试的能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值