301
社区成员
发帖
与我相关
我的任务
分享白箱测试:
是测试人员要了解程序结构和处理过程,按照程序内部逻辑测试程序,检查程序中的每条通路是否按照预定要求正确工作.它主要的针对被测程序的源代码,测试着可以完全不考虑程序的功能.
白箱测试流程:
源程序-->分析程序内部逻辑结构-->流程图-->制定测试用例-->被测程序-->执行路径-->覆盖情况分析
黑箱测试:
是根据功能需求来测试程序是否按照预期工作,是要从用户的角度分析.尽量发现代码所表现的外部行为的错误.黑盒测试应该是由测试团队来完成的.根据某个给定的输入,应该能够理解并详细说明程序的预期输出.
黑箱测试流程:
功能需求-->产生测试用例-->被测程序-->输出实际结果-->与预期结果比较-->分析功能是否实现.
本单元编写的JUnit测试主要为黑箱测试,只关心方法的输入状态与输出时的状态是否满足要求,不关心内部代码的执行。
在软件测试过程中,不同的测试方法用于检测软件在不同阶段和不同方面的质量和性能。
**单元测试 (Unit Testing)**:
**功能测试 (Functional Testing)**:
**集成测试 (Integration Testing)**:
**压力测试 (Stress Testing)**:
**回归测试 (Regression Testing)**:
每种测试方法都有其特定的目的和应用场景,常常在软件开发生命周期的不同阶段组合使用,以确保软件的质量和稳定性。
在软件测试过程中,数据构造策略是确保测试覆盖全面性和有效性的重要方面。不同的测试阶段和类型可能需要不同的数据构造策略。
**边界值分析 (Boundary Value Analysis)**:
**等价类划分 (Equivalence Partitioning)**:
**错误猜测 (Error Guessing)**:
**正交试验设计 (Orthogonal Array Testing)**:
**随机测试 (Random Testing)**:
**基于场景的测试 (Scenario-Based Testing)**:
**数据驱动测试 (Data-Driven Testing)**:
每种策略都有其独特的优点和适用场景,通常在实际测试过程中需要根据具体情况综合运用,以保证测试的全面性和有效性。
架构设计与JML一致。
用HashMap存储Person的id和对象,以及其他所有有Id的数据都可以使用HashMap进行存储。这样查询时的时间复杂度都为O(1)。
这单元的维护是这单元的重点,因为存在很多查询和计算的方法,很容易导致CTLE。因此需要对计算量大的方法和可能频繁访问的方法进行维护。
tripleSum和blockSum是重点维护的对象。而isCircle方法需要进行数据结构的优化。isCircle我使用了并查集的数据结构,所有在同一个关系网中的Person共有同一个祖先,当查询是否isCircle时,只需要判断祖先是否相同。tripleSum和blockSum当进行addPerson时,使blockSum加一。但执行addRelation时如果id1的祖先和id2的祖先不同,则令blockSum减一。然后遍历其他Persons如果有和id1、id2isLinked的Person则令tripleSum减一。进行modifyRelation时如果id1和id2的关系删除,则判断是否导致blockSum增加。tripleSum判断方法与addRelation相同。valueSum和bestIdvalueSum需要在Tag类中的addPerson和delPerson方法进行valueSum的维护,并在Network中的modify和add时进行维护判断。bestId,每个Person都增加一个bestId属性,只有当bestAcquaintance结果可能发生改变时,才更新bestId。性能问题主要为大量执行计算指令,产生CTLE,将需要计算的量进行动态维护即可,同上文虎策略。
JML中阐述的只是程序的功能,只有最简单的逻辑,而在进行实现是只要满足其要求的功能即可,实现方法可以自行决定。对方法进行数据结构和算法上的优化。
normal_behavior和exception_behavior。assignable的属性不能被修改。ensures保证返回结果的正确性。在这个单元的学习中,初步了解了JML的作用,学习了JML的基本语法。
体会到了测试在项目工程中的重要作用,以及规格统一的重要性。
对代码设计的提升也有一定的帮助。