Streamlit在测试领域中的应用:构建自动化测试报告生成器

引言

Streamlit 在开发大模型AI测试工具方面具有显著的重要性,尤其是在简化开发流程、增强交互性以及促进快速迭代等方面。以下是几个关键点,说明了 Streamlit 对于构建大模型AI测试工具的重要性:

1. 快速原型设计和迭代

对于大模型AI测试工具的开发而言,快速构建原型并进行迭代至关重要。Streamlit 允许开发者通过简单的Python脚本快速创建Web应用程序,无需深入掌握前端技术(如HTML、CSS、JavaScript)。这种能力使得团队能够迅速将想法转化为可交互的界面,加速了从概念验证到实际应用的过程。

2. 强大的数据可视化支持

在评估大模型的表现时,数据可视化是不可或缺的一环。Streamlit 提供了丰富的内置函数用于生成图表和图形,包括折线图、柱状图、散点图等,并且可以轻松地与更高级的数据可视化库(如 Altair 或 Plotly)集成。这有助于直观展示模型性能指标、误差分布、特征重要性等内容,从而帮助研究人员更好地理解和优化模型。

3. 简化的用户交互设计

Streamlit 使得添加用户输入控件变得极为简单,例如滑块、下拉菜单、复选框等。这对于调整超参数、选择不同的模型版本或配置测试场景非常有用。它允许非技术人员也能够方便地使用这些工具,提高了协作效率。

4. 实时反馈机制

Streamlit 应用程序能够实时响应用户的输入变化,这意味着任何对变量的修改都会立即反映在界面上。这一特性特别适合于调试复杂的机器学习模型,因为它可以让开发者即时看到参数调整后的效果,从而更快地找到最优解。

5. 易于分享和部署

一旦开发完成,Streamlit 应用可以通过命令行一键部署到云端服务(如Heroku、AWS等),也可以直接运行在本地服务器上供团队内部访问。此外,由于其基于Python的特性,结合Docker容器化技术,可以确保环境的一致性和稳定性,便于跨平台分享和部署。

6. 社区支持与扩展性

作为一个开源项目,Streamlit 拥有一个活跃的社区,提供了大量的教程、案例研究和第三方插件,可以帮助开发者解决遇到的各种问题。同时,它还支持与其他流行的Python库(如Pandas、NumPy、Scikit-learn等)无缝集成,为构建复杂的大模型AI测试工具提供了强大的后端支持。

综上所述,Streamlit 凭借其易用性、灵活性及强大的功能,在开发大模型AI测试工具中扮演着至关重要的角色。无论是对于初学者还是经验丰富的开发者来说,都是一个值得考虑的选择。它可以极大地提高工作效率,降低技术门槛,使更多的人能够参与到AI模型的测试与优化工作中来。本文将详细介绍如何使用Streamlit来创建一个实用的自动化测试报告生成器,并提供完整的代码示例,适合初学者学习。

一、环境搭建与依赖安装

安装必要的库

在开始之前,请确保你已经安装了Python(建议版本3.7及以上)。接下来,我们需要安装几个关键的库:

  • Streamlit:用于构建Web界面。
  • Pandas:用于数据处理。
  • Openpyxl:用于读取Excel文件。

可以通过以下命令安装这些库:

pip install streamlit pandas openpyxl

二、代码分段解读

1. 加载数据函数

首先定义一个函数来加载上传的Excel文件。这里我们使用@st.cache_data装饰器来缓存数据,提高性能。

import streamlit as st
import pandas as pd

# 加载数据函数
@st.cache_data  # 使用缓存提高性能
def load_data(file_path):
    return pd.read_excel(file_path, engine='openpyxl')

2. 主页面设置

接下来设置主页面的标题和描述,让用户了解该应用的目的。

# 主页面设置
st.title("自动化测试报告生成器")
st.write("""
这是一个基于Streamlit的应用程序,用于分析和展示自动化测试的结果。
""")

