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
PHPで作られたウェブシステムへの自動テスト導入について
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
_syotarow
September 25, 2018
Technology
410
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PHPで作られたウェブシステムへの自動テスト導入について
社内向け勉強会用資料です。
_syotarow
September 25, 2018
Other Decks in Technology
See All in Technology
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
820
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
200
DWH の限界突破! AI エージェント向け爆速リアルタイムデータ基盤 ClickHouse
jozono
1
490
大型犬好きによるPugの紹介
yamanoku
1
160
Refining Active Record
shugo
0
160
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.7k
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
440
スプシの手作業からの解脱 ~更新はClaude Codeに、見せ方と使い方はGASアプリに任せる~
kentarofujii
0
160
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
1k
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
200
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
270
AI コーディングと人間の認知スループット / CTO Night & Day 2026 Morning Session / AI Coding and Human Cognitive Throughput
prog893
4
1.2k
Featured
See All Featured
Abbi's Birthday
coloredviolet
4
10k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
330
The Cult of Friendly URLs
andyhume
79
7k
The SEO Collaboration Effect
kristinabergwall1
1
590
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
Large-scale JavaScript Application Architecture
addyosmani
516
110k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
We Are The Robots
honzajavorek
0
400
Transcript
自動テスト導入について ソリューション事業部 システム課
システム開発におけるテストとは ソフトウェアテスト (Software testing) は、コンピュータのプログラ ムから仕様にない振舞または欠陥(バグ)を⾒つけ出す作業のことであ る。ソフトウェアテストで⾒つかったプログラム中の欠陥を修正する作 業をデバッグという。ソフトウェアテストに成功するとは、テストで欠 陥が発⾒されるか、規定した試験項目にすべて合格するか、規定した品 質目標に到達することである。目標とした品質には、規定した試験項目
にすべて合格することもある。例えば、OS, プログラミング言語では、 仕様を満たしているかどうかの適合試験を規定している。(Wikipedia より)
Webシステムにおけるテストの種類 • 機能試験(Functional Test、Unit Test) • 結合試験(Integration Test) • 総合試験(Acceptance
Test、User Interface Test、End to End Test) • 性能試験(Performance Test) などなど
Webシステムにおけるテストの種類 • 機能試験(Functional Test、Unit Test) • 結合試験(Integration Test) • 総合試験(Acceptance
Test、User Interface Test、End to End Test) • 性能試験(Performance Test) などなど
DA社のUIテストの現状 • 開発者⾃⾝が各種ブラウザを⽴ち上げて動作確認 • 少し大き目のタスクだと開発者以外のテスター要員をアサイン • 影響のある個所をある程度把握する必要がある
DA社のUIテストの現状 • 開発者⾃⾝が各種ブラウザを⽴ち上げて動作確認 ⇒テストスキルによって結果が変わる • 少し大き目のタスクだと開発者以外のテスター要員をアサイン ⇒仕様理解不⾜により、テスト項目の抜け、誤認等 • 影響のある個所をある程度把握する必要がある ⇒過去のチケット、リビジョンの洗い出し。確認
昨今のテスト
昨今のテスト
昨今のテスト • テストコードを書く(⇒テスト仕様書の代わり) • 開発に入る前にテストコードを書く(⇒詳細仕様書の代わり) • CIツールと連動して結果を共有(⇒エビデンスを共有) • テストが通ったら⾃動リリース(⇒受入テスト後即リリース)
そこまでやらなくても、、 • 各開発者がやっているテスト(受け入れテスト)作業の根幹(これが 動かないとヤバい︕)を⾃動化出来れば負担が減る • 上記がコードとして残っていけば、次回同じところに手を入れる人が、 どのような動きをすれば正解なのか。がテストコードとブラウザの動 きを⾒ればわかる。 • Docker導入により、各開発者が進めているコードの状態でWeb
サービスが確認出来る。+CI(Jenkins)でトリガーはフック出 来ている状態。
という訳で早速調査 • UIテストを⾏うには︖ • PHPテストフレームワークの流⾏り廃り(テストコードもPHPで) • Jenkins経由でテストするには︖(⾃動化するため)
という訳で早速調査 • UIテストを⾏うには︖ ⇒Selenium+各種Webブラウザのドライバー • PHPテストフレームワークの流⾏り廃り(テストコードもPHPで) ⇒PHPUnit、Behat、atoum、Codeception、php-webdriver • Jenkins経由でテストするには︖(⾃動化するため) ⇒ビルド手順に追加するだけでOK︕
Selenium Seleniumはブラウザを自動化します。それでおしまい︕その⼒でやることは、あ なた次第です。主に、テスト目的でWebアプリケーションを⾃動化するための ものですが、それだけではありません。退屈なWebベースの管理タスクも⾃動 化することができます。 Seleniumは、Seleniumをブラウザのネイティブにするための手順をとっている (または⾏っている)最大のブラウザベンダーのサポートを受けています。無 数の他のブラウザ⾃動化ツール、API、およびフレームワークの中核技術でも あります。 (公式サイトより)
Selenium • 各種ブラウザをプログラムを介して動かすためのライブラリ群(Java 製) • 様々なPG言語で記述できるようにラッパーが揃っている • 実際に動かすためには各ブラウザのドライバーが必要で、このドライ バーがブラウザを操作する。 •
ドライバーとテストコードをつなぐためのアプリケーション
Codeception • 単体で動くPHPテストフレームワーク(PHPUnitを内包し、 Seleniumとの連携も簡単) ⇒様々なウェブシステムで導入しやすい。ノウハウがためやすい • 初⾒でも読みやすいコード • jQueryライクなDOMセレクタが搭載 •
受け入れテストの他に単体、結合テストも実施可能
Codeception
Codeception I want to test TOPページからの検索チェック I comment 検索を実⾏して⼀覧が表⽰するか確認します。 I
wait ajax load I am going to 未処理リンクをクリックして⼀覧に遷移します I grab text from #I110 I click 未処理 I grab text from ****** I see 対象件数 in ****** I see 【件数】 in ******
全体像
結果のフィードバック
導入してみて • ⾃動でチェックしてくれている。という安心感 ⇒全ては網羅出来ないが、致命的なエラーはチェック出来ている。 • テスト実施時間の⻑期化 ⇒ローカルでの実施手順確⽴。テストケースを絞る。 • テスト用セレクタの整備、ルール作り ⇒class="test̲****"はテスト用のエレメントなので
クラス名を消さない等
まとめ • 敷居が⾼いかな︖と思ったが、導入は案外簡単 ⇒Seleniumインストール+各ブラウザのdriver設置 • ⾃動となるとGit+CI(Jenkins等)の組み合わせが必須 ⇒ブランチベースで処理が進むため • テストコードを記述する事を習慣化させる事が大切。 ⇒今回のような勉強会を通じて必要性を布教。
テストコード⾃体のレビューを実施(テストスキル向上) • PHPが書けないフロントエンドエンジニアはどうするの︖︖ ⇒JSのテストフレームワークもあるので、それを採用するのもアリ
参考URL • ⼀休.comのE2Eテスト事情 ~Selenium 3.0 対応~ /seleniumjp4̲ikyu https://speakerdeck.com/shotaakasaka/seleniumjp4-ikyu • グーペのE2Eテスト運用事情
https://speakerdeck.com/hypermkt/gupefalsee2etesutoyun-yong-shi-qing • DevLove関⻄: E2E ゼロから⾃動まで、テストの旅 https://speakerdeck.com/shenril/devloveguan-xi-e2e-zerokarazi-dong-made- tesutofalselu?slide=11 • E2Eテストの導入から学んだこと https://qiita.com/mt0m/items/7e18d8802843d9f60d28