对于测试人员来说,怎么写测试用例已是老生常谈的话题了。那么怎么才能写出更符合产品的测试用例,第一步我们需要对产品进行分析,了解产品所采用的技术及架构,第二步我们需要分析产品业务及用户需求,第三步列出测试点,最后才是编写测试用例。

什么样的用例才是好的用例?单个用例只要以最简单的语言讲清楚测什么、怎么测、预期和结果便是合格的用例,但是单个用例向来无法说好与坏,因为它所能展现的只是单个点,而好的用例是一套完善的用例,它可以覆盖尽可能多的等价类、边界值这些。

了解产品架构:

当测试人员想写一套好的测试用例,他就必须了解产品的架构设计,当产品采用不同的架构设计,会影响到内部逻辑,从而导致测试人员在设计测试用例时存在偏差。目前常见的有分层架构、事件驱动架构、微服务架构等,本文不做阐述。

需求分析

第二步便是根据产品文档做需求分析,需求分析通常分为业务需求、用户需求及功能模块,从不同的关注点出发,会使测试人员得到更全面的信息。首先,我们要先弄清楚需求范围,也就是根据拿到的需求文档去了解目前的产品完成了哪些功能模块

业务需求简单来讲就是这个产品是做什么用的,公司为什么要做这个产品,这个产品的目标用户是哪些,这个产品帮助用户解决了哪些问题。我们只有了解了这些,才能针对不同角色的用户去分析他们会用到的功能、他们关注的点。

用户需求首先要搞清楚产品的用户是谁,例如管理员用户、普通用户,同样一个产品,不同的用户角色功能和权限以及所关注的点都是不一样的。我们需要从不同角色用户的关注点出发,去分析他们各自关注的需求。

功能需求就是产品在此次版本实现了哪些功能,通常分为显性功能和隐性功能。显性功能一般在PRD和UI文档界面都能找到,是可以看见的功能;隐性功能就是文档中没有明确定义,但是需要测试人员纳入考虑范围的功能,例如性能、兼容性、安全等。

列测试点

做完产品的需求分析,通常测试人员就可以开始列测试点了。我总结了3个测试点的特征:

1、有层次:层次分明的测试点可以让人一眼就看到这个测试点的所属模块及功能,在编写测试用例及后期与其他同事协作时也会省去不少麻烦。以登录功能为例:

  • 登录功能模块——邮箱登录——邮箱登录功能是否可用
  • 登录功能模块——邮箱登录——验证码功能是否可用

2、点点之间相互独立:列测试点需要尽量避免点与点之间的交叉,使点之间相互独立。以登录功能为例:

  • 邮箱登录功能是否可用
  • 验证码功能是否可用

3、不同维度:列测试点尽量要从多角度去进行考虑,这会使得测试的覆盖率更广。以登录功能为例:

  • 登录功能是否可用
  • 日志记录是否正确
  • 错误码返回是否可读

我个人在列测试点的时候偏爱导图形式,因为那样可以让我更方便地去关注这三个点。并且比起表格,我认为导图更直观明了,最重要的是我可以发散性地去列测试点,有些或许是我平时完全想不到的。当然,当我发散性地列完后,我会将这些测试点根据模块层级进行分类,然后按照不同的模块功能,再去补充测试点。

测试用例设计方法

列完测试点后,测试人员就可以开始编写测试用例了。

本文写了三个常用的设计用例的方法:

1、等价类:什么是等价类?还是以登录模块举个例子。就说说密码吧,假设我们密码长度要求是6-12位数字,那么我们的测试用例就可以有:

  • 有效等价类:6-12位任意数字
  • 无效等价类:少于6位数字
  • 无效等价类:多于12位数字
  • 无效等价类:除数字外的任意其它字符

2、边界值:边界值其实可以理解为是等价类的补充。还是刚刚那个登录模块6-12位数字密码的例子,我们需要测试的边界值就是5、6、7、11、12、13位数字的密码

3、错误推测法:错误推测法是需要测试人员去推测产品可能存在的问题。还是刚刚那个登录模块6-12位数字密码的例子,那么我们的测试用例可能就会有:

  • 密码中存在英文是否登录失败
  • 密码中存在空格是否登录失败

不同角度:

除了设计用例的方法外,我们还要从不同角度来考虑用例的编写。通常会有功能、界面、性能、兼容性、安全等。

功能测试用例,通常就是验证功能的完善性。以登录模块为例:

  • 输入已注册的账号和正确的密码,登录成功
  • 输入已注册的账号和错误的密码,登录失败

界面测试,主要关注UI的美观性,与文档上的是否一致:

  • 正确/错误提示的文字是否正确
  • UI界面是否有错别字
  • 必填项标识是否正确

兼容性测试,主要关注产品是否适配不同设备,测试用例例如:

  • 不同浏览器交互及界面是否正常
  • 不同系统交互及界面是否正常
  • 不同分辨率的UI及交互是否正常

性能测试又分为基准测试、负载测试、压力测试、稳定性测试、并发测试等,性能测试就是测试人员需要用到一些工具来检测产品的性能指标是否达到了要求,还是登录模块举例:

  • 单用户登录的响应时间
  • 高并发场景下用户登录的响应时间

安全性测试,就是要去找找潜在漏洞,还是登录模块举例:

  • 密码后台存储是否加密
  • 用户名和密码的输入框中分别输入典型的“SQL注入攻击”字符串,验证系统的返回页面
  • 用户名和密码的输入框中分别输入典型的“XSS跨站脚本攻击”字符串,验证系统行为是否被篡改

关于怎么写测试用例,我要分享的主要就是以上这些。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