3. 上传Excel文件

提供一个文件上传组件,允许用户选择并上传Excel文件。

# 上传Excel文件
uploaded_file = st.file_uploader("选择一个Excel文件", type=["xlsx"])
if uploaded_file is not None:
    data = load_data(uploaded_file)

4. 数据验证

检查上传的Excel文件是否包含所有必需的列,如“Test Name”、“Status”和“Execution Time”。

    # 确认必要列存在
    required_columns = ['Test Name', 'Status', 'Execution Time']
    missing_columns = [col for col in required_columns if col not in data.columns]
    if missing_columns:
        st.error(f"缺少必需的列: {
      
      ', '.join(missing_columns)}")

5. 显示原始数据选项

提供一个选项让用户查看上传文件中的原始数据。

    else:
        # 显示原始数据选项
        if st.checkbox('显示原始数据'):
            st.subheader('原始数据')
            st.write(data)

6. 筛选条件

允许用户根据测试状态(通过/失败)进行筛选。

        # 筛选条件
        st.sidebar.header("筛选条件")
        status_filter = st.sidebar.multiselect(
            "选择测试状态",
            options=['Pass', 'Fail'],
            default=['Pass', 'Fail']
        )

7. 应用筛选条件

根据用户选择的状态过滤数据。

        # 应用筛选条件
        filtered_data = data[data['Status'].isin(status_filter)]

8. 显示概览信息

计算并展示总测试数、通过测试数、失败测试数及通过率等概览信息。

        # 显示概览信息
        total_tests = len(filtered_data)
        passed_tests = (filtered_data['Status'] == 'Pass').sum()
        failure_tests = total_tests - passed_tests
        pass_rate = round((passed_tests / total_tests) * 100, 2)

        st.subheader("测试概览")
        st.metric(label="总测试数", value=total_tests)
        st.metric(label="通过测试数", value=passed_tests)
        st.metric(label="失败测试数", value=failure_tests)
        st.metric(label="通过率 (%)", value=pass_rate)

9. 显示详细测试结果

以表格形式展示经过筛选后的测试结果。

        # 显示详细测试结果
        st.subheader("详细测试结果")
        st.dataframe(filtered_data)

10. 成功率趋势图

绘制每日的成功率趋势图,帮助分析测试结果的变化趋势。

        # 成功率趋势图
        success_rate_over_time = filtered_data.groupby(pd.Grouper(key='Execution Time', freq='D'))['Status'].apply(
            lambda x: (x == 'Pass').mean()).reset_index()
        st.subheader("成功率趋势图")
        st.line_chart(success_rate_over_time.set_index('Execution Time'))

11. 更多图表示例

提供额外的图表选项,如失败原因条形图(如果存在相关数据)。

        # 更多图表示例
        st.subheader("更多图表示例")
        chart_type = st.selectbox("选择图表类型", ["失败原因条形图"])

        if chart_type == "失败原因条形图" and 'Failure Reason' in filtered_data.columns:
            failure_reasons = filtered_data[filtered_data['Status'] == 'Fail']['Failure Reason'].dropna().value_counts()
            st.bar_chart(failure_reasons)
else:
    st.write("请上传一个Excel文件以开始分析。")

windows环境下在cmd启动服务:

在这里插入图片描述
效果展示:

在这里插入图片描述

excel文档格式:

在这里插入图片描述
上传excel文档后展示的效果如下图所示:

在这里插入图片描述

结论

通过上述步骤,我们构建了一个基于Streamlit的自动化测试报告生成器。这个应用程序不仅展示了如何利用Streamlit的强大功能来简化测试数据的可视化和分析过程,还为测试工程师提供了一个实际操作的例子。希望这篇教程能帮助你快速入门Streamlit,并应用于实际工作中,提升测试工作的效率和质量。如果你有任何问题或建议,请随时留言交流!源码及excel文档已上传云盘,感兴趣的宝子们一起学习一下吧~