BUAA-OO-第三单元总结

目录

一、测试过程

1、黑箱测试和白箱测试

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

3、数据构造策略

二、架构设计和图模型构建

三、维护策略

 四、性能问题及其修复情况

五、规格与实现分离的理解

六、Junit测试方法

七、心得体会


一、测试过程

1、黑箱测试和白箱测试

黑箱测试: 这种测试方法将代码看作一个黑盒子,只关注输入和输出,而不考虑内部结构和实现细节。测试人员根据需求规格说明书或者功能规格,设计测试用例来验证软件是否符合需求,并且不了解软件的内部逻辑。黑盒测试主要关注软件的功能性、性能、安全性等方面。

白箱测试: 这种测试方法将代码看作一个白盒子,测试人员可以了解软件的内部结构、逻辑和实现细节。白箱测试通常通过代码检查、代码覆盖率分析、路径分析等技术来设计测试用例,以验证软件是否正确地实现了设计要求,是否存在潜在的逻辑错误和缺陷。白箱测试主要关注代码的内部结构、代码质量、逻辑正确性等方面。

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

单元测试: 单元测试是针对软件中的最小可测试单元进行的测试,通常是函数、方法或者类。单元测试旨在验证单个单元的功能是否正确,通过在隔离的环境中执行测试用例来实现。

功能测试: 功能测试是验证软件的各个功能是否按照需求规格说明书或者功能规格的要求正常工作的测试。功能测试通常通过模拟用户操作的方式来测试软件的功能,包括输入数据、操作界面、检查输出等。

集成测试: 集成测试是在单元测试之后,将多个单元组合在一起进行测试,验证它们的集成是否正常工作的测试。集成测试旨在发现不同单元之间的接口问题、模块之间的交互问题以及整个系统的集成问题。

压力测试: 压力测试是通过模拟用户大量并发访问、大数据量输入等方式来测试软件的性能和稳定性的测试。压力测试旨在找出系统的性能瓶颈、资源不足问题以及系统在负载条件下的表现。

回归测试: 回归测试是在软件发生变更后重新执行之前的测试用例,以确保软件的修改没有引入新的缺陷或者破坏已有的功能的测试。回归测试通常是自动化的,并且覆盖范围广泛,旨在确保软件的稳定性和可靠性。

3、数据构造策略

保证数据覆盖的全面性,对于个人、标签、表情等要考虑其属性的特殊性,特别是某属性为空时的检测。对于关系网,既要考虑完全图,也要考虑多个联通块的情况。对于增删改等操作更是要全面覆盖。

二、架构设计和图模型构建

该单元之有MyNetwork,Tag,Person,Message三个较为主要的类,后三者会形成一张图结构,Person之中可以包含Tag,Tag之中可以包含Person,Person和Message也类似,而Person与Person之间则又可以相互形成连接的关系。对于该图我采取了边构建边维护的方式,每次加入Person/Message/Tag则维护所有与其相关的值,如ValueSum等,避免在查询时进行计算,同时在所有的类之中都有一个Set/Map用于储存有关系的对象。

三、维护策略

  • 维护并查集来完成iscircle函数
  • 维护两个值作为triplesum和blocksum的返回值
  • 新建一个Manager类来保存所有tag维护tagvaluesum
  • 建立message到emoji的映射,删除emoji的时候把相关message删除

 四、性能问题及其修复情况

主要就是上面提到的维护内容,大部分都是n方或三次方复杂度,需要维护。

除此之外还有一些数据结构的改进,如Arraylist改为Hashmap,复杂度由On变成O1

五、规格与实现分离的理解

规格事实上侧重于使用标准化的语言去描述“用户的要求”,并不需要将JML视作“实现的指导”,

而实现事实上侧重于实现用户的需要,在满足用户需要的前提下提高效率

六、Junit测试方法

数据构造:主要包括随机生成、空、满三种状况

测试:对原数据深克隆,通过两种不同方法完成,最后比较

七、心得体会

JML写起来很麻烦,也看起来很麻烦。希望以后找工作的时候用得着,作为buaaer的核心竞争力。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值