关于测试和代码设计

来源:6-2 Quick Find

阿阳2017

2023-02-09

老师你好,我看到这节课关于并查集的封装和测试,总感觉非常的巧妙。
将UnionFind版本1的class放在一个namespace里面,并将测试的模块也用一个namespace封装,还单独写成一个测试函数。
加上之前在排序中写的各种测试程序,就是觉得自己为啥想不出这样的测试方式,在这方面有什么需要训练的吗?测试的基本思路大致是什么?

写回答

1回答

liuyubobobo

2023-02-15

这个问题系统没有提示我,今天我手动 check 问答区未回答的问题才看见,抱歉。


==========


写一个函数,测试一个函数,是非常“常规”的测试方式。实际上,由于我们这个课程不是专门的测试课程,所以其实在测试中有很多纰漏。(比如其实我们没有测试 merge 或者 partition;没有对所有的 sort 中是否可能修改了数组中的元素做测试;也没有测试很多边界情况,比如 sort 中传来的数组是 null 等等。)


如果对测试感兴趣,第一常规应该看的内容是和“单元测试”相关的概念。其实是非常简单的概念,但是现在已经有很多工具甚至是框架可以直接支撑单元测试,测试工程师甚至是开发工程师是需要学习这些工具的。

比如这篇文章描述了 CLion 内置的对 unit test 功能的支持:https://www.jetbrains.com/help/clion/unit-testing-tutorial.html#doctest-framework

测试框架比如 GoogleTest,感兴趣可以在网上搜索相关教程,等等:https://github.com/google/googletest


其次我推荐阅读和“测试驱动开发”(TDD)相关的内容或者书籍,很多企业内部的项目都是遵循这一开发模式的。


继续加油!:)

0
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程