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_testspass_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文檔已上傳云盤,感興趣的寶子們一起學習一下吧~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/75440.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/75440.shtml
英文地址,請注明出處:http://en.pswp.cn/web/75440.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker 運行自定義化的服務-后端

docker 運行自定義化的服務-前端-CSDN博客 運行自定義化的后端服務 具體如下: ①打包后端項目,形成jar包 ②編寫dockerfile文件,文件內容如下: # 使用官方 OpenJDK 鏡像 FROM jdk8:1.8LABEL maintainer"ATB" version&…

解決java使用easyexcel填充模版后,高度不一致問題

自定義工具,可以通過獲取上一行行高設置后面所以行的高度 package org.springblade.modules.api.utils;import com.alibaba.excel.write.handler.RowWriteHandler; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.wr…

repo倉庫文件清理

1. repo 倉庫內文件清理 # 清理所有Git倉庫中的項目 repo forall -c git clean -dfx # 重置所有Git 倉庫中的項目 repo forall -c git reset --hard 解釋: repo forall -c git clean -dfx: repo forall 是一個用于在所有項目中執行命令的工具。-c 后…

結合大語言模型整理敘述并生成思維導圖的思路

楔子 我比較喜歡長篇大論。這在代理律師界被視為一種禁忌。 我高中一年級的時候因為入學成績好(所在縣榜眼名次),直接被所在班的班主任任命為班長。我其實不喜歡這個崗位。因為老師一來就要提前注意到,要及時喊“起立”、英語課…

spark-core編程2

Key-Value類型: foldByKey 當分區內計算規則和分區間計算規則相同時,aggregateByKey 就可以簡化為 foldByKey combineByKey 最通用的對 key-value 型 rdd 進行聚集操作的聚集函數(aggregation function)。類似于aggregate()&…

原理圖設計準備:頁面柵格模板應用設置

一、頁面大小的設置 (1)單頁原理圖頁面設置 首先,選中需要更改頁面尺寸的那一頁原理圖,鼠標右鍵,選擇“Schmatic Page Properties”選項,進行頁面大小設置。 (2)對整個原理圖頁面設…

關于異步消息隊列的詳細解析,涵蓋JMS模式對比、常用組件分析、Spring Boot集成示例及總結

以下是關于異步消息隊列的詳細解析,涵蓋JMS模式對比、常用組件分析、Spring Boot集成示例及總結: 一、異步消息核心概念與JMS模式對比 1. 異步消息核心組件 組件作用生產者發送消息到消息代理(如RabbitMQ、Kafka)。消息代理中間…

【深度洞察】解碼飲料行業破局點:場景革命

當東鵬特飲以 “大瓶裝 防塵蓋” 精準解決貨車司機的場景化需求,當農夫山泉通過 “冷藏版東方樹葉” 打開年輕白領的早餐場景 —— 這些現象級案例背后,是飲料行業底層邏輯的深刻變革:真正的市場增量,藏在對消費場景的極致拆解中…

二、TorchRec中的分片

TorchRec中的分片 文章目錄 TorchRec中的分片前言一、Planner二、EmbeddingTable 的分片TorchRec 中所有可用的分片類型列表 三、使用 TorchRec 分片模塊進行分布式訓練TorchRec 在三個主要階段處理此問題 四、DistributedModelParallel(分布式模型并行)…

如何在 Spring Boot 項目中使用 MyBatis 進行批量操作以提升性能?

MyBatis 提供了 ExecutorType.BATCH 類型,允許將多個 SQL 語句進行組合,最后統一執行,從而減少數據庫的訪問頻率,提升性能。 以下是如何在 Spring Boot 項目中使用 MyBatis 進行批量操作的關鍵點: 1. 配置 MyBatis 使…

Redis 字符串(String)詳解

1. 什么是字符串類型 在 Redis 中,字符串(String) 是最基本的數據類型。它可以包含任何數據,比如文本、JSON、甚至二進制數據(如圖片的 Base64 編碼),最大長度為 512 MB。 字符串在 Redis 中不…

Elasticsearch 系列專題 - 第四篇:聚合分析

聚合(Aggregation)是 Elasticsearch 的強大功能之一,允許你對數據進行分組、統計和分析。本篇將從基礎到高級逐步講解聚合的使用,并結合實際案例展示其應用。 1. 聚合基礎 1.1 什么是聚合(Aggregation)? 聚合是對文檔集合的統計分析,類似于 SQL 中的 GROUP BY 和聚合…

YOLO學習筆記 | YOLOv8 全流程訓練步驟詳解(2025年4月更新)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 這里寫自定義目錄標題 一、數據準備1. 數據標注與格式轉換2. 配置文件生…

context上下文(一)

創建一個基礎的context 使用BackGround函數,BackGround函數原型如下: func Background() Context {return backgroundCtx{} } 作用:Background 函數用于創建一個空的 context.Context 對象。 context.Background() 函數用于獲取一個空的 cont…

Java中常見的設計模式

Java中常見的設計模式 Java 中有 23 種經典設計模式,通常被分為三大類:創建型、結構型和行為型。每個設計模式都解決了不同類型的設計問題。以下是幾種常見設計模式的總結,并附帶了實際應用場景、示例代碼和詳細的注釋說明。 一、創建型設計…

責任鏈設計模式(單例+多例)

目錄 1. 單例責任鏈 2. 多例責任鏈 核心區別對比 實際應用場景 單例實現 多例實現 初始化 初始化責任鏈 執行測試方法 歡迎關注我的博客!26屆java選手,一起加油💘💦👨?🎓😄😂 最近在…

springboot 處理編碼的格式為opus的音頻數據解決方案【java8】

opus編碼的格式概念: Opus是一個有損聲音編碼的格式,由Xiph.Org基金會開發,之后由IETF(互聯網工程任務組)進行標準化,目標是希望用單一格式包含聲音和語音,取代Speex和Vorbis,且適用…

vue項目引入tailwindcss

vue3項目引入tailwindcss vue3 vite tailwindcss3 版本 初始化項目 npm create vitelatest --template vue cd vue npm install npm run dev安裝tailwindcss3 和 postcss 引入 npm install -D tailwindcss3 postcss autoprefixer // 初始化引用 npx tailwindcss init -p…

Google ADK(Agent Development Kit)簡要示例說明

一、環境準備與依賴安裝 1.1 系統 硬件: GPU NVIDIA 3070加速模型推理,內存64GB軟件: Python 3.11Docker 28.04(用于容器化部署)Kubernetes 1.25(可選,用于集群管理) 1.2 安裝 A…

批量給文件編排序號,支持數字序號及時間日期序號編排文件

當我們需要對文件進行編號的時候,我們可以通過這個工具來幫我們完成,它可以支持從 001 到 100 甚至更多的數字序號編號。也可以支持按照日期、時間等方式對文件進行編號操作。這是一種操作簡單,處理起來也非常的高效文件編排序號的方法。 工作…