Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
幻のテスト技法「キーワード駆動テスト」を追い求めて
Search
ENDO Yasuyuki
December 03, 2022
Technology
0
2.6k
幻のテスト技法「キーワード駆動テスト」を追い求めて
ソフトウェアテスト自動化カンファレンス2022 発表資料
https://testautomationresearch.connpass.com/event/262132/
ENDO Yasuyuki
December 03, 2022
Tweet
Share
More Decks by ENDO Yasuyuki
See All by ENDO Yasuyuki
Blueskyに伏せ字投稿ができるWebアプリの作り方
eyasuyuki
0
500
Bluespoilerのご紹介
eyasuyuki
0
440
キーワード駆動っぽいテストができるツールを開発した話
eyasuyuki
0
470
Kotlin Updates in LL2019
eyasuyuki
0
560
Learn Languages 2019
eyasuyuki
5
1.1k
Why Flutter excitement me?
eyasuyuki
3
1.1k
Kotlin vs Swift
eyasuyuki
0
510
フロントエンドだめ自慢
eyasuyuki
0
130
llot_frontend.pdf
eyasuyuki
0
56
Other Decks in Technology
See All in Technology
Snowflake Intelligenceにはこうやって立ち向かう!クラシルが考えるAI Readyなデータ基盤と活用のためのDataOps
gappy50
0
270
Firestore → Spanner 移行 を成功させた段階的移行プロセス
athug
1
490
品質視点から考える組織デザイン/Organizational Design from Quality
mii3king
0
210
20250912_RPALT_データを集める→とっ散らかる問題_Obsidian紹介
ratsbane666
0
100
「どこから読む?」コードとカルチャーに最速で馴染むための実践ガイド
zozotech
PRO
0
540
Codeful Serverless / 一人運用でもやり抜く力
_kensh
7
450
普通のチームがスクラムを会得するたった一つの冴えたやり方 / the best way to scrum
okamototakuyasr2
0
100
プラットフォーム転換期におけるGitHub Copilot活用〜Coding agentがそれを加速するか〜 / Leveraging GitHub Copilot During Platform Transition Periods
aeonpeople
1
210
なぜスクラムはこうなったのか?歴史が教えてくれたこと/Shall we explore the roots of Scrum
sanogemaru
5
1.6k
「その開発、認知負荷高すぎませんか?」Platform Engineeringで始める開発者体験カイゼン術
sansantech
PRO
2
110
サラリーマンの小遣いで作るtoCサービス - Cloudflare Workersでスケールする開発戦略
shinaps
2
470
「全員プロダクトマネージャー」を実現する、Cursorによる仕様検討の自動運転
applism118
22
12k
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
920
Navigating Team Friction
lara
189
15k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Optimizing for Happiness
mojombo
379
70k
Site-Speed That Sticks
csswizardry
10
820
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Transcript
幻のテスト技法「キーワード駆動テスト」を追い求めて 2022-12-03 @eyasuyuki 1
結論 キーワード駆動テストは、 2
結論 キーワード駆動テストは、意外に簡単だった 3
そもそもキーワード駆動テストとは 操作を表すアクションキーワードと、その対象となるデータで構成された表を使って行うテスト 人間可読のキー ワード表と実際の画面を結びつけるドライバーを書けば自動化できる 4
キーワード駆動テストの位置付け ソフトウエア品質を高める開発者テスト改訂版 ( 高橋寿一 2022) p.138 より 5
キーワード駆動テストが登場する本その 1 システムテスト自動化標準ガイド (Mark Fewster, Dorothy Graham 1999) ISBN978-4-7981-3921-0 概念的なエピソードは書かれているが、具体的な実装については書かれていない
6
キーワード駆動テストが登場する本その 2 ソフトウエア品質を高める開発者テスト改訂版 ( 高橋寿一 2022) ISBN978-4-7981-7639-0 この本でキーワード駆動テストを知った。ただし概要だけしか書かれていない 7
キーワード駆動テストを知った頃のツイート https://twitter.com/eyasuyuki/status/1562708740243337216 8
幻のテスト技法 ? 業界経験30 年以上になるが、キーワード駆動テストをやっている人を一度も見たことがない 9
既存のキーワード駆動テストツールその 1 Open2Test https://github.com/open2test/Open2Test_Selenium 目的に合わなかった理由 キーワード表の形式が気に入らない( 納品物にならない) ソースコードがないので自由に改造できない 余計な機能がある( データの読み込みなど)
10
Open2Test のテストケース 11
既存のキーワード駆動テストツールその 2 Robot framework https://robotframework.org 目的に合わなかった理由 キーワード表の形式が気に入らない( 納品物にならない) 12
Robot framework のテストケース (1/2) 13
Robot framework のテストケース (2/2) 14
ふとひらめいたアイデア 15
拡張されたキーワード表 印刷範囲外の列に画面依存の情報を書いている 16
今回開発したツール Keydriver https://github.com/eyasuyuki/keydriver ノーコードでe2e テストができる オープンソース 商用利用可(MIT ライセンス) 気に入ったら☆(Star) ください
Zenn の記事 https://zenn.dev/eyasuyuki/articles/a20301d34adce0 17
動作概念図 Keydriver Keydriver POI POI Excel Excel WebDriver WebDriver ブラウザ
ブラウザ Excel ファイル読み込み 読み込み ワークシート ワークシート ブラウザ操作 ブラウザ操作 ブラウズ結果 ブラウズ結果 結果検証 テスト結果出⼒ テスト結果出⼒ 18
デモ https://youtu.be/Klqx18-cBgw 19
利用可能なキーワード No キーワード 説明 1 open URL を開く 2 click
要素をクリックする 3 select select 要素を選択する 4 input input 要素に入力する 5 clear input 要素をクリアする 6 accept ダイアログでOK する 7 dismiss ダイアログをキャンセルする 8 capture スクリーンショットを撮る 9 upload file 要素にファイル名を入力する 10 assert 値を検査する 11 execute SQL を実行する 12 _DIRECTIVE デフォルトキーワード ※ 1 〜11 のどれにも一致しないキーワードが使われた場合、デフォルトキーワードとして解釈される 20
要素セレクタの表記法 tag[value#attribute] タグ 説明 id id 要素 name name 要素
xpath xpath 例 id[save_button] id[save_button#enabled] name[name_input#displayed] xpath[/html/head/title] ※ デフォルトの attribute は innerText 21
データ型 tag[value] 上記の形式で下記のデータを表現できる。 タグ 値 説明 text 文字列 デフォルトのデータ型である url
URL HTTP-URL やJDBC 接続URL を表現する sql SQL 文 sheet ワークシー ト名 デフォルトキーワード _DIRECTIVE とともに使用する。指定したワークシートをサブル ーチンのように実行することができる 22
述語 tag[value] 述語はキーワード assert とともに使用する。タグに下記を使うことでそれぞれの述語を表現できる。 タグ 説明 is 等価 isNot
非等価 isNull null isNotNull 非null greaterThan より大きい greaterThanEqual 以上 lessThan より小さい lessThanEqual 以下 fail 失敗 23
Keydriver のメリット (1/4) ノーコードで自動テストが行えるので、ビジネスゴールが達成されるかどうかのテストに注力できる Copyright (c) Vector4Stock - Freepik.com 24
Keydriver のメリット (2/4) ドメインエキスパートがキーワード表を作成し、テストエンジニアが実際の画面要素のセレクタを記述する といった分業が可能になる Copyright (c) Studiogstock - Freepik.com
25
Keydriver のメリット (3/4) 画面が変更されてもドライバーをメンテナンスする必要はなく、キーワード表をメンテナンスすれば済む 他のキーワード駆動ツール Driver Reader キーワード表 ドメインエキスパート テストエンジニア
ブラウザ 作成 メンテナンス 読み込み 操作 Keydriver Driver Reader キーワード表 ドメインエキスパート テストエンジニア ブラウザ 作成 メンテナンス 読み込み 操作 26
Keydriver のメリット (4/4) 他のワークシートをサブルーチンのように実行できるため、キーワードの階層化が可能になる 27
Keydriver をぜひ試してみてください ! https://github.com/eyasuyuki/keydriver 28
ソフトウェアテスト Advent Calendar 2022 https://qiita.com/advent-calendar/2022/softwaretesting こちらで取り上げていただきました。 29