测试基础 针对 “测试用例最佳实践” 的说明

我的饭 · 2024年08月29日 · 最后由 咩咩羊丶 回复于 2024年09月06日 · 7258 次阅读

前面开了测试用例最佳实践这个话题,没想到反对声音很多。另外,所列部分条目,没有直观的例子,有些同僚不理解什么意思。决定再开个话题进行详细剖析说明。

关于 “最佳实践” 的说法

我的定义是能把工作做得更好的工作实践,同时也是一个目标。这些条目,我们可以根据实际情况做相应的取舍,没有强制必须全部做到。但是我们应当把它们作为一个目标,力求全部做到。

是束缚自己吗?

有些评论说这是吃力不讨好,我觉得恰恰相反。首先应该明确,这些不是规则,而是工作方法。采用这些方法,我们能把工作做得更好,直接来说就是更能保障质量,那么相应的,我们的绩效也会更好。反过来,如果不遵循这些实践,大概率我们也无法保证质量,也就没办法把本职工作做好,相应的绩效也会不好。

无论功能大小,必须写测试用例

关于这一条,大家反对最多。关于写不写,我只列出写测试用例的好处:

  • 理清思路,避免遗漏。这是最大的好处和目的,因为用例可以让我们减少漏测。
  • 跟踪测试进度。从用例的执行情况,可以大致估算测试进度。不然只能靠感觉评估。
  • 回归测试时很有用。
  • 问题定责。线上出现问题,从用例中可以判断是漏测还是用例没覆盖。
  • 好的用例设计可以避免冗余测试,节省时间,提升测试效率。当然设计起来也挺难。
  • 与同事协同的需要。如果有用例,那么与其他同事协同会更方便。
  • 文档传承。用例是测试人员很重要的文档沉淀,不仅能体现自己的工作成果和专业性,而且对新人通过用例熟悉业务也是很有帮助的。

有人说自己不写用例,直接写代码。这种情况本质上是写了用例的,代码就是你的用例。
有人说自己时间不够,只用思维导图做了测试分析,列测试点。这种情况其实也是写了测试用例的,只是用例的质量差。
有人是时间不够,没法写。有两个办法,第一是自己想办法缩短写用例的时间,比如测试用例最佳实践中提到的第 5、6、7 点就是针对缩短写用例的时间的,第二是跟团队争取时间,我相信只要有质量意识的团队,不至于不会给这个时间,再不济我们也可以通过宣讲的方式跟团队逐渐传播相关的质量意识,相信团队会慢慢理解的。

测试用例必须得到严格和完整的执行

写用例只是第一步,我们的目的终究是揭露问题,如果没有严格地执行,那写了也等于 0。

除了一次性项目,测试用例需要持续维护

部分团队特别是采用敏捷的团队,项目迭代很快,并行项目很多,很难有精力去维护用例,特别是用例很多的情况下。但是仔细想一想,用例需要维护的场景,一般是回归测试,或者功能改变,不管是哪一种情况,只要我们是对着用例测试的,那么自然而然就会需要对用例做修改的。如果时间实在不够,我建议是记录下改动点,项目紧张时刻过后再找时间修改用例,也是可以接受的。

可以使用版本控制软件对测试用例进行版本控制

我目前能想到的是三种情形:
1、如果团队使用项目管理软件维护用例,那么一些项目管理软件是自带版本控制功能的。如果用例有修改,可以直接在原来的基础上新建一个版本,比如 PingCode:

2、有些团队有专门的服务器用于沉淀文档,一般会有配套的 SVN 等版本控制软件,那么可以用此类软件来进行管理。
3、如果没有专门的软件进行管理,也应该在用例文档中记录下每次改动的内容。以 Excel 文档为例,可以有以下内容记录用例的每次修改:

使用模板,模板必须简洁,尽量提供预选项,并且提供必要的统计功能。

使用模板可以使得我们能更快捷地编写测试用例。
模板必须简洁是指根据团队需要,尽量只包含必要的字段。
提供预选项是指可以提供预选项的字段,尽量提供,这样我们在编写用例的时候,直接通过选择的方式即可填写对应字段。比如以下用例模板,用例级别字段提供了预选项:

提供必要的统计功能,避免二次的人工统计。比如统计各个实际结果值的用例数、已实现自动化的用例数等等。

应该尽量设计通用的测试用例,避免过于细致的描述。

举一个简单的例子说明。比如现在要测试销售订单列表的搜索功能。
其中的一条用例,操作步骤可以这样写:
点击销售订单图标,进入销售订单列表,点击搜索框,输入订单编号,回车,观察结果是否正确。

上面这种写法就是没有通用性、描述过于细致的写法。

