浅谈功能测试

1.功能测试流程

1.1 功能测试流程
# 功能测试大致按照以下流程进行: 
    (1).需求分析与评审
    (2).测试计划与测试方案
    (3).测试用例设计
    (4).测试用例评审
    (5).执行用例
    (6).缺陷跟踪及报告产出
1.2 功能测试流程详解

(1).需求分析与评审

功能测试应从需求出发, 功能测试就是尽量覆盖用户需求, 是软件能够最大程度满足用户的需求. 在开始功能测试之前, 技术人员应一起进行需求评审, 明确需求, 避免需求出现问题, 导致后面开发, 测试在错误的基础上进行.

测试人员在需求评审过程中要:

  - 确认自己对需求理解清晰, 不存在疑惑
  - 确认需求文档完整, 准确, 能够为后期测试工作所使用
  - 对需求中不合理的地方提出自己的修改建议

(2).测试计划与测试方案

测试计划是指描述要进行测试活动的范围, 方法, 资源和进度的文档. 测试计划侧重在“计划”二字. 其核心内容包含但不限于以下:

- 测试范围与目标
- 角色与职责
- 进度与资源
- 风险与应对
- 准入准出标准

测试计划一般由测试组长, 测试经理负责编写, 也有可能有测试工程师编写.

测试方案是从技术的角度去分析需求, 在方向上明确要怎么测, 分析结果侧重点在于测试策略与技术实现. 测试方案侧重在“方案”二字, 其核心内容包含到不限于以下:

  • 策略与方法

  • 环境

  • 工具的选择

(3).测试用例设计

测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包括:测试环境、操作步骤、测试数据、预期结果等要素。

其实, 测试用例就是一份编写了要测哪些内容的文档. 测试用例表达要清除, 无二义性; 用例可操作性强; 用例的输入与输出明确.

用例是测试人员根据需求进行设计的, 设计方法有: 等价类划分法, 边界值法, 判定表法, 正交法, 场景法, 错误推测法, 基于需求设计.

(4).测试用例评审

测试用例评审是指, 测试人员测试好测试用例后, 需要进行评审, 检查用例设计是否合格, 是否能够最大程度上覆盖用户需求.

(5).执行用例

测试用例评审通过, 测试人员就可以根据测试用例对开发提交的代码进行测试了. 并将测试结果与用例中的预期结果进行对比, 并详细记录.

(6).缺陷跟踪及报告产出

缺陷跟踪, 是指测试未通过提交的Bug, 开发需要修复Bug, 再次提测. 测试人员要继续测试, 如果不通过还要再次提Bug, 知道测试通过. 这个过程就是缺陷跟踪. 最后产出报告.

2.等价类划分法

2.1 等价类概念与分类
# 等价类
在所有测试数据中, 具有某种共同特征的数据子集即为等价类
​
# 等价类分类
  - 有效等价类
  - 无效等价类
2.2 等价类划分法解决的问题
# 解决的问题
划分等价类可以将测试集合科学的从无穷大减少到有限小, 让测试工作从穷举测试中解放出来, 大大减少测试用例数量, 提升测试效率.
2.3 等价类划分法设计测试用例步骤与应用场景
# 步骤:
    1.需求分析
    2.划分等价类
        (1).有效等价类
        (2).无效等价类
            - 规则(需求本身出发)
            - 长度需求
            - 类型规定
            - 是否为空(必填项检查)
            - 是否可重复输入
    3.设计用例
​
# 典型应用场景: 带有输入框的测试
2.4 案例实战 --- QQ号注册网站账号
# 根据以下需求, 利用等价类划分法基于测试用例模板设计测试用例
# 需求:
  使用QQ号注册网站账号, QQ号要求: 6-10位自然数, 同一QQ号不能重复注册
# 用例设计步骤
1.分析需求
2.等价类划分(见下表)
  - 有效等价类
    - 无效等价类
3.设计用例(见下图)
有效等价类有效数据无效等价类无效数据
6-10位自然数1234567小于6位自然数12345
大于10位自然数12345678912
6-10位字母abcdefg
6-10位汉字只因你太美了
6-10位符号!@#$%^&
不填写
重复输入1234567

2.5 案例实战 --- 新浪邮箱登录
# 根据以下需求, 利用等价类划分法基于测试用例模板设计测试用例
# 需求:
  新浪邮箱登录, 要求输入(邮箱名)@sina.cn和密码进行登录
    邮箱名要求:4-16位字符, 支持英文, 数字, 下划线(不能全是数字或者下划线)
    密码: 6-18位字符
# 等价类划分法设计测试用例步骤:
1.需求分析
2.等价类划分:(见下表)
    - 有效等价类
    - 无效等价类
