当前位置: 首页 > backend >正文

AI编写测试用例

第一步

将需求告诉deepseek,或者kimi,然后叫它按照指定格式输出测试用例。

第二步

解析指定格式数据,将数据写入表。

第一步我们省略,我们来做一个快速解析的工具。如图:

代码实例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>测试用例解析与表格展示</title><style>body {font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;margin: 0;padding: 40px;background-color: #f5f7fa;color: #333;}.container {max-width: 1200px;margin: 0 auto;padding: 20px;background: white;border-radius: 8px;box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);}table {width: auto;border-collapse: collapse;margin-top: 20px;table-layout: auto;}th, td {border: 1px solid #ddd;padding: 6px;text-align: center;white-space: pre-wrap;font-size: 12px;word-wrap: break-word;}th {background-color: #3498db;color: white;font-weight: bold;}h1 {color: #2c3e50;margin-bottom: 20px;font-size: 28px;text-align: center;}textarea {width: 90%;height: 200px;padding: 12px;border: 1px solid #ddd;border-radius: 6px;font-size: 14px;margin-bottom: 20px;resize: vertical;}button {padding: 12px 24px;background-color: #3498db;color: white;border: none;border-radius: 6px;cursor: pointer;font-size: 14px;transition: all 0.3s ease;box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);}button:hover {background-color: #2980b9;transform: translateY(-2px);box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);}.copy-button {padding: 5px 10px;background-color: #007BFF;color: white;border: none;border-radius: 6px;cursor: pointer;display: inline-block;}.copy-button:hover {background-color: #0056b3;}.tooltip {position: relative;display: inline-block;}.tooltip .tooltiptext {visibility: hidden;width: 120px;background-color: #555;color: #fff;text-align: center;border-radius: 6px;padding: 5px;position: absolute;z-index: 1;bottom: 125%;left: 50%;margin-left: -60px;opacity: 0;transition: opacity 0.3s;}.tooltip:hover .tooltiptext {visibility: visible;opacity: 1;}/* 添加toast样式 */.toast {visibility: hidden;min-width: 250px;background-color: #333;color: #fff;text-align: center;border-radius: 4px;padding: 16px;position: fixed;z-index: 1;left: 50%;bottom: 30px;transform: translateX(-50%);font-size: 14px;}.toast.show {visibility: visible;animation: fadein 0.5s, fadeout 0.5s 2.5s;}@keyframes fadein {from {bottom: 0; opacity: 0;}to {bottom: 30px; opacity: 1;}}@keyframes fadeout {from {bottom: 30px; opacity: 1;}to {bottom: 0; opacity: 0;}}/* 添加使用说明按钮样式 */.help-button {position: fixed;top: 20px;right: 20px;padding: 10px 20px;background-color: #3498db;color: white;border: none;border-radius: 6px;/* cursor: pointer; */font-size: 14px;z-index: 1000;}/* 添加弹窗样式 */.modal {display: none;position: fixed;z-index: 1001;left: 0;top: 0;width: 100%;height: 100%;background-color: rgba(0,0,0,0.5);}.modal-content {background-color: #fefefe;margin: 15% auto;padding: 20px;border: 1px solid #888;border-radius: 8px;width: 50%;max-width: 600px;box-shadow: 0 4px 8px rgba(0,0,0,0.2);text-align: center; }.close {color: #aaa;float: right;font-size: 28px;font-weight: bold;cursor: pointer;}.close:hover {color: #000;}</style>
</head>
<body><button style="position: fixed; right: 20px;"  onclick="window.open('https://kimi.moonshot.cn/')">kimi官网</button></br></br></br><button  style="position: fixed; right: 20px;" onclick="window.open('https://chat.deepseek.com/')">deepseek官网</button><!-- 添加弹窗 --><div id="helpModal" class="modal"><div class="modal-content"><span class="close" onclick="closeHelp()">&times;</span><h2>使用说明</h2><p>1. 与deepseek或者kimi对话</p><p>2. 指明ai的身份为软件测试工程师</p><p>3. 强制要求ai按照以下格式输出测试用例</p><p>4. 复制ai生成后的内容粘贴到输入框中,点击解析并生成表格</p><p>5. 点击"复制表格数据"按钮,将表格数据复制到剪贴板,并去excel中粘贴数据</p><p>测试用例格式示例:</p>
<pre style="background-color: black; color: white; padding: 10px; border-radius: 6px;text-align: left">
按以下格式,输出对应的测试用例:
* 测试用例标题:xxx
* 优先级:xxx
* 测试提要:xxx
* 前提条件:
* 1. xxx
* 2. xxx
* 测试步骤:
* 1. xxx
* 2. xxx
* 3. xxx
* 预期结果:
* xxx
</pre></div></div><div style="text-align: center;" class="container"><h1>测试用例解析</h1><textarea id="dataInput" rows="10" cols="100" placeholder="请输入测试用例数据..."></textarea><br><button onclick="parseData()" style="margin: 0 auto;">解析并生成表格</button><button onclick="copyTableData()" style="margin: 0 auto;">复制表格数据</button><!-- 添加使用说明按钮 --><button style="margin: 0 auto;background-color: pink;" onclick="showHelp()">使用说明</button><table id="resultTable" style="width: 100%;"><thead><tr><th>测试用例标题</th><th>优先级</th><th>测试提要</th><th>前提条件</th><th>测试步骤</th><th>预期结果</th></tr></thead><tbody></tbody></table><!-- 添加toast元素 --><div id="toast" class="toast">表格数据已复制到剪贴板</div></div><script>function parseData() {const dataInput = document.getElementById('dataInput').value;const resultTableBody = document.querySelector('#resultTable tbody');resultTableBody.innerHTML = '';const testCases = dataInput.split('---').filter(Boolean);testCases.forEach(testCase => {const lines = testCase.split('\n').map(line => line.trim()).filter(line => line !== '');const testCaseData = {title: '',priority: '',summary: '',preconditions: '',steps: '',expectedResults: ''};let currentField = null;lines.forEach(line => {if (line.startsWith('* 测试用例标题:')) {testCaseData.title = line.replace('* 测试用例标题:', '').trim();} else if (line.startsWith('* 优先级:')) {testCaseData.priority = line.replace('* 优先级:', '').trim();} else if (line.startsWith('* 测试提要:')) {testCaseData.summary = line.replace('* 测试提要:', '').trim();} else if (line.startsWith('* 前提条件:')) {currentField = 'preconditions';} else if (line.startsWith('* 测试步骤:')) {currentField = 'steps';} else if (line.startsWith('* 预期结果:')) {currentField = 'expectedResults';} else if (currentField) {const cleanedLine = line.trim().replace(/^\* /, '');if (cleanedLine === '') {return;}if (cleanedLine) {if (testCaseData[currentField]) {testCaseData[currentField] += '\r\n' + cleanedLine;} else {testCaseData[currentField] = cleanedLine;}}}});const row = document.createElement('tr');if (testCaseData.title === '') {//去除空行return;}row.innerHTML = `<td>${testCaseData.title}</td><td>${testCaseData.priority}</td><td>${testCaseData.summary}</td><td>${testCaseData.preconditions}</td><td>${testCaseData.steps}</td><td>${testCaseData.expectedResults}</td>`;resultTableBody.appendChild(row);});}function copyTableData() {const table = document.getElementById('resultTable');let data = '';for (let i = 1; i < table.rows.length; i++) {const row = table.rows[i];const rowData = [];for (let j = 0; j < row.cells.length; j++) {const cellContent = row.cells[j].innerText.replace(/"/g, '""'); // 将内容中的双引号替换为两个双引号rowData.push(`"${cellContent}"`); // 用双引号包裹单元格内容}data += rowData.join('\t') + '\n';}navigator.clipboard.writeText(data.trim()).then(() => showToast()).catch(() => alert('复制失败,请手动选择并复制表格内容'));}function showToast() {const toast = document.getElementById("toast");toast.className = "toast show";setTimeout(() => toast.className = toast.className.replace("show", ""), 3000);}// 添加帮助弹窗相关函数function showHelp() {document.getElementById('helpModal').style.display = 'block';}function closeHelp() {document.getElementById('helpModal').style.display = 'none';}// 点击弹窗外区域关闭弹窗window.onclick = function(event) {const modal = document.getElementById('helpModal');if (event.target == modal) {modal.style.display = 'none';}}</script>
</body>
</html>

http://www.xdnf.cn/news/18851.html

相关文章:

  • 【微服务】SpringBoot 整合 Easy-Es 实战操作详解
  • 深入探索Vue:前端开发的强大框架
  • 字母异位词分组,leetCode热题100,C++实现
  • 嵌入式学习day38
  • 搭建域服务器
  • spring-ai-alibaba使用
  • 第18章|变量:把数据装进“盒子”的正确方式
  • 机器学习 TF-IDF方法
  • 【docker apoc 部署的neo4j安装apoc插件】
  • MySQL 面试题系列(五)
  • 【Kafka】重点概念和架构总结
  • Python 入门操作指南
  • 如何在 Docker 和AKS上使用 IIS
  • iOS技术之通过Charles抓包http、https数据
  • 【Linux】基本指令学习3
  • opencv+yolov8n图像模型训练和推断完整代码
  • Clerk 用户认证系统集成文档
  • ollama离线部署+大语言模型
  • AI-调查研究-62-机器人 机械臂五大应用场景详解:从焊接到手术,从农田到太空
  • 4步用代码拆解数学建模中的TOPSIS评价决策! ! !
  • Apache Commons Lang 3
  • 野火STM32Modbus主机读取寄存器/线圈失败(二)-解决CRC校验错误
  • uC/OS-III 队列相关接口
  • 数据分析与数据挖掘
  • 企业如何构建全面的高防IP防护体系?
  • Teams Workflows 业务流程搭建与Linux自动化运维拓展应用全解析
  • 状态设计模式
  • 构建面向人工智能决策的世界模型引擎所需的基本知识体系
  • 如何在GitHub找到10k+个stars的仓库
  • podman启动mongdb的container因为权限问题导致changing ownership和读取storage.bson失败的解决方法