还记得在第1章,我们利用ChatGPT生成的业务用例吗?这种业务用例生成方式其实和场景法用例设计十分相似,我们是不是也可以直接将业务用例输入ChatGPT,让它输出测试用例呢?笔者输入相关提示词让其补充以需求规格说明书中的业务用例为依据的测试用例,ChatGPT输出如图3-5所示。

图3-5  ChatGPT输出的部分基于需求规格说明书中的业务用例补充的测试用例

以下为ChatGPT输出的完整的基于需求规格说明书中的业务用例补充的测试用例。

ChatGPT输出的完整的基于需求规格说明书中的业务用例补充的测试用例

根据业务用例UC-01,以下是一些与该用例相关的测试用例,以确保百度关键字搜索功能的正确性和完整性:

测试编号

测试目标

前置条件

测试步骤

预期结果

TC019

基本关键字搜索 - 有效输入

用户已进入百度搜索页面

1. 在搜索框中输入一个有效关键字(例如:"测试")。<br> 2. 点击搜索按钮。

显示与关键字相关的搜索结果页面。

TC020

基本关键字搜索 - 多个有效输入

用户已进入百度搜索页面

1. 在搜索框中输入多个有效关键字(例如:"软件测试方法")。<br> 2. 点击搜索按钮。

显示与多个关键字相关的搜索结果页面。

TC021

基本关键字搜索 - 无相关结果

用户已进入百度搜索页面

1. 在搜索框中输入一个关键字,但系统无法找到相关结果(例如:"未知关键字")。<br> 2. 点击搜索按钮。

显示相应的通知给用户(例如:"未找到相关结果")。

TC022

基本关键字搜索 - 取消搜索

用户已进入百度搜索页面

1. 在搜索框中输入一个有效关键字(例如:"测试")。<br> 2. 在搜索操作执行前取消搜索操作。

搜索操作被取消,用例结束。

TC023

基本关键字搜索 - 多次搜索

用户已进入百度搜索页面

1. 在搜索框中输入一个有效关键字(例如:"测试")。<br> 2. 点击搜索按钮。<br> 3. 重复步骤1和2多次。

搜索结果正确显示,搜索历史被保留。

TC024

基本关键字搜索 - 边界值测试

用户已进入百度搜索页面

1. 在搜索框中输入一个极小的关键字(例如:"a")。<br> 2. 点击搜索按钮。

显示与关键字相关的搜索结果页面。

TC025

基本关键字搜索 - 边界值测试

用户已进入百度搜索页面

1. 在搜索框中输入一个极长的关键字(超出限制字符数,例如:"a" * 1000)。<br> 2. 点击搜索按钮。

显示错误消息提示。

这些测试用例覆盖了主要业务用例UC-01中的不同情况,包括有效输入、无相关结果、取消搜索操作、多次搜索以及边界值测试。它们有助于验证百度关键字搜索功能是否按照规格说明书的要求正常运行。

ChatGPT根据业务用例UC-01补充了测试用例,这使得测试用例在操作流程的使用场景方面覆盖得更加全面。

4)    用例评审和改进:对测试用例的评审和改进是确保软件质量的关键环节。结合前面ChatGPT生成的功能和安全测试用例,进行测试团队内部测试用例评审,在进行内部评审时,测试团队成员发现以下问题。

  • 有的测试用例的测试步骤中夹杂着<br>HTML标签。
  • 有的测试用例的测试步骤仅有1个步骤,却有序号。
  • 有的测试用例重复,如TC001(参见图3-3)和TC019测试用例就非常相似。
  • 有的测试用例不一定包含真实数据库表,如TC011 SQL注入攻击测试用例,可能就不存在users表等,需要和研发人员进一步确认是否存在该表。
  • 存在文本输入域需明确的情况,如关键字文本输入框中的最大输入字符数是1000个吗?是允许输入1000个英文字符,还是1000个中文或英文字符?这些需要和产品人员进一步明确。

限于篇幅,笔者只罗列几点内容,测试团队针对评审意见进行了相关测试用例的问题修正与疑问明确,经过测试用例去重以后,形成基于百度关键字搜索业务的功能和安全测试用例集,如表3-1所示。

3-1 基于百度关键字搜索业务的功能和安全测试用例集

测试编号

测试目标

前置条件

测试步骤

预期结果

TC001

搜索输入框合法关键字的测试

用户打开百度搜索页面

1. 在搜索输入框中输入一个有效关键字(例如:"测试")

2. 点击搜索按钮

显示搜索结果页面。

TC002

搜索输入框多个合法关键字的测试

用户打开百度搜索页面

1. 在搜索输入框中输入多个有效关键字(例如:"软件测试 方法")

2. 点击搜索按钮

显示搜索结果页面。

TC003

搜索输入框包含特殊字符的测试

用户打开百度搜索页面

1. 在搜索输入框中输入特殊字符(例如:"#$%^")

