301
社区成员
发帖
与我相关
我的任务
分享在本单元的作业中,我经历了很多次测试和调试过程,主要有几方面:
一个是单元测试:主要还是遵循课程组的建议,通过 JUnit 编写单元测试,确保每个方法在各种情况下都能正确执行。特别是对于 MyNetwork 类的方法,然后对于功能测试:通过一些复杂的社交网络操作,检查系统是否能正确添加、删除和修改用户及其关系。对于集成测试我是将所有模块组合在一起进行测试,以确保它们能在一起正确工作。通过调用官方包中的 Runner 类,我可以模拟整个系统的运行,进行全面测试。
对黑箱测试、白箱测试的理解
黑箱测试:我觉得黑箱测试大概就是只关注输入和输出,不考虑内部实现。我主要通过编写各种输入数据,验证程序是否能输出正确结果。这种方法对测试功能和用户需求比较有效。
白箱测试:对于白箱测试我的理解是关注代码的内部逻辑,确保每个分支和条件都被测试到。我在作业中是使用白箱测试来检查代码覆盖率,确保所有路径都被充分测试。
对单元测试、功能测试、集成测试的理解
单元测试:单元测试方面我就只是对于侦测单个模块或方法的正确性
功能测试:测试系统的整体功能,确保所有功能能按预期工作。
集成测试:测试多个模块之间的交互,确保它们能正确协同工作。
数据构造策略
在构造测试数据时,我采用了以下策略:
边界值分析:测试输入的边界值,确保系统能正确处理这些特殊情况。
等价类划分:将输入划分为不同的等价类,从每个类中选取代表性的测试数据,减少测试用例数量。
随机生成:对于压力测试,随机生成大量数据,模拟实际使用场景。
架构设计和图模型构建策略
在本单元的架构设计中,我主要采用了面向对象的设计方法,通过定义 MyPerson、MyNetwork 和 MyTag 类来表示社交网络中的基本元素。图模型的构建和维护策略包括:
使用邻接表存储关系:在 MyPerson 类中使用 HashMap 存储每个用户的关系,这样能快速查询和修改关系。
分离数据与逻辑:将数据存储和业务逻辑分离,数据通过 getter 和 setter 方法访问,逻辑通过单独的方法实现。
性能问题及修复情况
在开发过程中,我遇到了一些性能问题,例如查询关系时的速度较慢。通过优化数据结构和算法,如使用邻接表和深度优先搜索(DFS)优化查询性能,显著提升系统的效率。
通过将规格与实现分离,可以提高代码的灵活性和可维护性。规格定义了系统应该做什么,而实现则描述了如何去做。在本单元中,我按照规格定义编写代码,并通过单元测试确保实现符合规格。通过阅读和理解JML规格信息,我能更好地设计JUnit测试。例如,通过检查方法的前置条件(requires)和后置条件(ensures),我能更准确地编写测试用例,确保方法在各种情况下都能正确工作。
在本单元的学习过程中,我还是收获了很多东西的,以下是一些具体的体会和遇到的问题:
理解和实现规格:起初,我对JML规格的理解不够透彻,导致实现的功能不完全符合要求。在反复阅读和实践后,我逐渐掌握了如何将规格转化为具体实现。
测试的重要性:通过编写详细的单元测试,我能更早地发现和修复问题,提高了代码的质量和稳定性。
性能优化:在处理大规模数据时,我遇到了性能瓶颈。通过优化算法和数据结构,我提升了系统的性能,确保其在高负载下的稳定性。
总的来说,这次作业让我更深刻地理解了软件开发过程中的一些关键概念和方法,也提高了我的编码和调试能力。