4006-998-758
新闻动态

又一次被震惊:从生成和细化需求到应用各种方法设计测试用例

2023-03-28

以下文章来源于软件质量报道 ,作者GPT、Huan、Kerry

又一次被震惊:从生成和细化需求到应用各种方法设计测试用例(图1)软件质量报道.

本公众号致力于健康、安全、绿色的软件生态,分享软件质量管理、软件测试的思想、方法、技术与优秀实践,追踪软件质量领域的热点,及时报道软件质量管理的成功案例或质量事故,以及分享深度思考、有温度的技术文章等,努力成为您工作中的朋友。

图片
引言






今天,GPT-4这类模型对自然语言理解能力已经很强了、表达能力也很强,人机对话都能顺利进行下去,完全可以pass 图灵测试图灵测试,测的到底是什么?,而且这也解决了一个基本问题:让计算机能够理解我们人类的需求,而之前这一直是AI应用于软件工程的一大瓶颈。今天GPT-4突破了这个瓶颈,我们可以和计算机进行很好的交流,通过对话就能顺利完成一款游戏的开发,见昨天的文章编程实录:我只是提要求,ChatGPT写代码,这就完成了游戏开发)。

我们还可以进一步,让计算机帮我们定义需求,设计一个软件的具体功能,还可以不断细化需求,然后再基于细化的需求来设计测试用例(这里可以更好地开展ATDD——验收测试驱动开发),而且我们可以不断挑战它,让它补充测试用例,用不同的方法设计测试用例。即使它不会画图,也能应用因果图方法,太厉害了!

面就展示这样一个真实的过程,为了让大家阅读方便,没有用截图,而是用文字。








图片请帮我写一个文章分享网站的PRD

图片 

项目名称:文章分享社区产品需求文档(PRD) 版本:1.0 

日期: 2023-03-24 
编写人: [您的名字]

1. 产品简介

文章分享社区是一个在线平台,用户可以分享、发现和讨论各类文章。平台致力于提供高质量的文章,涵盖各个领域,包括科技、文化、艺术、教育等。用户可以轻松地提交、浏览和评论文章,同时与其他用户互动和交流心得。
2. 产品目标

  • 提供一个集中的平台供用户分享和发现高质量文章。

  • 建立一个活跃的社区,鼓励用户分享、讨论和互动。

  • 提供一个易于使用的界面,让用户可以轻松地提交、浏览和评论文章。

3. 用户群

  • 喜欢阅读的用户,希望发现高质量文章。

  • 希望分享自己的作品并获得反馈的作者。

  • 希望与其他用户讨论文章的用户。

4. 功能需求

4.1 用户注册与登录

  • 用户可以通过邮箱或社交媒体帐户注册。 

  • 用户可以设置用户名、头像和个人简介。 

  • 用户可以找回或重置密码。

4.2 文章提交与管理

  • 用户可以提交文章,包括标题、作者、摘要、正文和标签。
  • 用户可以选择文章的访问权限(公开或私有)。 
  • 用户可以编辑、删除或暂存自己的文章。
  • 用户可以查看文章的浏览量、评论数和点赞数。

4.3 文章浏览与搜索

  • 用户可以按照分类、标签或关键词筛选文章。 

  • 用户可以按照热度、最新或推荐排序文章。

  • 用户可以将喜欢的文章添加到收藏夹。

4.4 评论与互动

  • 用户可以对文章发表评论和回复。

  • 用户可以对文章和评论进行点赞或反对。 

  • 用户可以举报不当的文章和评论。

4.5 社区功能

  • 用户可以关注其他用户,查看关注用户的动态。 

  • 用户可以参与话题讨论,与其他用户互动。

  • 用户可以通过私信与其他用户交流。

5. 非功能性需求

5.1 响应时间

  • 页面加载时间应不超过3秒。

  • 用户提交数据的响应时间应不超过2秒。

5.2 数据安全与隐私

  • 用户数据应存储在安全的服务器上。 

  • 用户的隐私设置应得到充分尊重。

  • 遵守相关法规和政策,防止数据泄露。

