分析應用 自動化失敗原因

2022-06-07 05:48:13 字數 3252 閱讀 7876

論壇的專案

自己的專案

import pandas as pd

import numpy as np

import altair as alt

import pymysql

from sqlalchemy import create_engine

import seaborn

import datetime

# 讀取資料

engine = create_engine('mysql+pymysql:')

sql = ''' select case_name ,result, platform_name, error_msg ,report_create_time from report_reportdetail; '''

df = pd.read_sql_query(sql, engine)

#選取2星期資料

df = df.set_index(pd.to_datetime(df["report_create_time"])).drop("report_create_time", axis=1)

week_ago = datetime.date.today() - datetime.timedelta(days=14)

df = df.sort_index().truncate(before=week_ago)

# 根據 error message區分

errormsg=df.loc[df['result']=='fail',:].groupby(['error_msg']).count().sort_values(by = ['result'], ascending = [false])

# select count(result) as i,error_msg from report_reportdetail where result = 'fail' group by error_msg order by i desc ;

# 選取failed case 和指定的平台

df0 =df.loc[(df['result']=='fail') ,:].copy()

df1 =df.loc[(df['result']=='fail')&(df['platform_name']=='aeqe') ,:].copy()

df2 =df.loc[(df['result']=='fail')&(df['platform_name']=='aeqv') ,:].copy()

#錯誤訊息太長

df0.loc[:, "error_msg_short"] = df1["error_msg"].str[0:60]

df1.loc[:, "error_msg_short"] = df1["error_msg"].str[0:60]

df2.loc[:, "error_msg_short"] = df2["error_msg"].str[0:60]

#多層索引

df0.set_index(['error_msg_short', 'case_name'], inplace=true) # 1. error_msg_short 為索引,排序就不會亂

# df0.set_index(['case_name', 'error_msg_short'], inplace=true) # 2. case_name 為索引,排序會亂

df1.set_index(['case_name', 'error_msg_short'], inplace=true)

df2.set_index(['case_name', 'error_msg_short'], inplace=true)

#按照索引分組

df0 =df0.groupby(level=df0.index.names).count() # 1.2. error_msg_short 為索引,排序就不會亂

df1 =df1.groupby(level=df1.index.names).count()

df2 =df2.groupby(level=df2.index.names).count()

# 按結果分析

# hw=df0.loc[(df0["result"]>0) ,:].rename(columns=).loc[:,['出現次數']].sort_values(by = ['出現次數'], ascending = [false]) # 1.2. error_msg_short 為索引,排序就不會亂

errormsgbycase=df0.loc[(df0["result"]>1) ,:].rename(columns=).loc[:,['出現次數']].sort_values(by = ['出現次數'], ascending = [false]) # 1.2. error_msg_short 為索引,排序就不會亂

aeqe=df1.loc[(df1["result"]>1) ,:].rename(columns=).loc[:,['出現次數']]

aeqv=df2.loc[(df2["result"]>0) ,:].rename(columns=).loc[:,['出現次數']]

aeqe_env=df1.loc[(df1["result"]<=1) ,:].rename(columns=).loc[:,['出現次數']]

aeqv_env=df2.loc[(df2["result"]<=3) ,:].rename(columns=).loc[:,['出現次數']]

aeqe_pr = df1.iloc[df1.index.get_level_values(1).str.contains('pr\d:')]

aeqv_pr = df2.iloc[df2.index.get_level_values(1).str.contains('pr\d:')]

# df.head(10)

# df[0:10]

# df

# df["report_create_time"]

# errormsg

errormsgbycase

# hw

# aeqe

# aeqv

# aeqv_pr

# aeqe_pr

# aeqe_env

data = errormsgbycase.reset_index()

fg = seaborn.factorplot(y='case_name', x='出現次數',col='error_msg_short', data=data, kind='bar')

fg.fig.set_size_inches(18,3)

fg.set_xlabels('')

自動定位失敗 自動化測試01

測試金字塔 1.1 測試的成本 ui自動化依賴於使用者介面,使用者介面發生變化,可能需要調整大量用例,用例維護成本較高 在使用者介面的測試中發現缺陷,修復缺陷的成本也是遠遠高於通過單元測試的成本。單元測試不依賴於使用者介面,維護成本較低 單元測試發現的缺陷可以盡早暴露缺陷,修復成本相對較低。1.2 ...

appium Hybird應用自動化

基於uiautomator chromedriver native部分走uiautomator,webview部分走chromedriver,兩者結合混搭,從而實現hybrid自動化 準備工作 step1 準備android 4.4 版本以上的手機 模擬器 webview.setwebcontent...

Android自動執行失敗的原因分析

android程式自動執行失敗的原因是因為接收不到boot completed廣播。而造成接收不到boot completed廣播可能的原因可能有以下幾個方面 1 boot completed對應的action和uses permission沒有一起新增 2 應用安裝到了sd卡內,安裝在sd卡內的應...