BUAA OO Unit-3个人总结 22230612-杭洋

杭洋-22230612 学生 2024-05-16 15:04:00

1.本单元的测试过程

1.1对黑箱测试、白箱测试的理解

  • 黑盒测试:黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检验每个功能都是否能够正常使用。
  • 白盒测试:白盒测试也称结构测试或逻辑驱动测试,是一种测试用例设计方法,它从程序的控制结构导出测试用例。(测试用例由测试输入数据以及与之对应的输出结果组成)允许测试人员对程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑路径进行测试。基于一个应用代码的内部逻辑知识,测试是基于覆盖全部代码、分支、路径、条件。

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

  • 单元测试是针对软件的最小功能模块进行测试的方法。在这种测试中,开发人员会编写针对每个函数或方法的测试用例,以验证其在各种输入条件下的正确性。单元测试的目的是尽早发现和解决代码中的错误和缺陷,以确保软件的各个功能模块能够独立地正常工作。
  • 功能测试是对整个软件系统的功能进行测试的方法。在功能测试中,测试人员会根据需求规格说明书编写测试用例,并通过输入不同的数据或操作软件的不同功能来验证软件是否满足设计要求。功能测试的目的是确保软件能够按照用户需求的要求正常运行,并能够正确地处理各种情况。
  • 集成测试是在单元测试之后,将各个功能模块组装在一起进行测试的方法。在集成测试中,测试人员会验证各个模块之间的接口和交互是否正常,并且整个系统能够正常协作。集成测试的目的是确保各个模块之间的集成能够正常工作,不会产生冲突和错误。
  • 压力测试是对软件系统在高负载和大并发情况下进行测试的方法。在压力测试中,测试人员会模拟大量用户同时访问系统,并且增加系统负载,以评估系统的性能和稳定性。压力测试的目的是找出系统的瓶颈和性能问题,并且确定系统在高负载情况下的性能指标。
  • 回归测试是在软件系统进行修改或升级后,重新运行之前的测试用例以验证修改是否引入新的错误或导致原有功能出现问题的方法。回归测试的目的是确保在对软件进行修改或升级后,原有的功能和性能没有受到影响。回归测试一般会在每次修改或升级后进行,以确保软件的稳定性和质量。

2.梳理本单元的架构设计,分析自己的图模型构建和维护策略

2.1本单元架构设计

img

2.2图模型构建

利用Person-Acquaintance构成图邻接表

2.3维护策略

对于可能多次进行的询问,能够在图改变的过程当中就进行维护的量就尽量在图改变过程当中维护。同时适当翻译并简化JML的内容,尝试使用更优秀复杂度的方法实现。

3.分析作业中出现的性能问题及其修复情况,谈谈自己对规格与实现分离的理解

规格只是对方法运行前后返回值和修改内容进行了精准的数学描述,并非代表着实现。从数学描述到代码实现,中间是程序员自己设计的数据结构+算法。

4.利用规格信息设计实现Junit测试

规格测试当中有很多的ensure,这些ensure作为规格是需要被测试函数需要保证的内容。因此通过设计针对ensure的测试可以达到要求。

同时,pure、assignable等关键字规定了那些部分需要改变,同时需要对这些部分做出改变。

5.本单元学习体会

JML是一个不错的工具,规定了每个函数所必须要做的内容,以及严格规定了对于各种数据的改变的范围。它确实切开了设计和实现这两个部分,使得两个部分各司其职,确实达到了降低耦合、提高开发效率的效果。

但是有一点令我疑惑:编写JML本身应当在软件开发当中由谁来实现?JML本身就已经类似编程了,而且具有比java复杂得多的庞杂语法,软件开发当中如何来保证JML内容本身的正确性呢?如果面对不断改变的需求,JML发挥作用的范围在哪里,是严格规定较为底层的不会改变的实现,还是说在不断改变需求的更上层也能够灵活应对?JML本身的庞杂语法,让我怀疑从不断改变的外部需求到JML,是比从JML到java更难反应的问题。

但是JML至少提供了一个严格的数学描述,这至少给了某些从数学语言到代码的自动化过程提供了可能。

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

301

社区成员

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

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