6. 技术架构

  • 前端框架: React/Vue/Angular 

  • 后端







图片 能细化一下功能需求中的文章发布吗?包含哪些元素?

图片 
当然可以。在功能需求中,文章发布是一个重要的功能。在这个环节中,我们可以细化如下内容:
4.2.1 文章发布

  • 文章标题:用户需要输入一个具有吸引力且描述文章内容的标题。

  • 文章摘要:用户可以输入一个简短的摘要,概述文章的主要观点或内容,方便其他用户快速了解文章。

  • 文章正文:用户需要输入文章的主要内容,支持富文本编辑器,允许用户以不同格式、样式撰写文章。编辑器应支持以下功能:

  • 文字格式:加粗、斜体、下划线、删除线等。

  • 文字排版:段落、引用、标题、列表等。

  • 插入功能:图片、视频、链接、表格等。

  • 撤销与重做功能。

  • 文章标签:用户可以为文章添加标签,以便其他用户搜索。可以是预定义的标签,也可以支持用户自定义标签。

  • 文章分类:用户可以为文章选择一个或多个分类,例如科技、文化、艺术、教育等。这将有助于用户更好地发现

  • 相关内容。

  • 文章访问权限:用户可以设置文章的访问权限,包括公开、私有或仅对指定用户可见。

  • 文章封面图片:用户可以为文章添加一张封面图片,以增加文章的吸引力。

  • 在文章发布功能中,平台应提供实时预览功能,让用户在撰写过程中就能看到文章最终呈现的效果。此外,还应提供自动 保存功能,防止用户在编辑过程中因意外情况导致文章丢失。








图片 请帮我为文章发布功能编写测试用例

图片 

以下是针对文章发布功能的测试用例:

测试用例 1:标题输入

  • 输入一个有效的标题,例如:"AI技术的未来发展"

  • 输入一个过长的标题,例如:"AI技术的未来发展及其在各个行业的应用与前景分析报告"

  • 输入一个空标题,不填写任何内容

  • 输入特殊字符或表情符号作为标题,例如:"AI 技术的未来发展 "

测试用例 2:文章摘要输入

  • 输入一个有效的摘要,例如:"本文将探讨人工智能技术的未来发展趋势及其在各个行业的应用前景。"

  • 输入一个过长的摘要,超过规定字数限制

  • 不输入摘要,保持空白

  • 输入特殊字符或表情符号作为摘要,例如:"探讨 AI 技术的未来发展 "

测试用例 3:文章正文输入

  • 输入一个有效的正文,包括各种格式和排版,如加粗、斜体、引用、标题、列表等

  • 输入一个空正文,不填写任何内容

  • 输入超过规定字数限制的正文

  •  输入包含特殊字符或表情符号的正文,例如:"在过去的几年里,AI 技术取得了显著的进步。"

测试用例 4:文章标签输入

  • 为文章添加一个或多个预定义标签

  • 为文章添加一个或多个自定义标签

  • 不为文章添加任何标签

测试用例 5:文章分类选择

  • 为文章选择一个或多个分类

  • 不为文章选择任何分类 测试用例

6:文章访问权限设置

  • 设置文章为公开

  • 设置文章为私有

  • 设置文章仅对指定用户可见

测试用例 7:文章封面图片上传

  • 上传一个有效的图片格式(如 .jpg、.png)

  • 上传一个非图片格式的文件(如 .pdf、.doc)

  • 上传一个超过规定大小限制的图片

  • 不上传封面图片,保持默认封面

测试用例 8:实时预览功能

  • 验证实时预览功能能正确显示文章标题、摘要、正文、标签、分类和封面图片

测试用例 9:自动保存功能

  • 在编辑过程中,验证文章能够自动保存

  • 在意外关闭页面后,验证文章草稿是否被保存

  • 验证能够从草稿箱恢复已保存的文章草稿