有效等价类有效数据无效等价类无效数据
4-16位英文abcd小于4位英文abc
4-16位英文数字组合abc1大于16位英文AbcdefAbcdefAbcdefg
4-16位英文下划线组合abc_4-16位纯数字1234
4-16位数字下划线组合123_4-16位纯下划线
4-16位英文数字下划线组合ab1_4-16位汉字你好中国
4-16位符号!@#$
不输入邮箱
输入未注册正确邮箱abcd26652@sina.com
有效等价类有效数据无效等价类无效数据
6-18位字符abcdef小于6位字符abcde
大于18位字符Abcdefabcdefabcdefg
6-18位非字符_符号!@#$%&
6-18位非字符_汉字你好我的祖国
不输入密码

测试用例设计

# 测试用例设计:
由于存在两个输入框, 对两个输入框进行等价类划分, 每个输入框都有自己的有效等价类和无效等价类, 此时我们要考虑如何进行组合, 来设计测试用例
可能进行的组合如下:
    用户名        密码       预期结果
    有效          有效       登录成功
    有效          无效       登录失败
    无效          有效       登录失败
    无效          无效       登录失败
但基于测试的原则, 我们想确定登录失败时, 是由于用户名和密码之间谁的非等价类导致的登录失败, 所有最后一种组合(用户名无效,密码无效)不需要进行测试, 即使结果为登录失败, 也无法确定是谁导致的登录失败. 所以采用以上三种进行测试用例设计.

3.边界值法

3.1边界值法概念及存在的意义
# 1.边界值法概念
边界值法设计测试用例, 是对输入或输出的边界值(有效等价类和无效等价类的界限)进行测试的一种黑盒测试方法.
# 2.边界值法存在的意义:
测试经验表明错误往往会发生在输入或输出范围的边界上, 所以边界值法是对这些边界进行测试, 是对划分等价类法的一种补充.
​
# 3.边界值的概念(如下图:)
  - 上点: 边界上的点(符合条件的边界点)
    - 内点: 边界内的点
    - 离点: 离边界最近的左右两点

3.2两位数加法计算器案例
# 需求:
一个可以计算两位数内的加法计算器
​
# 确定边界值(如下图):
两位数取值范围数学区间表示上点内点离点
x >= -99, y <= 99[-99, 99]-99, 9920-100,-98, 98, 100
x > -99, y <= 99(-99, 99] [-98,99]-98, 9910-99, -97, 98, 100
x >= -99, y < 99[-99, 99) [-99,98]-99, 980-100, -98, 97, 99
x > -99, y < 99(-99, 99) [-98,98]-98, 985-99, -97, 97, 99
3.3 设计测试用例的步骤与边界值法应用场景
# 设计测试用例的步骤
  1.需求分析
    2.划分等价类
    3.确定边界
      - 上点
        - 内点
        - 离点
    4.设计测试用例
    
# 边界值法应用场景:
  - 在等价类的基础上针对有边界范围的测试数据输入的地方
  - 确定测试条件时, 明显存在(>, <, >=, <=)等的分析中.
    - 典型代表: 有边界范围的输入框类测试
3.4 QQ号注册网站案例补充
# 需求
使用6-10位的QQ号注册网站, QQ号要求6-8位自然数
​
# 边界分析(边界分析如图所示)
上点:6, 10
内点:8
离点:5,7, 9, 11
# 通过边界分析法补充的用例:
  - 输入6位自然数, QQ号正确  
  - 输入10位自然数, QQ号正确
  - 输入8位自然数, QQ号正确
  - 输入5位自然数, QQ号错误
  - 输入7位自然数, QQ号正确
  - 输入9位自然数, QQ号正确
  - 输入11位自然数, QQ号错误
    
# 重复用例消除:
  - 输入6位自然数, QQ号正确(重复)  
  - 输入10位自然数, QQ号正确(✅)  
  - 输入8位自然数, QQ号正确(✅)
  - 输入5位自然数, QQ号错误(重复)  
  - 输入7位自然数, QQ号正确(✅) 
  - 输入9位自然数, QQ号正确(✅) 
  - 输入11位自然数, QQ号错误(重复)
    
# 补充测试用例文档:(如下图所示)
3.5 边界值分析法拓展
# 边界值优化(7变5)
从上面分析的边界值[5, 6, 7, 8, 9, 10, 11]来看:
    1.值5是一个无效点是左侧最小的点, 6和7均是有效点, 所以测一个6就可以了, 7可以去掉.
    2.值9, 10, 11中, 11是右侧最大的无效点, 需要保留, 而9, 10都是有效点, 9可以去掉.
    3.内点8凭借经验, 需要保留
# 结论(重点):
上点: 必选(不考虑区间开闭)
内点: 必选(建议选择中间范围)
离点: 开内闭外(考虑开闭区间, 开区间选择内部离点, 闭区间选择外部离点)

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值