阶段课程目标

具备软件系统做功能测试能力

Day01课堂笔记

写在课前

  • 上课要求
    • 时间:
      • 参见课表(每50分钟一节课,课间休息10分钟)
    • 问题解决
      • 每个知识点视频结束后有问题可以提问
      • 回答问题站起来大声回答(别担心答错,不耻下问)
  • 任务要求
    • 每日完成老师安排的每日任务和tlias的每日反馈
    • 晚自习21:00左右可以互相交流问答每日重点难点问题

一.认识软件测试

  • 软件测试: 通过技术手段运行软件是否满足需求过程
  • 目的: 减少软件缺陷(bug),保障软件质量!

二.软件测试技能

  • 功能测试: 功能测试主要验证程序的功能是否满足需求

  • 自动化测试: 使用代码工具代替人工验证项目功能

  • 接口测试 : 针对模块与模块或系统与系统之间数据交互的测试

  • 性能测试 : 模拟多人使用软件,查找服务器缺陷

三.软件测试分类

应用场景 : 面试中被面试官问到或者提到

3.1按照阶段划分

  • 单元测试 : 对于开发的源代码进行测试 [一般由开发做]–UT(unit test)
  • 集成测试 : 也叫接口测试,测试系统和系统,模块和模块之间数据交互(能否正常使用) [一般由测试人员做]
  • 系统测试 : 也叫功能测试.测试整个软件产品的功能能否满足需求(包含兼容,文档等测试) [一般由测试人员做]
  • 验收测试 : 模拟用户验证是否满足用户的需求(分为内测和公测) [一般由用户/用户代表做]
    • 内测:alpha测试 --> α
    • 公测:beta测试 --> β
    • 候选版:gamma测试 --> γ

3.2 按照代码可见度

  • 黑盒测试 : 看不到源代码,进行功能级别的测试
  • 灰盒测试 : 部分代码可见,相当于做接口测试
  • 白盒测试 : 代码完全可见,UI不可见(单元测试)

3 .3其他划分

  • 冒烟测试:对核心功能的验证,拿到提测,先做这个再做全面测试
  • 回归测试:对已修复的bug\更新后的bug再次验证,增添新功能后,也要测试旧的功能有没有被影响

四.模型

4.1质量模型

作用: 给测试设计人员提供一个思考的方向【被测软件产品质量的思考方向】

思考 : 给你一部电梯 ,请问会考虑哪些方面的测试?

  • 衡量一个软件质量的框架

  • 作用:确定测试覆盖的范围和重点。

4.2 考虑的范围:—xmind电梯测试实例
  • 功能性:能不能完成核心功能。
  • 性能:时间效率(同时在线人数多的响应处理时间)和空间效率(内存cpu磁盘网络资源消耗)
  • 兼容性:不同系统配置的平台上能否正常工作,会不会和其他软硬件冲突。浏览器、操作系统、网络、分辨率、其他软件、品牌…
  • 易用性:用户黏性–流畅、美观、简洁(主观感觉、调查问卷)
  • 安全性:访问权限匹配、防止恶意攻击、数据泄露。
  • 可靠性:持续运作、无异常、恢复快(服务器)
  • 可移植性:迁移方便
  • 可维护性:bug已修复

五、等价类划分

5.1、适用场景–表单类页面元素测试

用部分数据测试全量测试场景。

输入框(典型)

下拉列表

单选复选框…

测试点:验证当前数据对应的功能点

已注册正确数据、未注册账号、长度不匹配…

在这里插入图片描述

在这里插入图片描述

5.2、等价类划分法

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5.3登录功能验证练习

在这里插入图片描述

在这里插入图片描述

建议将密码和邮箱分开写,因为要分开测试,防止遗漏

在这里插入图片描述

五.AI应用

使用步骤

  • 选择工具

  • 编写提示词

  • 优化结果

  • AI提示词模版

    指令典型格式

    l角色(身份):你是谁?比如:【你是测试工程师】

    l指示(任务):要干啥?比如:【分析登录功能需求】

    l输入(要求):啥要求?比如:【要求:账号:必填,已注册的合法手机号,密码:必填,和注册密码一致】

    l背景(当前状况,可选):比如:【当前用户对软件测试不熟悉】

    l输出(结果):想要啥?比如:【将补充完善后的需求以md形式输出】

    l参考(示例,可选):模仿示例?【按照你提供的示例输出更贴近自己要求】