测试用例 10:发布文章

  • 验证成功发布文章后,文章在平台上显示正确

  • 验证发布后的文章访问权限设置是否生效

  • 验证发布后的文章能被其他用户查看、评论和点赞(根据访问权限设置) 这些测试用例将有助于您全面地测试文章发布功能。如果您还有其他需求,请随时告诉我。








我们可以追问,GPT-4会说“对不起”,那么有礼貌,而且测试用例的序号是递的。

图片 测试用例不够充分

图片 

对不起,如果您觉得之前的测试用例不够充分,我可以为您提供更详尽的测试用例。以下是针对文章发布功能的补充测试用例:

测试用例 11:富文本编辑器功能

  • 验证粘贴功能:从其他文档或网页复制文本,粘贴到编辑器中,确保格式正确地呈现

  • 验证超链接功能:插入和编辑超链接,确保链接能正确打开目标页面

  • 验证图片上传功能:上传图片并测试对图片的缩放、对齐和替换功能

  • 验证表格功能:插入表格并测试对表格的增加/删除行列、合并/拆分单元格等功能

  • 验证撤销/重做功能:测试编辑器的撤销和重做功能是否正常运行

测试用例 12:文章发布过程中的错误提示

  • 验证输入无效数据时,系统是否给出相应的错误提示,例如:标题过长、摘要过长、正文超过字数限制等

  • 验证在未输入必填项时,是否提示用户补充完整,例如:标题、正文为空

测试用例 13:文章发布后的修改功能

  • 发布文章后,验证能够重新编辑文章标题、摘要、正文、标签、分类、访问权限和封面图片

  • 验证编辑后的文章能成功保存并在平台上更新

  • 验证编辑后的文章访问权限设置是否生效

测试用例 14:文章发布后的删除功能

  • 验证发布后的文章能够被删除

  • 验证删除后的文章不再出现在平台上

测试用例 15:多浏览器/设备兼容性测试

  • 验证文章发布功能在不同浏览器(如 Chrome、Firefox、Safari、Edge 等)上的兼容性

  • 验证文章发布功能在不同设备(如桌面、平板、手机等)上的兼容性

测试用例 16:网络异常处理

  • 在网络异常的情况下,尝试发布文章,验证系统是否给出相应的提示信息

  • 在网络恢复后,验证能否正常继续发布文章 


这些补充测试用例应该可以帮助您更全面地测试文章发布功能。如果您还有其他需求,请随时告诉我。







我们可以不断挑战它。“● ”都是系统加进去的,上面做了修改,这里就保持原貌,而且微信公众号编辑器比较差,不好用。

图片 请再次帮我为文章发布编写测试用例

图片 
当然可以,以下是针对文章发布功能的另一组测试用例:

测试用例 1:标题输入验证

  • 输入长度在规定范围内的标题

  • 输入长度超过规定范围的标题

  • 输入包含 HTML 标签的标题

  • 输入包含脚本代码的标题

测试用例 2:文章摘要输入验证

  • 输入长度在规定范围内的摘要

  • 输入长度超过规定范围的摘要

  • 输入包含 HTML 标签的摘要

  • 输入包含脚本代码的摘要

测试用例 3:文章正文输入验证

  • 输入长度在规定范围内的正文

  • 输入长度超过规定范围的正文

  • 输入包含 HTML 标签的正文

  • 输入包含脚本代码的正文

测试用例 4:文章标签输入验证

  • 输入长度在规定范围内的标签

  • 输入长度超过规定范围的标签

  • 输入包含 HTML 标签的标签

  • 输入包含脚本代码的标签

测试用例 5:文章封面图片验证

  • 上传有效的图片格式(如 .jpg、.png)

  • 上传非图片格式的文件(如 .pdf、.doc)

  • 上传超过规定大小限制的图片

测试用例 6:文章发布按钮状态验证

  • 当所有必填项(如标题、正文)都已填写时,验证发布按钮是否可点击

  • 当必填项未填写时,验证发布按钮是否禁用 测试用例 