2. 点击搜索按钮

显示错误消息提示。

TC004

基本关键字搜索 - 无相关结果

用户已进入百度搜索页面

1. 在搜索框中输入一个关键字,但系统无法找到相关结果(例如:"未知关键字")。

2. 点击搜索按钮。

显示相应的通知给用户(例如:"未找到相关结果")。

TC005

基本关键字搜索 - 取消搜索

用户已进入百度搜索页面

1.在搜索框中输入一个有效关键字(例如:"测试")。

2. 在搜索操作执行前取消搜索操作。

搜索操作被取消,用例结束。

TC006

基本关键字搜索 - 多次搜索

用户已进入百度搜索页面

1.在搜索框中输入一个有效关键字(例如:"测试")。

2. 点击搜索按钮。

3. 重复步骤1和2多次。

搜索结果正确显示,搜索历史被保留。

TC007

基本关键字搜索 - 边界值测试

用户已进入百度搜索页面

1.在搜索框中输入一个极小的关键字(例如:"a")。

2. 点击搜索按钮。

显示与关键字相关的搜索结果页面。

TC008

基本关键字搜索 - 边界值测试

用户已进入百度搜索页面

1.在搜索框中输入一个极长的关键字(超出限制字符数,例如:"a" * 1000)。

2. 点击搜索按钮。

显示错误消息提示。

TC009

搜索建议显示测试

用户打开百度搜索页面

在搜索输入框中输入部分关键字(例如: "测")

显示搜索建议列表。

TC010

搜索建议多个部分关键字的测试

用户打开百度搜索页面

在搜索输入框中输入多个部分关键字(例如: "软件测")

显示搜索建议列表。

TC011

针对搜索结果的验证

用户输入合法关键字并点击搜索按钮

检查搜索结果页面

显示相关的搜索结果。

TC012

下一页按钮测试

用户输入合法关键字并点击搜索按钮

点击下一页按钮

显示下一页的搜索结果。

TC013

上一页按钮测试

用户输入合法关键字并点击搜索按钮

点击上一页按钮

显示上一页的搜索结果。

TC014

按相关性排序测试

用户输入合法关键字并点击搜索按钮

选择按相关性排序

结果按相关性排序。

TC015

按时间排序测试

用户输入合法关键字并点击搜索按钮

选择按时间排序

结果按时间排序。

TC016

SQL注入攻击测试

用户在搜索输入框中输入恶意SQL查询(例如: "'; DROP TABLE Users --")

检查搜索结果或页面行为

拒绝查询并显示错误消息。

TC017

XSS攻击测试

用户在搜索输入框中输入包含XSS脚本的关键字(例如: "<script>alert('XSS Attack')</script>")

检查搜索结果或页面行为

过滤并显示普通文本。

TC018

搜索输入框的最小边界值测试

用户打开百度搜索页面

在搜索输入框中输入一个空格

显示搜索建议或搜索历史。

TC019

搜索输入框的最大边界值测试

用户打开百度搜索页面

在搜索输入框中输入一个长字符串,超出限制字符数(例如:1000个字符,500个汉字)

显示错误消息提示。

TC020

搜索建议的最小边界值测试

用户打开百度搜索页面

在搜索输入框中输入一个字符(例如:"a")

显示搜索建议列表。

TC021

搜索建议的最大边界值测试

用户打开百度搜索页面

在搜索输入框中输入多个字符,但不足以显示搜索建议(例如:"abcde")

不显示搜索建议列表。

TC022

搜索结果的最小边界值测试

用户输入合法关键字并点击搜索按钮

检查搜索结果页面

显示相关的搜索结果。

TC023

搜索结果的最大边界值测试

用户输入合法关键字并点击搜索按钮

输入关键字,使得搜索结果数超过限制(例如:超过1000个结果)

显示错误消息提示。

通常情况下还应该进行测试用例外不评审。将已完成的基于百度关键字搜索业务的功能和安全测试用例集的存放位置告知项目团队成员,需要预留出一定的时间,便于项目组研发、产品人员阅读,以免在项目团队测试用例评审会议上占用过多时间熟悉相关测试用例内容。在项目团队测试用例评审会议上,相关人员积极进行测试用例评审,提出如下几点意见。

1)    针对测试用例TC008、TC019和TC023,产品人员对搜索输入框的字符进行了明确,即无论是中文字符还是英文字符,最大输入的字符数就是100个,无论是中文字符、英文字符或者中英文字符混合,都需要前后端做校验,若前端输入超过100个字符,则自动截取前100个字符。

2)    针对测试用例TC016,产品人员对需求进行了明确,即将SQL注入的语句进行过滤处理,将其作为普通文本处理,同时后端研发人员也明确users表存在。

3)    针对测试用例TC023,产品人员对需求进行了明确,即搜索结果数没有限制。

