BUAA OO unit3

一、分析本单元的测试过程

1.对黑箱测试、白箱测试的理解

黑箱测试:只关注软件的功能行为,而不考虑其内部结构或实现细节。基于需求规格和功能规格文档设计测试用例,输入不同的数据和条件,然后检查系统的输出是否符合预期。

白箱测试:基于了解软件的内部结构实现细节,设计测试用例来验证代码的正确性、逻辑覆盖率和路径覆盖率。

黑箱测试相当于以用户的视角,不关注具体实现,输入各种各样用户可以想到的输入,检查代码的正确性。相较于白箱测试比较简单,但是无法检查内部代码的逻辑和实现细节的正确性。

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

单元测试:验证程序的各个独立单元(函数、方法、类等)的正确性。

功能测试:验证软件系统的功能是否符合用户需求和规格说明书的要求。功能测试通过输入不同的数据和条件,检查输出的正确性,属于黑箱测试。

集成测试:检查模块之间的接口和交互是否正常,以确保整个系统的功能和性能达到预期水平。

压力测试:评估系统在极端条件下的性能和稳定性。通过输入大规模的数据,检查程序的正确性,以及通过cpu运行时间,来检测程序的性能。

回归测试:通过重新运行之前编写的测试用例,检查修改部分周围的代码是否引入了新的错误或导致了原有功能的失效,以确保系统在更新后仍然具有稳定性和兼容性。

3.数据构造的策略

可以随机构造,手动构造时应当覆盖所有方法,考虑边界,以及判断一下容易出错的地方,并构造相应的数据。

比如一些规格中容易忽略的地方,如mr会让tag删人、一些动态修改的实现可能会遗漏掉属性的修改。

多构造一些复杂度可能会比较高的操作比如qtvs

二、以及本单元的架构设计,图模型构建和维护策略

本单元主要目标是维护一个社交网络,其中,人与人之间要求实现关系的增添,查询,删除等功能。tag类要计算其中persons的valuesum等一些信息,采用动态维护。message类要求删除一些消息,主要是考察容器的运用。

  • 对于第一次作业,并查集和动态维护blocksum,三角数,并查集可以快速查找两个人是否有路径,实际上也可以直接dfs,使得每种操作复杂度为o(n)。
  • 对于第二次作业,动态维护tag中的信息,valuesum要考虑到删人和加人,复杂度为o(n2),bestAcquaintance用大根堆维护,因为queryCoupleSum还有O(n)的复杂度枚举人。
  • 对于第三次作业,person存message的容器应当设为链表,维护前5条消息。

三、作业中出现的性能问题及其修复情况,以及对规格与实现分离的理解

性能问题:求person的bestAcquaintance时,o(n)是过不了的,应当用大根堆维护。

修复了很多个版本,对于规格这个单元印象很深。

规格是描述功能的,具体实现方法还需要设计者分析,关于实际运用中,每种方法要尽量少,如果有复杂度比较高的实现,需要让其他复杂度比较低的方法均摊一下。

四、如何利用规格信息来更好的设计实现Junit测试,以及Junit测试检验代码实现与规格的一致性的效果

规格中已经描述了输入数据的范围,可以用一些边界的数据来构建Junit测试,规格描述了功能,实际上我们可以通过规格可以得到一种最暴力的方法实现,可以用来测试我们的代码功能的正确性。在编写JUnit测试时,可以在测试用例的注释或命名中包含规格中对应的功能点或需求编号,以便于跟踪测试用例与规格的关联性。

笔者在写单元测试时就是考虑规格的边界条件检查方法的功能,效果还不错。

五、本单元学习体会

通过规格的学习,发现在规格时,实现起来相当于有了提示,但是具体实现方法还需要仔细考量。总的来说,收获很大。

  • 42
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值