在这里插入图片描述

  • 案例–让我们使用ai来完成上面的测试QQ登录功能(demo模版如下)

    你以软件测试工程师身份,使用xxx法帮我完成xxx功能的测试点设计
    要求覆盖如下需求:
    xxx
    输出md格式输出
    请按照如下示例格式输出:
    登录成功(账号+密码都有效)
    登录失败(账号小于6位)
    登录失败(账号大于10位)

    你以软件测试工程师身份,使用等价类划分法帮我完成QQ登录功能的测试点设计
    要求覆盖如下需求:
    账号:6~10位自然数且已注册(非空)
    密码:正确/错误/空
    输出md格式输出
    请按照如下示例格式输出:
    登录成功(账号+密码都有效)
    登录失败(账号小于6位)
    登录失败(账号大于10位)
    ......
    

六、练习

6.1微信手机号注册-手工测试版

在这里插入图片描述

1、手机号:合法(11位自然数)且未注册,不能为空
2、密码:8-16位英文字母、数字、特殊符号组合,不能是纯数字
3、协议:注册时必须勾选
4、暂不考虑昵称和头像

有效次数的判定:保证每一个有效都被覆盖一次
  1. 寻找需求点中有效条件最多的。

  2. 如果其余需求点中有效条件只有一个,那么最终测试点中成功的数量----------需求点中有效条件最多的

  3. 如果其余需求点有效条件有多个,最终测试点成功的数量需要把其余每个需求点的有效条件都至少覆盖一次

(有效–6种)

思考:假如说手机号有效是两种,那么成功测试点还是6种,因为仅需密码有效的其中两条与手机号有效的两条搭配即可全覆盖,剩下的密码有效条件随意与手机号有效的其中一种组合即可。

(无效:直接将每个功能无效加起来–8种)

在这里插入图片描述
在这里插入图片描述

6.2 deepseek测试版本

使用deepseek对话,并培养其正确的偏好(比如将密码、账号分类做测试点成功或失败情况。以及需求中没有命令禁止的都算做有效),使其最终效果和我们手工测试的几乎一样。

我与deepseek之间的对话过程

在这里插入图片描述

七、边界值分析法

7.1使用场景–有边界范围的测试输入场景

主要针对有边界范围的测试输入场景(想想在开发做判断的时候确实也是边界值最容易出问题,容易出现考虑不周的情况)
在这里插入图片描述

需求:数字~数字之间

在这里插入图片描述

7.2使用步骤

在这里插入图片描述

7.3案例1

在这里插入图片描述

在我们刚刚写过的等价类划分法里面,添加上边界值分析的数据:

QQ登录账号区间:6-10位

上点:6、10

离点:5、7、9、11

内点:8

在这里插入图片描述

更改功能分析和测试点
  • 判断上点属于有效,添加

  • 离点5,11属于无效,与无效场景合并。7,9属于有效,添加

  • 内点属于有效

在这里插入图片描述

7.4 案例2

在这里插入图片描述

边界值:取值更精准了

密码:

上点:8、16

离点:7、9、15、17

内点:12

在这里插入图片描述

7.5边界值优化

回顾QQ这个案例:

QQ登录账号区间:6-10位

上点:6、10

离点:5、7、9、11

内点:8

有的点既是内点,又是离点,那么我们遵循开内闭外的原则,去除离点中的冗余测试点

  • 开内闭外:区间是开区间,保留在范围内的离点。区间是闭区间保留范围外的离点。

由此可见可以将7和9去除,xmind变成这样

在这里插入图片描述

再看看deepseek给的测试点:会发现它正好给了6、10、8三个边界值,ai还是考虑的很全面的。

在这里插入图片描述

八、两种方法自我总结步骤

在这里插入图片描述

在这里插入图片描述

今日作业

提醒:作业详解在下一篇笔记,小伙伴们可以自行联系

  1. 测试设计方法(要求以xmind形式输出测试点)

    在这里插入图片描述

  2. 某理财系统注册功能测试用例设计(要求以xmind形式输出测试点)

    原始链接:http://121.43.169.97:8081/common/member/reg

    需求:

    • 账号:11位自然数手机号
    • 密码提示:6~16位字母、数字组合,也支持特殊符号
    • 图片验证码:正确未过期
    • 短信验证码:正确未过期,例如:666666
    • 邀请人:非必填,已注册的手机号
    • 协议:同意勾选

    在这里插入图片描述

  3. 某电商后台会员添加功能测试设计

    原始链接:https://hmshop-test.itheima.net/admin 进入会员管理

    管理员账号:admin

    管理员密码:HM_2023_test

    在这里插入图片描述

  4. 【选做】某电商后台营销添加抢购活动功能测试设计

    原始链接:https://hmshop-test.itheima.net/admin 进入营销-营销菜单-抢购/秒杀-添加抢购活动

    在这里插入图片描述

  5. 预习后面测试设计方法(参考讲义)

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