码迷,mamicode.com
首页 > 其他好文 > 详细

OO第三单元总结博客

时间:2021-06-02 20:34:21      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:相信自己   内容   驱动   结构   时间   lis   ble   讲解   测试的   

又到了喜闻乐见的博客周,没有OO的周末仿佛拥有了所有时间。

(1)总结分析自己实现规格要求所采取的设计策略

提示:设计策略一般指整体性的设计思路分析
  • 可是,JML的最大优势,就是不用考虑整体性。
  • 事实上,本单元的设计是一种典型的trade-off。如果在查询上节省时间,就要在维护时多花费时间。
  • 比如,增加O(1)、查询O(n^2),在优化后变成增加O(n)、查询O(n),看起来只快不慢,但实际上也有隐患。据说互测时有人被5000条ap指令hack到……
  • 当然,上面的例子比较少见。多数情况下,在维护上多花一点时间可以让整体的运行速度更快。

(2)结合课程内容,整理基于JML规格来设计测试的方法和策略

白天吃白片,不瞌睡;晚上吃黑片,睡得香。

本单元主要用到两种测试方法:白盒测试黑盒测试。其中基于JML规格设计测试对应白盒测试。(本部分内容感谢第12周研讨课上赵悦鸣同学的讲解)

  • 白盒测试:又叫做逻辑驱动测试,即在了解程序的内部逻辑之后,对所有的逻辑路径进行测试,注重于验证程序的基本功能是否正确。对于本单元而言,对应的是Junit单元测试。
    • 由于JML已经从形式上定义了程序的规格,因此:
      整个程序的所有逻辑路径 -> 每个方法的所有逻辑路径
    • Junit单元测试目标
      1. 不同逻辑路径下,方法是否满足JML规格
      2. 在不同场景下,类的状态是否正确
    • Junit单元测试方法
      1. 根据JML的前置条件设置对象的状态
      2. 调用方法并检查后置条件是否满足
      3. 测试数据量较小的边界情况和所有逻辑分支
  • 黑盒测试:又叫做数据驱动测试,即不考虑程序的内部结构,从输入和输出的对应关系对接口进行测试,注重于测试程序的性能和鲁棒性。主要体现为对拍,对拍的关键在于数据的生成,此次不再展开。

(3)总结分析容器选择和使用的经验

  • 本单元作业中大量使用Hashmap作为容器。
  • 相比于较常用的ArraylistHashmap在执行查找任务时具有得天独厚的优势,可以将查找的时间复杂度从O(n)降到O(log2n)

(4)针对本单元容易出现的性能问题,总结分析原因

 提示:如果自己作业没有出现,分析自己的设计为何可以避免

很荣幸,我成功地在每一个坑里体验到了自由落体的美妙。

作业 第一次作业 第二次作业 第三次作业
潜在耗时指令 qbs qgvs sim
最直接思路 深度优先搜索(dfs) 现问现算 迪杰斯特拉(Dijkstra)算法
最直接思路的病根
优化方法 并查集 预存有关变量 暂时不会
优化方法的疗效 不用算,直接查 不用算,直接查 之后再补

总结经验:永远不要相信自己的第一判断,最先想到的思路直接OUT。

(5)梳理自己的作业架构设计,特别是图模型构建与维护策略

 提示:针对最终形成的架构进行分析,应和设计策略部分的相关阐述配合起来
  • 严格来说,因为确实没有做过架构设计,所以这一部分空着比较好,更符合实际情况。
  • 可惜空不得。。。
  • 不过话说回来:

    “黑格尔关于逻辑学说得很妙:这是一种“偏见”,似乎它是‘教人思维’的(犹如生理学是‘教人消化’的)。”——列宁

  • 所以,还是简单说说:
    第三次作业中,我用了邻接矩阵完成了Dijkstra算法,强测CTLE

OO第三单元总结博客

标签:相信自己   内容   驱动   结构   时间   lis   ble   讲解   测试的   

原文地址:https://www.cnblogs.com/Mayday777/p/14839059.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!