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

严重BUG修复及部分体验问题优化

随着Deepseek API+Python 测试用例一键生成与导出 V1.0.6的试用不断深入,会出现程序异常崩溃的问题。经群友定位,紧急修复了bug,并适当优化部分体验性问题。针对生成的测试用例xlsx文档,可以再次选中该xlsx给大模型进行推理生成新的用例,但是会产生幻觉,此处需考虑优化处理方法。bug列表如下:

  • generate_report方法中将chunk_text错误拼写为chuntext,程序会异常退出
  • 当json格式的接口数据尺寸大于分块尺寸时,第2段把第1段的文档内容重复解析输出了
  • 部分群友使用体验优化,打印输出内容优化

感谢群友的反馈~~

支持的python环境是python 3.12
具体可参考Deepseek API+Python测试用例一键生成与导出 V1.05(支持读取json及yml,环境及库安装保姆级指南)

工具使用阿里云百炼api-key,具体可参考结合pageassist与阿里百炼api实现deepseek-r1联网搜索功能

若提示401,则可能是因为api-key未替换

整体布局如下图所示:

在这里插入图片描述


一、工具核心功能概览

1.1 支持读取多种文档类型

工具支持以下文档类型,满足不同场景下的测试需求:

  • docx 文档:从需求文档中提取指定标题内容,进行分块处理后生成功能测试用例。
  • excel 文档:从接口文档中提取接口定义,基于内容进行分块生成接口测试用例。
  • json 文档:从接口文档中提取内容,合理分块后生成接口测试用例。
  • yml 文档:针对接口文档,按接口定义分块生成测试用例。
  • md 文档:读取md文档内容,进行功能测试用例生成。

1.2 分块策略

分块策略是本工具的核心亮点,针对不同文档类型采用不同的分块方式:

  • 固定长度分块:将文本按固定长度切割,同时添加滑动窗口重叠,避免上下文丢失。
  • 内容分块:按接口定义或段落内容分块,确保数据完整性。

1.3 测试用例导出

生成的测试用例不仅支持在工具内预览,还可导出为 jsonexcel 格式,便于后续管理和使用。


二、BUG修复代码详情

2.1 json文档分块策略

针对 json 文件,当json格式的接口数据尺寸大于分块尺寸时,第2段把第1段的文档内容重复解析输出。

代码实现
    def chunk_json(self, content, max_chunk_size=1000):
        """
        将 .json 接口文档按接口定义分块,确保接口数据完整。

        参数:
        - file_path (str): .json 文件路径
        - max_chunk_size (int): 每个分块的最大字符数

        返回:
        - list: 分块后的接口定义列表
        """
        # with open(file_path, 'r', encoding='utf-8') as file:
        #     data = json.load(file)
        print("开始对json或yml文件进行分块~~")
        chunks = []
        current_chunk = ""
        current_size = 0

        for n, interface in enumerate(content):
            interface_content = json.dumps(interface, indent=2, ensure_ascii=False)
            interface_size = len(interface_content)

            if current_size + interface_size > max_chunk_size:
                if n == 0:  # bug修复,当json对象列表的第一个元素尺寸就大于最大分隔尺寸时,则将第一个元素添加到分块列表中
                    chunks.append(interface_content)
                else:
                    chunks.append(current_chunk)
                current_chunk = interface_content
                current_size = interface_size
                n += 1  # 修复第2段把第1段的文档内容重复解析输出了
            else:
                current_chunk += "\n" + interface_content
                current_size += interface_size
                n += 1  # 修复第2段把第1段的文档内容重复解析输出了

        if current_chunk:
            chunks.append(current_chunk)

        return chunks
代码注释
  1. 针对 JSON 列表内容逐个分块。
  2. 修复第2段把第1段的文档内容重复解析输出。

2.2 generate_report方法中将chunk_text错误拼写为chuntext,程序会异常退出

generate_report方法中将chunk_text错误拼写为chuntext,程序会异常退出。

