Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Takeo Noda
PDF, PPTX
6,816 views
Laravelとテストについて
テストにまつわる話とLaravelでのテスト事例を紹介。
Engineering
◦
Read more
3
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 19
2
/ 19
3
/ 19
4
/ 19
5
/ 19
6
/ 19
7
/ 19
8
/ 19
9
/ 19
10
/ 19
11
/ 19
12
/ 19
13
/ 19
14
/ 19
15
/ 19
16
/ 19
17
/ 19
18
/ 19
19
/ 19
More Related Content
PPTX
HttpClient詳解、或いは非同期の落とし穴について
by
Yoshifumi Kawai
PPTX
Helidon 概要
by
オラクルエンジニア通信
PDF
日本語テストメソッドについて
by
kumake
PDF
C#の強み、或いは何故PHPから乗り換えるのか
by
Yoshifumi Kawai
PDF
JavaScript難読化読経
by
Yosuke HASEGAWA
PDF
What's new in Spring Batch 5
by
ikeyat
PDF
テストを書こう、Unity編
by
Hiroto Imoto
PDF
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
by
Unity Technologies Japan K.K.
HttpClient詳解、或いは非同期の落とし穴について
by
Yoshifumi Kawai
Helidon 概要
by
オラクルエンジニア通信
日本語テストメソッドについて
by
kumake
C#の強み、或いは何故PHPから乗り換えるのか
by
Yoshifumi Kawai
JavaScript難読化読経
by
Yosuke HASEGAWA
What's new in Spring Batch 5
by
ikeyat
テストを書こう、Unity編
by
Hiroto Imoto
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
by
Unity Technologies Japan K.K.
What's hot
PDF
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
by
Shinnosuke Tokuda
PPTX
Docker Tokyo
by
cyberblack28 Ichikawa
PDF
Ormとの付き合い方
by
豊明 尾古
PDF
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
by
Yoshifumi Kawai
PDF
Raspberry Pi + Go で IoT した話
by
yaegashi
PDF
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
by
増田 亨
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
PDF
Laravel の paginate は一体何をやっているのか
by
Shohei Okada
PDF
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
by
Takahiro YAMADA
PDF
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
by
Takahiro YAMADA
PDF
VPNはもう卒業!FIDO2認証で次世代リモートアクセス
by
FIDO Alliance
PDF
Laravelでfacadeを使わない開発
by
Kenjiro Kubota
PDF
C++ マルチスレッドプログラミング
by
Kohsuke Yuasa
PPTX
UE4エンジンソースをMacでビルドしてみた
by
Yuuki Ogino
PPTX
C#メタプログラミング概略 in 2021
by
Atsushi Nakamura
PDF
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
by
NTT DATA Technology & Innovation
PDF
例外設計における大罪
by
Takuto Wada
PDF
JDKの選択肢とサーバーサイドでの選び方
by
Takahiro YAMADA
PDF
今日からできる!簡単 .NET 高速化 Tips
by
Takaaki Suzuki
PDF
これからのJDK/JVM 何を選ぶ?どう選ぶ?
by
Takahiro YAMADA
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
by
Shinnosuke Tokuda
Docker Tokyo
by
cyberblack28 Ichikawa
Ormとの付き合い方
by
豊明 尾古
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
by
Yoshifumi Kawai
Raspberry Pi + Go で IoT した話
by
yaegashi
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
by
増田 亨
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
Laravel の paginate は一体何をやっているのか
by
Shohei Okada
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
by
Takahiro YAMADA
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
by
Takahiro YAMADA
VPNはもう卒業!FIDO2認証で次世代リモートアクセス
by
FIDO Alliance
Laravelでfacadeを使わない開発
by
Kenjiro Kubota
C++ マルチスレッドプログラミング
by
Kohsuke Yuasa
UE4エンジンソースをMacでビルドしてみた
by
Yuuki Ogino
C#メタプログラミング概略 in 2021
by
Atsushi Nakamura
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
by
NTT DATA Technology & Innovation
例外設計における大罪
by
Takuto Wada
JDKの選択肢とサーバーサイドでの選び方
by
Takahiro YAMADA
今日からできる!簡単 .NET 高速化 Tips
by
Takaaki Suzuki
これからのJDK/JVM 何を選ぶ?どう選ぶ?
by
Takahiro YAMADA
Similar to Laravelとテストについて
PPTX
LaravelアプリケーションをSeleniumでテストしてみた
by
Yuta Ohashi
PPT
ビジネス的に高価値なアジャイルテスト
by
Tsutomu Chikuba
PDF
Laravelから学びレガシーと闘いはじめた
by
Yuta Ohashi
PPT
PHP agile test tips
by
Tsutomu Chikuba
PPTX
Akito.Tsukahara.PHPerKaigi2020
by
Akito Tsukahara
PDF
Introduction to Continuous Test Runner MakeGood
by
Atsuhiro Kubo
PPTX
テストしなイカ? Seleniumで自動ブラウザテスト
by
Ohishi Mikage
PDF
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
by
Shohei Okada
PDF
第104回 php勉強会@東京 Laravel
by
JunKeun Lee
PDF
Getting Started with Testing using PHPUnit
by
Atsuhiro Kubo
KEY
EC-CUBE + PHPUnit で 実践テスト駆動開発
by
Kentaro Ohkouchi
PDF
あなたの安心を高速に守る Container-based CI
by
Wataru MIYAGUNI
PDF
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
by
Nozomi Ito
PDF
Laravelの5.3の新機能
by
シオリ ショウノ
PPTX
Laravel Controller→View
by
stylefreeslide
PDF
「Selenium実践入門」で学ぶテスト自動化の世界
by
Nozomi Ito
PPTX
Selenium IDE for primer
by
yasukoS
PDF
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
by
Kentarou Takeda
PDF
Laravel で API バージョニングを実装するなら
by
Shohei Okada
PDF
Laravelを用いたゲームサーバーのチューニング
by
NOW PRODUCTION
LaravelアプリケーションをSeleniumでテストしてみた
by
Yuta Ohashi
ビジネス的に高価値なアジャイルテスト
by
Tsutomu Chikuba
Laravelから学びレガシーと闘いはじめた
by
Yuta Ohashi
PHP agile test tips
by
Tsutomu Chikuba
Akito.Tsukahara.PHPerKaigi2020
by
Akito Tsukahara
Introduction to Continuous Test Runner MakeGood
by
Atsuhiro Kubo
テストしなイカ? Seleniumで自動ブラウザテスト
by
Ohishi Mikage
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
by
Shohei Okada
第104回 php勉強会@東京 Laravel
by
JunKeun Lee
Getting Started with Testing using PHPUnit
by
Atsuhiro Kubo
EC-CUBE + PHPUnit で 実践テスト駆動開発
by
Kentaro Ohkouchi
あなたの安心を高速に守る Container-based CI
by
Wataru MIYAGUNI
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
by
Nozomi Ito
Laravelの5.3の新機能
by
シオリ ショウノ
Laravel Controller→View
by
stylefreeslide
「Selenium実践入門」で学ぶテスト自動化の世界
by
Nozomi Ito
Selenium IDE for primer
by
yasukoS
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
by
Kentarou Takeda
Laravel で API バージョニングを実装するなら
by
Shohei Okada
Laravelを用いたゲームサーバーのチューニング
by
NOW PRODUCTION
More from Takeo Noda
PDF
スタートアップにやさしいAWS
by
Takeo Noda
PDF
Vue入門
by
Takeo Noda
PDF
Prometeusについてはじめてみよう / Let's start Prometeus
by
Takeo Noda
PDF
ディレクションのすゝめ
by
Takeo Noda
PDF
負荷テスト入門
by
Takeo Noda
PPTX
データ解析入門
by
Takeo Noda
PDF
Laravelの認証について
by
Takeo Noda
PDF
Zabbixで学ぶ統計解析入門
by
Takeo Noda
PDF
Zabbix入門
by
Takeo Noda
PDF
映像・音響機材入門
by
Takeo Noda
PDF
サイト運用者に向けたバージョン管理について
by
Takeo Noda
PDF
Laravel5を使って開発してみた
by
Takeo Noda
スタートアップにやさしいAWS
by
Takeo Noda
Vue入門
by
Takeo Noda
Prometeusについてはじめてみよう / Let's start Prometeus
by
Takeo Noda
ディレクションのすゝめ
by
Takeo Noda
負荷テスト入門
by
Takeo Noda
データ解析入門
by
Takeo Noda
Laravelの認証について
by
Takeo Noda
Zabbixで学ぶ統計解析入門
by
Takeo Noda
Zabbix入門
by
Takeo Noda
映像・音響機材入門
by
Takeo Noda
サイト運用者に向けたバージョン管理について
by
Takeo Noda
Laravel5を使って開発してみた
by
Takeo Noda
Recently uploaded
PDF
ソフトウェアエンジニアがクルマのコアを創る!? モビリティの価値を最大化するソフトウェア開発の最前線【DENSO Tech Night 第一夜】
by
dots.
PDF
ソフトとハードの二刀流で実現する先進安全・自動運転のアルゴリズム開発【DENSO Tech Night 第二夜】 ー高精度な画像解析 / AI推論モデル ...
by
dots.
PDF
音楽アーティスト探索体験に特化した音楽ディスカバリーWebサービス「DigLoop」|Created byヨハク技研
by
yohakugiken
PPTX
君をむしばむこの力で_最終発表-1-Monthon2025最終発表用資料-.pptx
by
rintakano624
PDF
krsk_aws_re-growth_aws_devops_agent_20251211
by
uedayuki
PDF
2025/12/12 AutoDevNinjaピッチ資料 - 大人な男のAuto Dev環境
by
Masahiro Takechi
ソフトウェアエンジニアがクルマのコアを創る!? モビリティの価値を最大化するソフトウェア開発の最前線【DENSO Tech Night 第一夜】
by
dots.
ソフトとハードの二刀流で実現する先進安全・自動運転のアルゴリズム開発【DENSO Tech Night 第二夜】 ー高精度な画像解析 / AI推論モデル ...
by
dots.
音楽アーティスト探索体験に特化した音楽ディスカバリーWebサービス「DigLoop」|Created byヨハク技研
by
yohakugiken
君をむしばむこの力で_最終発表-1-Monthon2025最終発表用資料-.pptx
by
rintakano624
krsk_aws_re-growth_aws_devops_agent_20251211
by
uedayuki
2025/12/12 AutoDevNinjaピッチ資料 - 大人な男のAuto Dev環境
by
Masahiro Takechi
Laravelとテストについて
1.
Copyright © Xchange
Solutions All right reserved. Fukuoka.php Vol.17 ~Rebooted~ Laravelとテストについて 株式会社エクスチェンジ ソリューションズ 野田 健夫 2016.06.22
2.
2 Copyright © Xchange
Solutions All right reserved. こんにちは! 野田 健夫(のだたけお) https://twitter.com/nodatakeo https://www.facebook.com/nodatakeo 株式会社エクスチェンジ ソリューションズ
3.
3 Copyright © Xchange
Solutions All right reserved. 今日の内容 1. 開発者に立ちはだかるテストの壁 2. なぜテストをやるのか? 3. テストの種類 4. テストへのジレンマ 5. Laravelテスト 環境構築 API編 ウェブページ編 その他 6. まとめ
4.
4 Copyright © Xchange
Solutions All right reserved. 開発者に立ちはだかるテストの壁 環境作るのが面倒くさい。 実装に比べて生産的でない感じがする。 単体テストはともかくとして、シナリオ テストが作りにくい。 時間がない。
5.
5 Copyright © Xchange
Solutions All right reserved. なぜテストをやるのか? 利用可能な状態を担保するため。 要件を満たしているか確認するため。 品質を高め、信頼性を上げるため。 システムが動かなかったり、品質が低いと 利用者・顧客の不利益になる。その リカバリーにかかる作業コストも大きい。
6.
6 Copyright © Xchange
Solutions All right reserved. テストの種類 単体テスト 結合テスト システムテスト メソッド・関数の期待値検査 APIスキーマ・HTMLコンテンツチェック シナリオテスト・脆弱性テスト パフォーマンス、ログ、サーバー周りなど これまでテスト自動化に悩んでいた領域 →xUnitテスト →debugbar、slowログ、jmeter、zabbixなど ※ウェブアプリケーションでの例
7.
7 Copyright © Xchange
Solutions All right reserved. テストへのジレンマ テストの必要性は理解しているけど、コスト高い のでは? 自動テストでできる検査って、ロジック以下の assertHoge系の値検査ぐらいしかなかったっけ? 調べてみたらLaravelでいろいろテストを 支援する仕組みが用意されていた。
8.
8 Copyright © Xchange
Solutions All right reserved. Laravelのテスト: phpunit よく使われているphpunitでのテストを ベースとしている。 composer dump-autoload ./vendor/phpunit/phpunit/phpunit tests composer dump-autoload ./vendor/phpunit/phpunit/phpunit --filter 'testContent' tests/api/ApiContentControllerTest.php ./tests 以下のテストケースをすべて実行する。 ./tests 以下のテストケースのうち特定のテストクラスでfilterして実行する。
9.
9 Copyright © Xchange
Solutions All right reserved. Laravelのテスト: 環境構築(Fixture) テストのフィクスチャ(Fixture:ベースとなるデー タ設定)に Seederを使う。 過去の案件では、.envのAPP_ENVをみて、環境ごとに切り替えれるSeederを用意。 abstract class BaseSeeder extends Seeder { /** * Get default seeds by table name * @param $target table name * @return void */ public function getConfig($target) { $config = require(base_path('database/seeds/default_'. config('app.env') . '.php')); return array_get($config, $target); } } class ContentSeeder extends BaseSeeder { /** * Run the database seeds. * * @return void */ public function run() { //削除 Content::truncate(); // コンテンツのデータ追加 foreach ($this->getConfig('contents') as $record) { $dao = new Content (); $dao->setUpRecord($record); $dao->save(); } } } テストの初期状態を共有
10.
10 Copyright © Xchange
Solutions All right reserved. Laravelのテスト: APIスキーマチェック seeJsonStructureメソッド キー名の配列を渡して構造をチェック assertResponseStatus/assertResponseOkメソッド HTTPステータスコードをチェック // JSONパラメータ $content = []; // メソッド $method = 'GET'; // URL $url = route("contents.get"); // サーバー環境変数 $server = $this->getServerParameter($method, $url); // JSONでAPIを呼び出し $this->withServerVariables($server) ->json($method, $url, $content, $server); // JSON構造のチェック $this->seeJsonStructure([ 'error', ‘content_list' => [ '*' => [ 'id', 'title', ], ], ]); // ステータスコードのチェック $this->assertResponseStatus(200); // レスポンス状態のチェック $this->assertResponseOk();
11.
11 Copyright © Xchange
Solutions All right reserved. Laravelのテスト: API値チェック seeメソッド レスポンス中に値が含まれるか検査が可能。 responseプロパティ レスポンス自体も取得できるので、値を抜き出せば、従来のassert チェックも可能。 $this->see('Laravel 5'); $response = json_decode($this->response->content(), true); $this->assertEquals('Laravel 5', $response['title']);
12.
12 Copyright © Xchange
Solutions All right reserved. Laravelのテスト: WEBコンテンツチェック visitメソッド URLにアクセス。 typeメソッド 指定IDフォームに入力。 pressメソッド 指定IDボタンを押下。 seePageIsメソッド 現在URL値をチェック。 $this->visit(route('admin.logout')); $this->visit(route('admin.login')); $this->type('a@aaa.com', 'login_id'); $this->type('testpw123', 'login_pw'); $this->press('action'); $this->seePageIs(route('admin.top')); $this->see('TOPページ'); シナリオテストの動作チェックが可能。
13.
13 Copyright © Xchange
Solutions All right reserved. Chrome Extension: Laravel TestTools
14.
14 Copyright © Xchange
Solutions All right reserved. Chrome Extension: Laravel TestTools 開発ツール(ctrl+shift+i)のタブに「Laravel TestTools」が追加。 Selenium IDEの記録のような形で[Record]ボタンを押下すると テストコードが生成されます。
15.
15 Copyright © Xchange
Solutions All right reserved. DB値のチェック seeInDatabaseメソッド テーブル内に指定したキーのレコードがあるかチェック。 $this->seeInDatabase('users', ['email' => 'sally@example.com']);
16.
16 Copyright © Xchange
Solutions All right reserved. Test用Trait Illuminate/Foundation/Testing/DatabaseMigrations.php (Trait) テスト開始時にマイグレーションを実行し、終了後にマイグレーションロールバックする。 Illuminate/Foundation/Testing/DatabaseTransactions.php (Trait) テスト開始時にトランザクションを開始し、終了後にロールバックする。 Illuminate/Foundation/Testing/WithoutEvents.php (Trait) すべてのイベントを抑止して余計な処理を発生させない。 Illuminate/Foundation/Testing/WithoutMiddleware.php (Trait) すべてのミドルウェアを抑止して余計な処理を発生させない。 Illuminate/Foundation/Testing/Conserns/* (Trait) テスト向けの各種実装。see*系(seeJsonStructureなど)は、ほかのフレームワークでも参考になると 思います。
17.
17 Copyright © Xchange
Solutions All right reserved. まとめ テスト自動化は、テストの壁を低くする。 開発してリリースしておしまいでなく、開発が継続する案件 が増えている。デグレを避けるためにも必須になりつつある ように感じている。 フレームワークが持っているテストの仕組みを使うことでAPI スキーマテストやシナリオテストといったより複雑なテスト 自動化をシンプルに行うことができる。 テストは放っておくと腐る。テストが適切に行われるよう仕 様変更や動作が変わった場合は、メンテナンスを必ず行う。
18.
18 Copyright © Xchange
Solutions All right reserved. 番外編:GuzzleでAPI/シナリオテスト GuzzleもAPIクライアントとしてだけでなく テストにもシンプルで使い易いと思います。 public function __construct() { $this->endPoint = "https://hoge.jp"; $this->client = new HttpClient($this->endPoint); } /** * OAuth 認証ページテスト * @Test */ public function testAuthorization() { $this->endPoint = “https://hogehoge.jp”; $this->client = new HttpClient($this->endPoint); // rfc6570 $uri = array(‘/auth/authorize?response_type={response_type}&client_id={client_id}&state={state}’, array(‘response_type’ => ‘code’, ‘client_id’ => ‘demoapp’, ‘state’ => session_id())); // リクエストを作成 $request = $this->client->get($uri); // レスポンスを取得 $response = $request->send(); // 値検査 $this->assertEquals(200, $response->getStatusCode()); }
19.
19 Copyright © Xchange
Solutions All right reserved. 番外編:テストを取り巻く技術要素 Behat/Mink/PHPSpec PHPUnit Framework Unit Testing Library Unit Testing 単体テスト 結合テスト Selenium BDD ※どこまでテストケースに書くかは案件内容と設計内容による。
Download