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
2019-07 テスト自動化/2019-07 Test automation
Search
Cybozu
PRO
May 31, 2019
Technology
170k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2019-07 テスト自動化/2019-07 Test automation
Cybozu
PRO
May 31, 2019
More Decks by Cybozu
See All by Cybozu
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
12
89k
新卒1年目QAが リリース基準の"なぜ"をたどってみた
cybozuinsideout
PRO
1
830
kintone リサーチ副部/UXリサーチャー 業務紹介
cybozuinsideout
PRO
0
170
私たちが『JaSST協賛』から『外部コネクト』チームになった理由
cybozuinsideout
PRO
0
580
LLMでもいつものテスト技術〜意外と半分はこれまでのテストでした〜
cybozuinsideout
PRO
1
1.1k
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
1
1.7k
LLMアプリの品質保証
cybozuinsideout
PRO
1
810
技術広報チームに丸投げしない!「一緒につくる」スポンサー活動
cybozuinsideout
PRO
0
300
テクニカルライター (グループウェア) について
cybozuinsideout
PRO
0
290
Other Decks in Technology
See All in Technology
JSONataとAWS Step Functionsで目指すRuntimelessな世界
mu7889yoon
0
120
あけおめLINE 傾向とその対策
nasa9084
0
120
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
350
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
510
絵ではじめるKubernetesセキュリティ
aoi1
4
650
データ_AIの事業の勝敗をわけるもの
nek0128
1
430
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
5
640
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
110
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
140
AIエージェントの一手は 誰も見ていない - Falco拡張OSS「Prempti」とeBPFで サーバーレス実行基盤を二層防御する
keitah
0
140
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
130
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
2k
Featured
See All Featured
Designing for Timeless Needs
cassininazir
1
480
The Mindset for Success: Future Career Progression
greggifford
PRO
0
500
Leo the Paperboy
mayatellez
10
2.3k
Everyday Curiosity
cassininazir
0
320
Mobile First: as difficult as doing things right
swwweet
225
10k
Paper Plane
katiecoart
PRO
4
53k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.9k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
850
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
410
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
Transcript
開運研修2019 テスト自動化 テストエンジニアリングチーム
この講義の目的 ▌テスト自動化の基本の「き」を知る ▌テスト自動化の演習を通して、 ⚫ 自動テストのよい書き方を知る ⚫ 自動テストの動く仕組みを知る
テスト自動化の基本
質問:手動テストは全部、自動化すればいいと思いますか?
質問:手動テストは全部、自動化すればいいと思いますか? ▌答え:NO! ▌全部自動化すればいい訳ではない ▌なぜ? ⚫ 自動テストの数だけ、メンテナンスコストがかかる ⚫ 実施頻度が少ないテストケースを自動化しても、 自動化をすることに時間がかかる場合もある ▌実行頻度の多いテストケースのみを自動化するなど
工夫が必要
参考:テストのピラミッドという考え方 ▌テストのピラミッドは、Mike Cohnの"Succeeding with Agile"[Coh09]で最初に提唱されたモデル ⚫ UIテスト ⚫ いわゆる画面上で動作するテスト ⚫
テスト速度は遅い ⚫ UIの変更が入るとテストが動かなくなる ⚫ インテグレーション(統合)テスト ⚫ UI層の1つ下の層までをテスト ⚫ WebAPIのテスト ⚫ ユニットテスト ⚫ コードレベルのテスト ⚫ テスト速度は早い UIテスト インテグレーションテスト ユニットテスト テスト数 速度 速 遅
質問:どんなテストでも自動化できると思いますか?
質問:どんなテストでも自動化できると思いますか? ▌答え:NO! ▌画面の崩れや画像のテストは、自動化が難しい 例)ボタンがずれていないことをチェックするテスト 例)アイコンが「×」であることをチェックするテスト ▌人間の目でチェックした方が、格段に効率が良いことも ある
課題内容
課題の説明 ▌課題: cybozu.comのログイン画面のテスト自動化
自動ブラウザテストの作成 ▌TEが作成したTCB(Test Common Base, テスト共通基盤)の仕 組みを利用しています。 ⚫ テストの形式を共通化 ⚫ PageObject
⚫ TestFlow ⚫ TestScript ⚫ ライブラリの共通化 ⚫ tcb-util ⚫ tcb-eslint … ⚫ 簡単に自動テストを作成できる ▌言語:JavaScript(Node.js)
Selenium WebDriverについて ▌Selenium WebDriver ⚫ OSSのソフトウエア ⚫ 自動でWebブラウザを操作してくれるツール ▌できる操作 ⚫
ボタンをクリック ⚫ フォームに値を入れる ⚫ 値が表示されるまで待つ ⚫ 値を取得する ⚫ などなど… http://webdriver.io/api.html
chaiについて ▌アサーションライブラリ:chai ⚫ OSSのソフトウエア ⚫ 動作結果の判定 ▌http://www.chaijs.com/ ▌実行結果と期待結果を比較 ⚫ expect(実行結果).to.equal(期待結果)
ほかにもいろいろな比較方法がある expect(‘foo’).to.be.a(‘string’) →型がstringであるかどうか expect('foobar').to.include('foo’) →fooが文字列の中に含まれるかどうか expect(実行結果).to.be.true →実行結果がtrueかどうか 参考URL
mochaについて ▌テストフレームワーク:mocha ⚫ OSSのソフトウエア ▌https://mochajs.org/ ▌describe()→テストの説明 ▌it()→テスト1ケース
TCBの構成 ▌PageObject ⚫ ページを構成している部品を記述(element) ⚫ 簡単な動作を記述(method) ▌TestFlow ⚫ PageObjectを使って複雑な動作を記述(method) ⚫
動作結果の判定 ▌TestScript ⚫ 実施するテストの具体的な手順
PageObjectについて ▌PageObject ⚫ ページを構成している部品や、その簡単な動作を記述 /src/pages/LoginPage.js 「セレクタ」と呼ぶ $(“.class名”) $(“#id名”) でも利用可能。
PageObjectについて ▌セレクタのいろいろな書き方 セレクタ 書き方 Id #product Class名 .entry CSS div.entry
Xpath /html/body/div Tag名 div 属性フィルター input[name=“pass”] <html> <body> <div class="entry“ id=“product”> <form id="login"> <input name="user" type="text" /> <input name="pass" type="password" /> </form> </div> </body> <html>
PageObjectについて ▌PageObject ⚫ ページを構成している部品や、その簡単な動作を記述 /src/pages/LoginPage.js WebDriverIOのAPIを利用 http://webdriver.io/api/action/setValue.html 他にも、クリックする、値を取得する…などもある
TestFlowについて ▌TestFlow ⚫ PageObjectを使って複雑な動作を記述 ⚫ 動作結果の判定 /src/test_flows/Login.js
TestScriptについて ▌TestScript ⚫ 実施するテストの具体的な手順
TCBの構成 ▌なぜこんな構成? ⚫ メンテナンスやテストの再利用、テスト修正がやりやすい Page Object1 Test Flow1 Test Script1
< name=username > Test Script2 Page Object2 Test Flow2 画面上の要素の値を使うのはPageObjectのみ 例えば画面の要素名が変わっても、PageObjectのみ変更 すればよい TestFlowのおかげで、同じ処理を何度も書く必要がなく より少ないコード行数でテストを作成することが可能
参考資料 ▌初めての自動テスト ――Webシステムのための自動テスト基礎 https://www.oreilly.co.jp/books/9784873118161/