接上文 AIGC(生成式AI)试用 30 -- AI做软件程序测试 1
- 整合测试项
- 提问并输出测试用例
- 思考并调整提问方式,为完整的输年程序测试提问准备
- 再次对需求提问 --> 实际是之前的提问记录找不到了,不过有新发现;不妨后续再对需求提问
> 需求:读入txt文件,过滤文件有关年记录 0)读入txt文件 1)以“。”,中文句号,为界区分一句,最小统计单位 2)年格式:YYYY,4位 3)输出:YYYY:所在句子内容 4)说明 - 一句中包含多个年的,以“,”,中文逗号连接 - 剔除句中的非文字内容:换行符,非正常的标号等 - 按行输出过滤到的有关年记录 > AI提问:需求测试: 根据上述需求 1)使用列表形式对软件需求进行分解、陈述 2)指出需求定义中描述不清晰之处 3)补充未明确定义的隐式需求 | 个人理解: 1) 输出格式更美观,使得输也逻辑更清晰 2) 新增需求质疑 - 连续年份及年份可扩展性 - 大文件及性能 - 去重排序 - 强化了特殊字符和异常处理 新增内容,见如下加粗、下划线、斜线标记 AI 也在学习吗?下次提问会更完整、更条理? |
文心一言 | DeepSeek |
1)需求分解列表 # | 需求描述 | 输入/输出 |
---|
0 | 读取指定路径的txt文件内容 | 输入:文件路径;输出:字符串形式的文件内容 | 1 | 按中文句号"。"分割文本为句子列表 | 输入:原始文本;输出:句子列表(需处理连续句号/无内容句子) | 2 | 识别句子中的4位年份(YYYY格式) | 输入:单个句子;输出:年份列表(需验证4位数字且符合年份逻辑范围) | 3 | 清洗句子中的非文字内容(换行符、异常标号等) | 输入:含杂质句子;输出:仅保留中文/标点/数字的纯净句子 | 4 | 按格式输出"YYYY:句子内容",多年份用中文逗号连接 | 输入:年份列表+清洗后句子;输出:格式化字符串(需处理无年份句子的过滤) | 5 | 按行输出所有含年份的记录 | 输入:所有处理后的记录;输出:逐行打印的文本 | 2) 需求描述不清晰之处 - "非正常的标号"定义模糊 > 未明确"非正常标号"的具体范围(如是否包含数学符号、特殊符号、非标准标点等) > 需确认是否保留中文标点(如逗号、顿号)或仅保留基础标点 - 年份逻辑范围缺失 > 未说明是否需要验证年份合理性(如1900-2100范围),可能误判"0000"等非实际年份 - 句子分割边界条件 > 未定义连续句号(如"。。")或句号后紧跟其他符号(如"。,")的处理方式 > 未说明空句子(分割后产生)是否过滤 - 输出格式细节 > 未明确年份在句中的位置是否影响输出(如是否保留年份在句中的原始位置) > 未说明多个年份在句中的出现顺序是否需与输出顺序一致 3) 隐式需求补充 - 文件编码处理 需自动检测文件编码(如UTF-8/GBK),避免因编码错误导致乱码 - 性能优化 对大文件需支持流式读取,避免一次性加载全部内容导致内存溢出 - 年份去重 > 同一句子中重复出现的相同年份需去重(如"2020年2020年"应合并为单个"2020") - 上下文保留 > 输出句子需保留原始标点和格式(除明确需清洗的杂质外),避免破坏语义 - 错误处理 > 文件不存在时需给出明确错误提示 > 非文本文件需进行类型校验 - 扩展性设计 > 可配置是否启用年份范围过滤(如仅提取1900-当前年份) > 支持自定义分割符(如同时支持"。"和"!"作为句子结束符) | ### **1. 软件需求分解与陈述** 以下需求以功能模块和规则形式分解: | **需求编号** | **需求描述** | |--------------|-----------------------------------------------------------------------------| | **F0** | **文件读取**:读取用户指定的`.txt`文件,确保编码兼容性(如UTF-8)。 | | **F1** | **分句规则**:以中文句号“。”为分隔符,将文本拆分为独立句子。 | | **F2** | **年份匹配**:识别句子中的4位数字年份(YYYY格式,如`1998`或`2023`),排除非4位数字(如`99年`)。 | | **F3** | **内容清洗**:剔除句子中的换行符、非文字符号(如乱码、特殊标点`#&*`)。 | | **F4** | **输出格式**:按行输出`YYYY: [句子内容]`,一句含多个年份时,年份以中文逗号“,”连接(如`1998,2023: ...`)。 | --- ### **2. 需求描述不清晰之处** #### **需明确的问题**: 1. **年份格式边界**: - 是否包含带“年”字的表述(如`2023年`)?需求中仅提及“YYYY”可能需补充正则表达式规则。 - 是否排除非公元年份(如`3000`这类未来不合理值)? 2. **分句规则细节**: - 是否处理嵌套句号(如`“这是一个测试。”他说。`)?需定义是否拆分此类情况。 - 是否忽略非句号结尾的段落(如以感叹号结尾但包含年份)? 3. **非文字内容范围**: - “非正常标号”的具体定义(如是否保留常见标点`!?、`)?需明确允许保留的符号列表。 4. **多年份连接逻辑**: - 若原句已含中文逗号,是否合并到输出中(如`1998,2023: 会议于1998年,2023年召开`)?需避免混淆。 --- ### **3. 隐式需求补充** #### **需额外定义的规则**: 1. **输入限制**: - 文件大小限制(如支持GB级文件)或编码自动检测逻辑。 2. **去重与排序**: - 是否合并相同年份的句子?是否按年份顺序输出? 3. **容错处理**: - 对非法文件(如非文本文件)的报错机制,或对部分乱码句子的跳过处理。 4. **性能要求**: - 处理速度要求(如每秒处理X条句子),尤其是大文件场景。 5. **扩展性**: - 是否支持自定义年份格式(如`YYYY-MM`)或跨语言文本(中英文混合)? --- ### **总结建议** 建议在需求文档中补充上述模糊点的明确定义(如正则表达式示例、标点保留列表),并增加异常处理与性能基线说明,以提升实现可靠性。 |
- 强化测试大纲 --> 定义测试大纲、强化输出格式(区别测试点、测试项、测试数据)
个人理解: 1. 基本测试项完整,各测试项对应的测试点描述准确 -- 参考粗体标记 2. 不同AI工具汇总后的测试大纲=测试项+测试点,更完整 -- 是否有遗漏呢? 3. 结果的条理性、逻辑性需要按个自习惯进行调整 |
AI提问: 测试大纲是对测试对象的梳理,包括测试项、测试点的,及测试思路备注。 1. 输出以上需求的测试项和测试点,不需要标注测试预期结果 2. 输出样例,测试项:文本输入,测试点:1)非txt文件;2)大于1M的文件 3. 输出格式,表格形式输出:第1列为测试项,第2列为测试点 |
文心一言 | DeepSeek |
测试大纲:需求测试项与测试点(表格形式) 测试项 | 测试点 |
---|
文件输入处理 | 1. 非txt文件(如.docx/.pdf等) | | 2. 大于1MB的txt文件 | | 3. 不存在的文件路径 | | 4. 不同编码格式文件(GBK/UTF-8/ANSI) | 句子分割逻辑 | 1. 连续句号(如"。。。。") | | 2. 句号后紧跟其他符号(如"。,") | | 3. 无内容句子(如" 。") | 年份识别规则 | 1. 有效4位年份(如"2025年") | | 2. 非4位数字(如"123"、"12345") | | 3. 边界值年份(如"0000"、"2100") | | 4. 年份与其他数字组合(如"2020abc") | 句子清洗规则 | 1. 换行符(\n、\r\n) | | 2. 异常标号(如"①②③") | | 3. 混合特殊符号(如"*@#$") | 输出格式规范 | 1. 多年份合并输出(如"2020,2021") | | 2. 无年份句子的过滤 | | 3. 年份与句子的原始顺序保留 | 隐式需求验证 | 1. 同一句子中重复年份的去重 | | 2. 大文件(如10万行)的性能压力测试 | | 3. 清洗后保留关键标点(如逗号、句号) | 说明: -
表格结构:第1列为测试项(功能模块),第2列为具体测试点(覆盖正常/异常场景)。 -
扩展性:可根据实际测试深度补充测试点(如增加更多边界值或特殊符号)。 -
执行建议:每个测试点需单独设计测试用例,通过日志或断言验证程序行为。 | ### **测试项与测试点表格** | **测试项** | **测试点** | |-------------------------|-----------------------------------------------------------------------------------------------| | **文本输入** | 1)非txt文件,2)大于1GB的文件,3)非UTF-8编码文件,4)非法文件路径 | | **分句功能** | 1)以“。”分句,2)嵌套句号处理,3)非句号结尾段落,4)空文件或仅换行符 | | **年份识别与提取** | 1)合法4位年份提取,2)排除非4位数字,3)含“年”字的处理,4)多年份逗号连接,5)排除非公元年份 | | **文本清洗规则** | 1)移除换行符/制表符,2)清除特殊符号,3)处理乱码文本,4)保留合法标点及数字 | | **结果输出格式** | 1)单年份格式,2)多年份逗号连接,3)原句逗号干扰,4)输出编码与行写入 | | **异常处理与容错** | 1)部分乱码句子处理,2)年份识别冲突,3)内存不足终止 | | **性能测试(隐式需求)**| 1)大文件处理速度,2)多线程/并发处理能力 | --- ### **样例说明** | 测试项 | 测试点 | |--------------|---------------------------| | **文本输入** | 1)非txt文件,2)大于1M文件 | |
- 手工分解的测试大纲
> 需求:读入txt文件,过滤文件有关年记录 0)读入txt文件 1)以“。”,中文句号,为界区分一句,最小统计单位 2)年格式:YYYY,4位 3)输出:YYYY:所在句子内容 4)说明 - 一句中包含多个年的,以“,”,中文逗号连接 - 剔除句中的非文字内容:换行符,非正常的标号等 - 按行输出过滤到的有关年记录 | 1. AI很好的帮我们拓展了思路,补充了不足之处 2. 个人思路输出 -> AI辅助 -> 个人思路整理、补充、再拓展 |
测试项 | 测试点 |
文件输入 | 1. 满足要求的文件:txt 2. 不满足要求的文件 1) 非txt文件 2) 大文件 - 容量大于1G? - 总行数超过10万行? 4) 特殊编码文件 5) 不存在的文件 |
句子识别 | 1. 标准句子:两个句号“。”之间的内容 2. 特殊句子 1) 段落首句:无前句号 2) 省略号。。。。。。 3) ! ? 结尾 4) 两句号间包含特殊字符 \n,\t, \r 5) 无年份句子 |
年份识别 | 1. 4位年份 1) YYYY 2) 一句中包含多个年份 3) 一句中年份有重复 2. 非标准年份: XX世纪,XX年代,YYYY-YYYY,XX年,公元前223年 4. 非年份 1) 非4位数字: 小于4位,大于4位 2) 4位数字但非年份: XXXX吨 |
结果输出 | 1. 输出格式: 年份:内容 2. 年份格式: 1) 单年份输出 2) 多年份输出: 年份连接符?句中年份排序? 3) 重复年份输出: 多次输出?输出1次? 4) 整体输出年份排序: 原序?时间顺序? 3. 输出方式 1) 控制台输出 2) 文件输出 |
程序展示 | 1. 控制台 2. GUI |
| |
- 测试用例
个人理解: 1. 格式没有问题 2. 用例覆盖不完整,未有效利用大纲所整理的测试项和测试点: - 测试项覆盖 - 测试点覆盖不足:测试数据不足 3. 预期结果仅描述,未能体现实际程序实现结果,需按实际再加工  |
AI提问: 测试用例是对测试执行步骤的描述,基本元素包括 序号、测试环境、测试项、测试目的、测试数据、测试步骤、预期结果、设计人、设计时间、实际结果、执行人、执行时间 1. 输出以上需求的测试用例 2. 输出样例,序号、测试项、测试目的、测试数据、测试步骤、预期结果 3. 输出格式,表格形式输出 |
文心一言 | DeepSeek |
测试用例(表格形式) 序号 | 测试项 | 测试目的 | 测试数据/文件 | 测试步骤 | 预期结果 |
---|
1 | 文件输入 | 验证非txt文件处理 | test.jpg(非txt文件) | 1. 运行程序并输入test.jpg 2. 观察系统提示 | 系统提示“仅支持txt文件”并退出 | 2 | 文件输入 | 验证大文件处理能力 | 生成1.5MB的txt文件 | 1. 运行程序并输入大文件 2. 记录处理时间 | 系统正常处理文件,无内存溢出 | 3 | 句子分割 | 验证多句号分割 | 输入:“句子。句子。句子。” | 1. 分割句子 2. 统计分割后的句子数量 | 分割为3个独立句子 | 4 | 句子分割 | 验证换行符处理 | 输入:“句子\n。句子” | 1. 分割句子 2. 检查分割结果 | 分割为2个句子:“句子”和“句子” | 5 | 年份提取 | 验证标准年份识别 | 输入:“2020年是关键年份。” | 1. 提取年份 2. 验证输出格式 | 输出:“2020:2020年是关键年份。” | 6 | 年份提取 | 验证非年份数字过滤 | 输入:“电话:2020-1234” | 1. 提取年份 2. 检查是否提取2020 | 不提取2020(假设规则排除非年份数字) | 7 | 非文字内容过滤 | 验证特殊符号剔除 | 输入:“2020@年#数据” | 1. 过滤非文字内容 2. 检查输出句子 | 输出句子为“2020年数据” | 8 | 输出格式 | 验证多年份合并 | 输入:“2020年和2021年。” | 1. 提取年份并合并 2. 检查输出格式 | 输出:“2020,2021:2020年和2021年。” | 9 | 边界条件 | 验证最小年份处理 | 输入:“0001年是起点。” | 1. 提取年份 2. 检查是否识别0001 | 提取0001(若规则允许) | 10 | 性能与稳定性 | 验证大文件稳定性 | 生成10MB的txt文件 | 1. 运行程序并输入大文件 2. 监控内存和CPU占用 | 系统稳定运行,无崩溃或异常退出 | 测试样例说明 -
测试项:文件输入 -
测试项:句子分割 -
测试目的:验证含换行符的句子分割逻辑。 -
测试数据:这是2020年\n。这是2021年 -
预期结果:分割为两句话,年份分别关联到对应句子。 -
测试项:年份提取 -
测试项:输出格式 | ### 测试用例表格 | 序号 | 测试项 | 测试目的 | 测试数据 | 测试步骤 | 预期结果 | |------|----------------|----------------------------|------------------------------------------------------------------------|------------------------------------------------------------------------|------------------------------------------------------------------------------------------| | 1 | 文件输入 | 验证非txt文件处理能力 | 文件名为`test.docx`,内容包含年份和中文句号 | 1. 输入`test.docx`;<br>2. 执行程序 | 提示“仅支持txt文件”或直接忽略 | | 2 | 文件输入 | 验证大文件(>1MB)处理能力 | 生成一个1.5MB的txt文件,内容包含有效年份和正常句子 | 1. 输入大文件;<br>2. 执行程序 | 程序正常处理并输出结果,无卡顿或崩溃 | | 3 | 句子分割 | 验证多中文句号分割准确性 | 文本:`2023年。天气晴朗。1999年。` | 1. 输入文本;<br>2. 执行分割 | 分割为3个句子:`2023年`、`天气晴朗`、`1999年` | | 4 | 句子清洗 | 验证特殊符号和换行符清洗 | 文本:`2020年#数据\n*测试*` | 1. 输入文本;<br>2. 执行清洗 | 清洗后句子为`2020年数据测试` | | 5 | 年份提取 | 验证全角数字年份识别 | 文本:`全角年份:2023年` | 1. 输入文本;<br>2. 提取年份 | 识别出年份`2023`(需明确是否支持全角)或忽略 | | 6 | 年份提取 | 排除无效四位数(如0000) | 文本:`无效年份:0000年` | 1. 输入文本;<br>2. 提取年份 | 不提取`0000`或根据需求标记为无效 | | 7 | 结果格式化 | 验证多年份逗号连接顺序 | 文本:`2008年北京,2022年冬奥会` | 1. 输入文本;<br>2. 提取年份并格式化 | 输出`2008,2022: 2008年北京,2022年冬奥会` | | 8 | 输出顺序与格式 | 验证输出与原文顺序一致 | 文本:`1997年香港回归。2001年加入WTO。` | 1. 输入文本;<br>2. 执行程序 | 输出顺序为`1997: ...`在前,`2001: ...`在后 | | 9 | 异常处理 | 验证文件路径不存在时的处理 | 输入路径为`C:\fake.txt` | 1. 输入错误路径;<br>2. 执行程序 | 提示“文件不存在”或静默忽略 | --- ### 样例说明(根据用户要求补充) | 序号 | 测试项 | 测试目的 | 测试数据 | 测试步骤 | 预期结果 | |------|--------------|------------------------|--------------------|--------------------------|--------------------| | 1 | 文本输入 | 验证非txt文件处理 | 输入`test.docx` | 1. 执行程序 | 提示“不支持此格式” | --- ### 扩展说明 1. **测试环境**:默认需标注操作系统(如Windows 11)、Python版本(如3.9)、依赖库版本等,但用户未明确要求,此处省略。 2. **实际结果/执行人**:需在测试执行阶段补充填写。 3. **隐式逻辑**: - 若年份嵌入非文字内容(如`【2020】`),需明确是否提取。 - 若句子清洗后为空(如`####`),是否跳过输出。 |