还记得在第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. Nuke导出视频缺失 H.246格式 的解决办法

    同事在使用Nuke导出视频时报错,报错提示:缺失 H.246格式 后来经过我的研究发现,Quicktime Player 在标准安装时,默认不关联一些格式(具体是哪些格式不清楚) Quicktime ...

  2. 配置 ZRAM,实现 Linux 下的内存压缩,零成本低开销获得成倍内存扩增

    由于项目需求,笔者最近在一台 Linux 服务器上部署了 ElasticSearch 集群,却发现运行过程中经常出现查询速度突然降低的问题,登录服务器后发现是物理内存不足,导致机器频繁发生页面交换.由 ...

  3. linux 内核中READ_ONCE宏定义

    在Linux内核编程中,READ_ONCE 宏用于确保从内存中读取一个变量的值时,编译器不会对这个读取操作进行优化,从而保证了读取操作的原子性.这个宏通常在需要防止编译器优化.多线程或中断上下文中使用 ...

  4. eBPF 概述:第 4 部分:在嵌入式系统运行

    1. 前言 在本系列的第 1 部分和第 2 部分,我们介绍了 eBPF 虚拟机内部工作原理,在第 3 部分我们研究了基于底层虚拟机机制之上开发和使用 eBPF 程序的主流方式. 在这一部分中,我们将从 ...

  5. CF102411 ICPC 2019-2020 North-Western Russia Regional Contest题解

    A Accurate Movement 签到 M Managing Difficulties 签到 B Bad Treap 已知\(y=\sin(x)\),要求给出数组\(a[n]\),满足\(\fo ...

  6. 【信创问题】解决东方通(TongWeb)报错 java.lang.NoClassDefFoundError: javax/persistence/spi/PersistenceProvider

    写在前边 今天帮现场同事定位问题,情况是项目同事使用东方通(TongWeb7.0)部署公司项目时,出现以下报错导致服务启动失败. 简单排查了下发现:war包内WEB-INF/lib/javax.per ...

  7. KubeSphere 3.2.1 正式发布,多项功能优化来袭!

    KubeSphere 从诞生第一天起就 100% 开源,并以社区的方式成长,在各位社区小伙伴的共同努力下,KubeSphere 迅速走向全球,成为全世界最受欢迎的开源容器平台之一. 经过 3 年的发展 ...

  8. 云原生周刊:K8s 在 v1.27 中移除的特性和主要变更

    文章推荐 K8s 在 v1.27 中移除的特性和主要变更 随着 Kubernetes 发展和成熟,为了此项目的整体健康,某些特性可能会被弃用.移除或替换为优化过的特性.基于目前在 v1.27 发布流程 ...

  9. python实现基于RPC协议的接口自动化测试

    01什么是RPC RPC(Remote Procedure Call)远程过程调用协议是一个用于建立适当框架的协议.从本质上讲,它使一台机器上的程序能够调用另一台机器上的子程序,而不会意识到它是远程的 ...

  10. C# 单例模式的多种实现

    单例模式介绍 单例模式是一种创建型设计模式,它主要确保在一个类只有一个实例,并提供一个全局访问点来获取该实例.在C#中,有多种方式实现单例模式,每种方式都有其特定的使用场景和注意事项. 设计模式的作用 ...