Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Test Automation with Python Support
Search
Hiroki Iseri
June 24, 2016
Technology
96
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Test Automation with Python Support
Hiroki Iseri
June 24, 2016
More Decks by Hiroki Iseri
See All by Hiroki Iseri
生成AI活用でQAエンジニアにどのような仕事が生まれるか/Support Required of QA Engineers for Generative AI
goyoki
1
840
開発に寄りそう自動テストの実現
goyoki
3
4.7k
自動テストを活かすためのテスト分析・テスト設計の進め方/JaSST25 Shikoku
goyoki
3
3k
チームのテスト力を総合的に鍛えてシフトレフトを推進する/Shifting Left with Software Testing Improvements
goyoki
6
5.2k
チームのテスト力を鍛える
goyoki
4
3.6k
ソフトウェアテスト徹底指南書の紹介
goyoki
1
3k
プロダクト開発を成功させるためのソフトウェア品質保証のアプローチと技術/Software QA Approach for Puduct Success
goyoki
2
2.4k
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
5
3.9k
テスト分析入門/Test Analysis Tutorial
goyoki
12
7.2k
Other Decks in Technology
See All in Technology
時うどん〜Socket.getifaddrsで学ぶネットワーク編 / Tokiudon: The Socket.getifaddrs Edition
coe401_
4
260
2026-09-08 そのJavaモダナイゼーション、AIに丸投げで大丈夫?IBM Bobで変わる品質と効率
yutanonaka
1
170
Oracle Cloud Network Path Analyzerを試してみた/I Tried Out Oracle Cloud Network Path Analyzer
masakiokuda
1
110
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
4
710
AIエージェントの権限管理 3: Agentic RAG の Fine grained access control 編
ren8k
1
240
AI Agent入門〜今更聞けないAgentの話〜
hiromimaganuma
0
110
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.6k
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
2
1.5k
地方移住と都心キャリアの両立は「金・時間・人」のリソースをフル活用すれば実現できる!〜Snowflake女子会 vol.8
snowwmn0824
0
110
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
280
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
1
280
データ_AIの事業の勝敗をわけるもの
nek0128
1
480
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
830
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
330
The agentic SEO stack - context over prompts
schlessera
0
940
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The SEO identity crisis: Don't let AI make you average
varn
0
560
Paper Plane (Part 1)
katiecoart
PRO
2
11k
Mind Mapping
helmedeiros
1
370
Transcript
PyAutoGUI等Pythonライブラリによる自動化支援 2016/7/24 テスト自動化研究会 事例報告 井芹 洋輝 【アウトライン】 Part.1 PyAutoGUI &
PyUnitによるGUIベースのテスト自動化 (おまけ)Part.2 PyAutoGUI & PyUnit +色々なPythonライブラリ活用 (おまけ)Part.3 OpenCVによる現実空間のテスト自動化
宣伝 • U30テスト設計コンテスト(30歳以下のテスコン) 開催します! • チュートリアル開催中。募集は来月予定 • 審査委員長を担当しています • http://aster.or.jp/business/contest/rulebooku30.html
Part.1 PyAutoGUI & PyUnitによる GUIベースのテスト自動化
PyAutoGUIとは • マウス操作、キーボード操作、スクリーンショット操作を自動化するPython 向けライブラリ • https://pyautogui.readthedocs.io/ • コンセプト • 可能な限りシンプルかつ直感的に使える
• どんな環境(e.g. win or mac or linux)でも同じように動く • テスト自動化ツールというわけではないですが、お手軽に自動化ツールを 組めるため今回紹介
PyAutoGuiの例:APIの例 import pyautogui pyautogui.moveTo(100, 200) #座標100、200にマウスを移動させる pyautogui.click() #マウスをクリックする pyautogui.typewrite('Hello world!')
#文字を打つ pyautogui.keyDown('shift') #シフトキーを押しっぱなしにする position = pyautogui.locateCenterOnScreen('target.png') #target.pngと一致 する場所の中心の座標を取得する 平易な1ステートメントでGUI操作を記述
PyAutoGuiの例:詳細なパラメータ指定の例 #画面上でhoge.pngとマッチする座標を取得 pyautogui.locateOnScreen(‘hoge.png’) #グレースケールでマッチングして座標を取得 pyautogui.locateOnScreen(‘hoge.png’, grayscale=True) #指定の領域から座標を取得 pyautogui.locateOnScreen(‘hoge.png’, region=(0,0, 300,
400)) #処理実行のインターバルを変更 pyautogui.PAUSE = 0.2 デフォルトはシンプルに、必要に応じて詳細に
PyUnit • ライブラリ名unittest。Python向け標準xUnitフレームワーク • シンプルで汎用性が高い • ツールチェーンも自由に構築できる • Jenkis向けXML生成、テスト結果集計などテスト用機能を手軽に利用できる
PyAutoGUI & PyUnit • PyUnitでテストフレームワーク構築 実行、結果評価をPyAutoGuiで実装 • PyUnitの機能を使いながら、GUIベースのテスト自動化を実現 • 用途を絞ればSikuli程度のツールは簡単に組める
PyAutoGUIデモ:タッチパッド操作テスト自動化 • 指定のタッチバッド操作でMac OS情報画面を表示できることを自動テスト
PyAutoGUIデモ:タッチパッド操作テスト自動化 #macアイコンをクリック position = pyautogui.locateCenterOnScreen('mac_icon.png') pyautogui.click(position) #情報表示メニューをクリック position = pyautogui.locateCenterOnScreen('about.png')
pyautogui.click(position) #表示を待つ time.sleep(1) #表示確認 position = pyautogui.locateOnScreen('os_info.png') self.assertNotEqual(position, None)
PyAutoGuiの問題点 • GUI&キャプチャ画像操作しばり • 画像のマッチングで誤差の許容範囲を指定できない • 透過効果や強調処理(影、フェード処理など)に弱い • 処理が遅い
Part.2 PyAutoGUI & PyUnit +色々なPythonライブラリ活用
色々なPythonライブラリの活用 • Pythonはテスト自動化で活用できるライブラリが多数公開されてる • GUI操作(pyautogui等)、ブラウザ操作(selenium.webdriver等)、Excel操作(openpyxl)、 画像処理(opencv等)、文字識別(tesseract等)、機械学習(TensorFlow、scikit-learn等)、 その他諸々・・ • Pythonベースでテスト自動化フレームワークを組むと、それらライブラリの 活用が可能になる
matplotlib • MATLABを参考にしたライブラリ。 MATLABのような高機能グラフを簡単に出力できる。 • ※テスト自動化用途ではないが、MATLABでシミューレションや検証を行っ ている人なら、自動化環境の補助チェックとしてスムーズに導入できる
matplotlibデモ • プログレスバーのテスト自動化(PyAutoGUIで操作を自動化) • 自動操作で得られたデータを目視確認できるようにグラフ化 プログレスバー画面 テスト対象ソフトウェア PyUnit PyAutoGUI 1.自動タッチパッド操作
2. 連続画面キャプチャ 3. プログレスバーの時間 経過に対する推移 4. 時間×進捗のグラフ matplotlib
statsmodels(+pandas, numpy) • 連続系のモデルやデータの分析ライブラリ • statsmodels.formula • Rを参考にしたAPIを使える • モデルの式を文字列で記述できる
statsmodels.formula • モデル式 • 「log(OutputData) = 係数a×log(InputData)+係数b」 • Pythonでの記述(線形回帰分析) •
「sm.ols(formula=“np.log(OutputData) ~ np.log(InputData)”, data=datalist)」 (1) OutputDataとInputDataを指定する
statsmodels.formula (2)線形回帰分析でモデルの各係数や、モデルとデータの差異を分析 (略) R-squared: 0.779 (略) coef std err t
P>|t| [95.0% Conf. Int.] --------------------------------------------------------------------------- Intercept 2.4606 0.325 7.578 0.000 1.794 3.127 np.log(Ouput Data) 0.9564 0.098 9.766 0.000 0.755 1.157 log(Output Data) = 係数a×log(Input Data)+係数b モデルとの合致性パラメータを複数出力
statsmodels.formulaデモ:プログレスバーの自動テスト • PyAutoGUIで自動操作。プログレスバー進捗を連続キャプチャで取得 • プログレスバーの進捗推移を、線形回帰分析でモデル化。モデルの係数 で、プログレスバーの進捗が意図通りか自動テストする プログレスバー機能 テスト対象ソフトウェア PyUnit PyAutoGUI
1.自動タッチパッド操作 2. 連続画面キャプチャ 3. プログレスバーの時間 経過に対する推移 statsmodels 4. プログレスバー進捗の 近似モデルのパラメータ 5. 合否結果
statsmodels.formulaデモ:プログレスバーの自動テスト #プログレスバーの進捗の回帰分析結果を取得 def analysis_trend(time, data): trend_data = pd.DataFrame([time, data]).T trend_data.columns
= ["time", "progress"] result = sm.ols(formula = "progress ~ np.log(time)", data=trend_data).fit() return result.params class TestProgressBar(unittest.TestCase): def test_progress_bar(self): #処理高速化のため、GUI操作対象の領域を特定してそこだけ操作するようにする target_area = pyautogui.locateOnScreen('target_area.png') target_region = location_to_region(target_area) #プログレスバーの開始と終了の座標および長さを取得(進捗の取得のため) start_position = pyautogui.locateOnScreen('progress_start.png', grayscale=True, region=target_region) end_position = pyautogui.locateOnScreen('progress_end.png', region=target_region) length = end_position[0] - start_position[0] #プログレスバー 開始操作 position = pyautogui.locateCenterOnScreen('start_button.png', region=target_region) pyautogui.click(transform_coord(position)) (続く)
statsmodels.formulaデモ:プログレスバーの自動テスト (続き) #プログレスバー進捗取得 progress_pos = [] progress_time = [] start_time
= time.time() time.sleep(1) while True: position = pyautogui.locateCenterOnScreen('progress_current.png', region=target_region) if position == None: break progress_pos.append((position[0] - start_position[0]) * 100 / length) progress_time.append(time.time() - start_time) #モデルとの合致性確認 result = analysis_trend(progress_time, progress_pos) self.assertTrue(result[0] < 20) self.assertTrue(result[1] > 50 and result[1] < 100) 今回のモデル:progress_pos= result[1]×log(progress_time)+result[0]
Part.3 OpenCVによる 現実空間のテスト自動化
OpenCV • オープンソースのコンピュータビジョンのライブラリ • 基本的な画像処理全般に対応。その他、録画・キャプチャ・カメラ制御、 キーボード操作などを扱える • ロボットの移動制御やLED表示等、現実空間のテストの自動化を単独でサ ポートできる
OpenCVデモ:クレーンロボットのテスト自動化 • Macbook Proのカメラで動画撮影。OpenCVでクレーン位置を解析 • テスト自動化環境の配置チェックと、クレーン制御機能テスト(クレーン位 置が指示通りである事をテスト)を自動化 クレーンロボット 1.動作指示通信 2.動画撮影
PC PyUnit OpenCV 3.ロボット位置情報 (クレーンの遠さと 座標位置) 4.テスト結果 通信制御 ※準備が間に合わなかった ので今回は人間で代用
OpenCV余談 • 近年のPythonでは、コンピュータビジョンやデータ分析のライブラリが充実 • 誰でも手軽にコンピュータビジョンベースの自動テストを構築できるようになった • テストオラクルやシミュレーションのモデル作成も敷居が下がった 高精度を求めなければ機械学習のアプローチでモデルを構築できるようになった • Pythonは組み込みエンジニアにとって重要な基礎教養
おわり