7:文章发布成功提示验证

  • 成功发布文章后,验证是否显示成功提示信息

  • 发布文章后,验证是否跳转至文章详情页或其他相关页面

测试用例 8:文章发布限制验证

  • 测试同一用户在短时间内连续发布多篇文章时,平台是否有相应的发布限制

测试用例 9:发布文章时的输入过滤验证

  • 在标题、摘要、正文和标签中插入 HTML 标签和脚本代码,验证发布后的文章是否过滤掉这些内容

测试用例 10:文章保存为草稿功能验证

  • 在编辑过程中,验证文章是否能够保存为草稿

  • 在草稿箱中验证已保存的草稿是否存在

  • 验证能否从草稿箱恢复已保存的文章草稿并继续编辑

这些测试用例将有助于您全面地测试文章发布功能。如果您还有其他需求,请随时告诉我。








我们可以指定GPT-4应用具体的测试设计方法。

图片 请增加边界值分析

图片 
边界值分析是一种测试方法,主要针对输入数据的边界条件进行测试。在文章发布功能的测试中,我们可以关注以下几个方面的边界值:

测试用例 1:标题边界值分析

  • 输入最短有效长度的标题(例如:仅1个字符)

  • 输入最长有效长度的标题(例如:限制为100个字符)

  • 输入超过最长有效长度的标题(例如:101个字符)

测试用例 2:文章摘要边界值分析

  • 输入最短有效长度的摘要(例如:仅1个字符)

  • 输入最长有效长度的摘要(例如:限制为200个字符)

  • 输入超过最长有效长度的摘要(例如:201个字符)

测试用例 3:文章正文边界值分析

  • 输入最短有效长度的正文(例如:仅1个字符)

  • 输入最长有效长度的正文(例如:限制为10,000个字符)

  • 输入超过最长有效长度的正文(例如:10,001个字符)

测试用例 4:文章标签边界值分析

  • 输入最短有效长度的标签(例如:仅1个字符)

  • 输入最长有效长度的标签(例如:限制为20个字符)

  • 输入超过最长有效长度的标签(例如:21个字符)

测试用例 5:文章封面图片边界值分析

  • 上传尺寸刚好达到最大限制的图片(例如:限制为2MB)

  • 上传尺寸略大于最大限制的图片(例如:2.1MB) 

通过这些边界值分析的测试用例,我们可以更全面地测试文章发布功能的健壮性。如果您还有其他需求,请随时告诉我。








这里,GPT-4还能指出测试用例测试的目的“健壮性”。那我们让GPT-4换一种设计方法。

图片 请增加等价类划分

图片 
等价类划分是一种测试技术,它将输入数据分为相互独立的子集,使得在每个子集中的任何数据对系统产生的影响基本相同。以下是针对文章发布功能的等价类划分测试用例: 
测试用例 1:标题等价类划分

  • 有效等价类:输入长度在规定范围内的标题
  • 无效等价类:输入长度超过规定范围的标题

测试用例 2:文章摘要等价类划分

  • 有效等价类:输入长度在规定范围内的摘要
  • 无效等价类:输入长度超过规定范围的摘要

测试用例 3:文章正文等价类划分

  • 有效等价类:输入长度在规定范围内的正文
  • 无效等价类:输入长度超过规定范围的正文

测试用例 4:文章标签等价类划分

  • 有效等价类:输入长度在规定范围内的标签
  • 无效等价类:输入长度超过规定范围的标签

测试用例 5:文章封面图片等价类划分

  • 有效等价类:上传大小在规定范围内的图片(例如 .jpg、.png)
  • 无效等价类:上传非图片格式的文件(如 .pdf、.doc)、上传大小超过规定范围的图片

通过这些等价类划分的测试用例,我们可以确保文章发布功能在各种输入情况的稳定性和可靠性如果您还有其他需求,请随时告诉我。








虽然GPT-4不能画因果图,但还是能正确运用这种方法,最终生成测试用例。

图片 请增加因果图方法