ChatGPT生成测试用例的最佳实践(三)的更多相关文章

  1. nodejs 实践:express 最佳实践(三) express 解析

    nodejs 实践:express 最佳实践(三) express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固, ...

  2. Xcode 自己主动生成版本技术最佳实践

    在 bloglovin ,我们使用自己主动生成版本来设置Xcode,使当前的版本为在Git活跃的分支上 的提交数. 它一直正常工作着.但我们的技术也不是一帆风顺的. 糟糕的老方法 我们使用的技术是来自 ...

  3. nodejs 实践:express 最佳实践系列

    nodejs 实践:express 最佳实践系列 nodejs 实践:express 最佳实践(一) 项目结构 nodejs 实践:express 最佳实践(二) 中间件 nodejs 实践:expr ...

  4. Mysql索引最佳实践笔记0524

    #mysql5.7 innodb默认存储引擎 一.关于索引二.最佳实践三.避坑实践 一.关于索引 1.索引的作用 -提高查询效率 -数据分组.排序 -避免回表查询 -优化聚集查询 -用于多表join关 ...

  5. Google Developing for Android 三 - Performance最佳实践

    Google Developing for Android 三 - Performance最佳实践 发表于 2015-06-07   |   分类于 Android最佳实践 原文 Developing ...

  6. 总结 React 组件的三种写法 及最佳实践 [涨经验]

    React 专注于 view 层,组件化则是 React 的基础,也是其核心理念之一,一个完整的应用将由一个个独立的组件拼装而成. 截至目前 React 已经更新到 v15.4.2,由于 ES6 的普 ...

  7. 面向对象【day08】:反射的最佳实践(三)

    本节内容 1.伪造web框架的路由系统 2.反射函数 3.扩展导入模块 4.企业最佳实践 一.伪造web框架的路由系统 commons.py #!/usr/bin/env python # -*- c ...

  8. 给HTML初学者的三十条最佳实践

    Nettuts +运营最困难的方面是为很多技能水平不同的用户提供服务.如果我们发布太多高级教程,我的新手用户将无法从中受益.相反也是如此.我们尽我们最大的努力,但如果你觉得你被忽略了请联系我们.这个网 ...

  9. 总结 React 组件的三种写法 及最佳实践

    React 专注于 view 层,组件化则是 React 的基础,也是其核心理念之一,一个完整的应用将由一个个独立的组件拼装而成. 截至目前 React 已经更新到 v15.4.2,由于 ES6 的普 ...

  10. DHCP最佳实践(三)

    这是Windows DHCP最佳实践和技巧的最终指南. 如果您有任何最佳做法或技巧,请在下面的评论中发布它们. 在本指南(三)中,我将分享以下DHCP最佳实践和技巧. 仅在需要时才使用IP冲突检测 运 ...

随机推荐

  1. ArgoWorkflow教程(五)---Workflow 的多种触发模式:手动、定时任务与事件触发

    上一篇我们分析了argo-workflow 中的 archive,包括 流水线GC.流水线归档.日志归档等功能.本篇主要分析 Workflow 中的几种触发方式,包括手动触发.定时触发.Event 事 ...

  2. MySQL配置缓存查询和维护

    配置文件设置缓存 query_cache_size = 20M #缓存大小 query_cache_type = ON #开启缓存 table_cache=256 #用于限制缓存表的最大数目,如果当前 ...

  3. foobar2000 v1.6.12 汉化版(更新于2022.10.16)

    foobar2000 v1.6.12 汉化版 -----------------------[软件截图]---------------------- -----------------------[软 ...

  4. Phpstorm 插件

    Symfony Plugin - 支持 Symfony 2,3,4 ...Laravel Plugin - 支持 Laravel.env files support - 支持.env 文件BashSu ...

  5. meminfo一些容易混淆的点

    MemTotal: 688576 kB 总内存 MemFree: 153736 kB 空闲内存 MemAvailable: 339884 kB 可用内存 Buffers: 16 kB 给文件的缓冲大小 ...

  6. Android Qcom USB Driver学习(九)

    本章主要是基于之前的学习,实现一个hidraw的驱动,发现有两种用于识别usb设备的方式,放别是usb_device_id和hid_device_id hid_probe (1)hid_device_ ...

  7. iOS堆和栈的使用小结

    堆和栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除.堆,队列优先,先进先出(FIFO-first in first out):栈,先进后出(FILO-Fir ...

  8. yarn 命令大全

    npm install yarn -g npm install --global yarnyarn 中文网:https://yarn.bootcss.com/docs/install/#windows ...

  9. vuex 基本代码规范 js 文件

    import Vue from "vue"; import Vuex from "vuex"; import { setItem, getItem } from ...

  10. 云原生周刊:ingress2gateway 发布 | 2023.10.30

    开源项目推荐 m9sweeper m9sweeper 是一个免费且简单的 Kubernetes 安全平台.它将行业标准的开源实用程序集成到一站式 Kubernetes 安全工具中,该工具可以帮助大多数 ...