如果采用通用的、避免描述过于细致的写法,可以这样写:
进入单据列表,点击搜索框,输入单据编号,回车,观察结果是否正确。

使用这种写法,屏蔽具体的单据类型,对执行用例并无影响,但是用例具有通用性。比如下次你要测试采购订单列表的搜索功能的时候,这条用例是可以直接复制、不做修改就可以直接使用的。

除了这种情形,还有其他情形。比如跨平台的用例,做到 Android 和 IOS 平台可以使用同一条用例。

可以抽象出公共用例,变成可复用的用例模块

比如我们可以抽象出打印功能、上传图片等公共用例,在测试具体的单据的相关功能的时候,可以直接引用用例即可,这样就节省了很多时间。

维护快速迭代 checklist,应对紧急发布

与其盲目的测试,还不如维护一份 checklist。刚开始可以很简单,只覆盖主流程功能。后面可以慢慢加上一些典型问题,每遇到一个典型问题就加进去。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 16 条回复 时间 点赞

给多少钱,做多少事

我也觉得你说的都对,但是做这些工作的前提是有足够的时间。
那篇帖子的评论区的大家更多的是吐槽自己工作中的实际情况,在交付时间不够的情况下,业内共识一定是先压缩测试的时间,测试人员光去验证那些频繁变动的需求功能都已经需要加班了,也没时间再去做这些锦上添花的事情。
还有就是在大多数行业,需求变动非常频繁,这也是导致这种现象的原因之一。

浓浓的推销的味道~~~

我也觉得你说的很对,很有理想和抱负,但是现实的确很难搞
就像这个世界只要没人加塞、冲红灯、没人酒驾、没人超速 基本不会有交通事故产生,但为什么还是出现了呢? 因为人性如此

星火 回复

我的经验之谈而已,推销对我没有任何好处。

不能因为别人违法,自己也违法呀。做好自己即可。

zaodaotian 回复

做这些事情,并没有超出测试工程师的岗位职责。

newman 回复

有些条目是锦上添花,有些是基本要求。不写用例能一直保证质量,我是不信的。测试前认真设计用例并评审>测试前认真设计用例但不评审>测试前设计用例但不严谨也不评审>边测边写>什么都不写。可以根据实际情况选择,但尽量不要选最差的。

我的饭 回复

我是以交警的角度来看,都设立规则/摄像头/罚款/警示语了,不也还是有人犯?

不用管别人守不守规则,我们自身要认识到守规则的好处以及不守规则的坏处,自己先守规则。交警的角度就是你不守规则,就有相应的惩罚。职场也一样,不守规则那就打 C,更进一步,换人。

楼主应该是一个 leader 的角色吧,关于测试用例写不写,怎么写,这个一直以来都在辩论,理论上讲当然用例写的好是最好,但是实践与实际也很重要,对于军工、重大民生、尖端医疗、芯片,我认为怎么重视用例都不过分,甚至测试用例和测试相关代码比功能代码还要多,但是对于一些商场、web 普通项目、企业间的数字化合作项目来说,高效实施和交付才是第一位,这类项目有着快、短、需求杂的特点、针对此类项目,测试点远比冗余的测试用例重要,其最重要的是对需求的理解,正确的做法应该是列测试点、需求会上测试对需求进行反讲,真正理解需求、从用户角度出发,利用好探索性测试才是正解

再说一嘴,任何不从实际,只看测试用例多少和 bug 产出定绩效的,不是懒就是坏,要么就是混子😃

我的饭 回复

理想主义、现实主义?一个强调理想的情况,一个指出现实的世界。谁对谁错?学校没教这个,我有点不会...

其实吧来了大厂之后我学到了一个道理,那就是只做有价值的事情, 那什么事情是有价值的,什么事情又是没价值的, 取决于领导的看法。 领导看中测试用例就在测试用例上下功夫, 领导觉得测试用例不是什么正经八本的产出,对你的绩效和晋升没有帮助, 那就简化一切流程。 正如我的顶头上司在开会的时候说的: 你们记住,领导永远都是正确的,不要试图跟领导解释你们的道理,要么选择接受,要么选择离开。

各自有各自的生存环境,有些时候无关乎是非对错, 因为本没有是非对错,是对是错只在于上头的一念之间。 以前我还会站起来反抗,后来看到了敢提出不同意见的人的下场后, 现在就是~~~~ 嗯,领导说的对。

所以楼主也好,各位也好, 只要看领导在乎还是不在乎测试用例就行了, 测试用例的建设算不算做绩效考核的目标就可以了。

估計該成,怎麽寫好測試用例,就不會其爭議了,願意討論的就討論,不願意的 就拉倒

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册