代码实现
        def generate_report(self):
        """ 生成分析报告 """
        if not self.prompt_input.toPlainText().strip():
            QMessageBox.warning(self, "提示", "请输入提示词!")
            return
        context = self.preview_area.toPlainText()
        if not self.context and context:
            # 如果没有分块,则在此对预览框中的文本进行分块
             # chuntext修改为chunk_text
            self.context = self.chunk_text(context) 
            
        if not context:
            QMessageBox.warning(self, "提示", "内容预览框中无数据,请求大模型终止!")
            return
       
代码注释
  1. self.context = self.chuntext(context)修改为self.context = self.chunk_text(context)

三、工具优势

  1. 智能分块策略:针对不同文档类型采用最优分块方案,确保大模型生成结果完整可靠。
  2. 多文档支持:支持 docx、yml、json 和 excel 等多种文档类型,满足多场景需求。
  3. 高效导出:生成的测试用例支持一键导出为 json 或 excel 格式,便于后续管理。
  4. 贴心细节优化:如滑动窗口处理、首块 bug 修复等,确保工具稳定性和精准性。

四、总结

通过对文档进行智能分块处理,结合大模型生成测试用例的能力,大幅提升测试效率和用例质量。无论是功能测试还是接口测试,这款工具都能为测试工程师提供强大支持,助力实现测试工作的智能化升级!针对已经生成的测试用例,如何结合需求文档再次传递给大模型进行用例覆盖率分析,将作为下一个突破口。agent似乎也可以安排上了。
快来试试这款工具,让测试用例生成变得轻松高效吧!源码已上传~继续coding,支持json输出为md格式文档。

往期迭代文章:

Deepseek API+Python 测试用例一键生成与导出 V1.0.6(加入分块策略,返回更完整可靠)

Deepseek API+Python测试用例一键生成与导出 V1.05(支持读取json及yml,环境及库安装保姆级指南)

Deepseek API+Python 测试用例一键生成与导出 V1.0.4 (接口文档生成接口测试用例保姆级教程)

Deepseek API+Python 测试用例一键生成与导出 V1.0.3

Deepseek API+Python测试用例一键生成与导出-V1.0.2

Deepseek API+Python测试用例一键生成与导出-V1.0.1

Deepseek API+Python测试用例一键生成与导出-V1

Deepseek API+Python测试用例一键生成与导出

http://www.dtcms.com/a/106969.html

相关文章:

  • 【5天学会TS】打卡学习Typescript的第一天
  • Markdown常用语法
  • 合合信息大模型加速器2.0:构建智能知识库,助力大模型减少“幻觉”
  • 如何避免内存泄漏,尤其是在React中
  • 大数据(4.5)Hive聚合函数深度解析:从基础统计到多维聚合的12个生产级技巧
  • 5G_WiFi_CE_射频输出功率、发射功率控制(TPC)和功率密度测试
  • VideoToolbox 实战:H264 编码 Demo 的高效实现
  • CSS 高级用法
  • javaSE知识梳理(一)
  • 八款内网电脑监控软件:探寻适配企业需求的数字化监管方案组合
  • 银河麒麟V10 aarch64架构安装mysql教程
  • 应用密码零改造方案一
  • DLML正则化
  • 【前端知识】Vue当中目录别名@的使用
  • leetcode515 在每个树行中找最大值
  • mac air m系列arm架构芯片安装虚拟机 UTM+debian 浏览器firefox和chrome
  • Bugku-贝斯手
  • 【Linux篇】自主Shell命令行解释器
  • Spring 核心技术解析【纯干货版】- XVIII:Spring 网络模块 Spring-WebSocket 模块精讲
  • ray.rllib-入门实践-12-2:在自定义policy中注册使用自定义model(给自定义model新增参数)
  • js中判断对象是否包含某个属性(元素)
  • C++ 编程指南33 - 使用模板来表达适用于多种参数类型的算法
  • 【力扣hot100题】(041)将有序数组转换为二叉搜索树
  • Mysql连接池报错
  • 春晚魔术[蓝桥]
  • 查看 Linux 版本 Debian 飞牛os
  • Opencv计算机视觉编程攻略-第七节 提取直线、轮廓和区域
  • HCIA/HCIP基础知识笔记汇总
  • USC安防平台视频存储 RK3588
  • 问题大集10-git使用commit提交中文显示乱码