图片 
因果图方法是一种测试设计技术,它通过分析输入条件和输出结果之间的因果关系来设计测试用例。以下是使用因果图方法为文章发布功能设计的测试用例:

1. 首先,确定输入条件(因子):

  • 标题:有效/无效(超过长度限制)

  • 摘要:有效/无效(超过长度限制)

  • 正文:有效/无效(超过长度限制)

  • 标签:有效/无效(超过长度限制)

  • 封面图片:有效/无效(非图片格式或超过大小限制) 

2. 然后,确定输出结果:

  • 发布成功提示信息

  • 发布失败提示信息

  • 生成的文章详情

3. 分析输入条件与输出结果之间的因果关系,并设计测试用例:

测试用例 1:正确的标题和正文

  • 输入:有效标题,有效正文

  • 输出:发布成功提示信息,生成的文章详情

测试用例 2:标题超过长度限制

  • 输入:无效标题(超过长度限制),有效正文

  • 输出:发布失败提示信息

测试用例 3:正文超过长度限制

  • 输入:有效标题,无效正文(超过长度限制)

  • 输出:发布失败提示信息

测试用例 4:有效摘要

  • 输入:有效标题,有效正文,有效摘要

  • 输出:发布成功提示信息,生成的文章详情包含摘要

测试用例 5:摘要超过长度限制

  • 输入:有效标题,有效正文,无效摘要(超过长度限制)

  • 输出:发布失败提示信息

测试用例 6:有效标签

  • 输入:有效标题,有效正文,有效标签

  • 输出:发布成功提示信息,生成的文章详情包含标签

测试用例 7:标签超过长度限制

  • 输入:有效标题,有效正文,无效标签(超过长度限制)

  • 输出:发布失败提示信息

测试用例 8:有效封面图片

  • 输入:有效标题,有效正文,有效封面图片

  • 输出:发布成功提示信息,生成的文章详情包含封面图片

测试用例 9:无效封面图片

  • 输入:有效标题,有效正文,无效封面图片(非图片格式或超过大小限制)

  • 输出:发布失败提示信息 通过这些基于因果图方法设计的测试用例,我们可以全面地测试文章发布功能。如果您还有其他需求,请随时告诉我。







GPT-4可以应用更难的方法:正交实验法

图片 请增加正交设计

图片 
正交设计是一种测试设计技术,通过构建正交表来减少测试用例的数量,同时保证各因素之间的组合都得到充分测试。
在文章发布功能的测试中,我们可以将以下因素纳入考虑:
1. 标题(T):有效(T1)、无效(T2,长度超过限制)
2. 摘要(A):有效(A1)、无效(A2,长度超过限制)
3. 正文(C):有效(C1)、无效(C2,长度超过限制)
4. 标签(L):有效(L1)、无效(L2,长度超过限制)
5. 封面图片(P):有效(P1)、无效(P2,非图片格式或超过大小限制)

假设我们选择一个 L9(3^2)正交表,可以构建以下正交设计测试用例:

图片
图片

通过这些正交设计测试用例,我们可以在较少的用例数量下覆盖各因素之间的组合,提高测试效率。如果您还有其他需求 ,请随时告诉我。








基于测试用例就可以生成自动化测试脚本,这可以参考 GPT-4 开启 “软件工程3.0” 全新时代 中提到的SauceLabs所做的实验。

作者:GPTHuan、Kerry

来源:软件质量报道

版权申明:版权归原创者所有

觉得文章不错,顺手点个”、“在看或转发给朋友们,欢迎您留言


//


未完待续

如果想进一步了解GPT/大模型对软件开发影响的、更深刻的见解,可以关注3月29日晚8点开播的K+Talk直播间,届时朱少民老师将与华为云智能化研发首席专家王千祥老师做客直播间,共同探讨《未来几年GPT/大模型如何影响软件研发?》的话题。

感兴趣的小伙伴,请扫码预约直播吧!
图片

点这里↓↓↓记得关注标星哦~



返回列表