Submit Search
Upload
Php勉強会スライド
•
Download as PPTX, PDF
•
0 likes
•
125 views
S
suzumurashingo
Follow
2021/9/12 PHP勉強会
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 54
Download now
Recommended
pytest × TDD テスト駆動開発のススメ
pytest × TDD テスト駆動開発のススメ
iRidge, Inc.
テストを書こう!!
テストを書こう!!
拓 小林
ソフトウェアテスト入門
ソフトウェアテスト入門
iKenji
少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発
lnial
自動テストのすすめ
自動テストのすすめ
Katsunori Kanda
Casper導入資料
Casper導入資料
Yuuki Tan-nai
PHPのテスト名を日本語にした話
PHPのテスト名を日本語にした話
Norifumi Kawamoto
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
gree_tech
Recommended
pytest × TDD テスト駆動開発のススメ
pytest × TDD テスト駆動開発のススメ
iRidge, Inc.
テストを書こう!!
テストを書こう!!
拓 小林
ソフトウェアテスト入門
ソフトウェアテスト入門
iKenji
少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発
lnial
自動テストのすすめ
自動テストのすすめ
Katsunori Kanda
Casper導入資料
Casper導入資料
Yuuki Tan-nai
PHPのテスト名を日本語にした話
PHPのテスト名を日本語にした話
Norifumi Kawamoto
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
gree_tech
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
gree_tech
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
Go Sueyoshi (a.k.a sue445)
mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応
KyutatsuNishiura
Friendlyで始めるwindowsアプリシステムテスト自動化+内部使用技術解説
Friendlyで始めるwindowsアプリシステムテスト自動化+内部使用技術解説
Tatsuya Ishikawa
開発ワークフロー
開発ワークフロー
Cuong Nguyen Cao
Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化
Tatsuya Ishikawa
Twitter4Jとテスト
Twitter4Jとテスト
Yusuke Yamamoto
Unit testで定時帰宅!
Unit testで定時帰宅!
Funato Takashi
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
Kenji Fukumoto
.Netconf
.Netconf
Tatsuya Ishikawa
Shibya.trac #2: TracとTestLinkの合わせ技
Shibya.trac #2: TracとTestLinkの合わせ技
Toshiyuki Kawanishi
超簡単!!なTestLinkの使い方
超簡単!!なTestLinkの使い方
Cake YOSHIDA
「継続的デリバリー」読書会 第3章 継続的デリバリー
「継続的デリバリー」読書会 第3章 継続的デリバリー
Norikazu Hiraki
テストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテスト
Ohishi Mikage
Bindingからframework elementを見つける
Bindingからframework elementを見つける
Tatsuya Ishikawa
PHP agile test tips
PHP agile test tips
Tsutomu Chikuba
20150131 mvp com_camp_lt
20150131 mvp com_camp_lt
Toshiyuki Manabe
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
Shuji Watanabe
自動テスト知識体系TABOKのご紹介
自動テスト知識体系TABOKのご紹介
Shinsuke Matsuki
デプロイメントパイプラインって何?
デプロイメントパイプラインって何?
ke-m kamekoopa
TDDはじめる前に
TDDはじめる前に
Yasui Tsutomu
Gui自動テストツール基本
Gui自動テストツール基本
Tsuyoshi Yumoto
More Related Content
What's hot
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
gree_tech
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
Go Sueyoshi (a.k.a sue445)
mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応
KyutatsuNishiura
Friendlyで始めるwindowsアプリシステムテスト自動化+内部使用技術解説
Friendlyで始めるwindowsアプリシステムテスト自動化+内部使用技術解説
Tatsuya Ishikawa
開発ワークフロー
開発ワークフロー
Cuong Nguyen Cao
Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化
Tatsuya Ishikawa
Twitter4Jとテスト
Twitter4Jとテスト
Yusuke Yamamoto
Unit testで定時帰宅!
Unit testで定時帰宅!
Funato Takashi
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
Kenji Fukumoto
.Netconf
.Netconf
Tatsuya Ishikawa
Shibya.trac #2: TracとTestLinkの合わせ技
Shibya.trac #2: TracとTestLinkの合わせ技
Toshiyuki Kawanishi
超簡単!!なTestLinkの使い方
超簡単!!なTestLinkの使い方
Cake YOSHIDA
「継続的デリバリー」読書会 第3章 継続的デリバリー
「継続的デリバリー」読書会 第3章 継続的デリバリー
Norikazu Hiraki
テストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテスト
Ohishi Mikage
Bindingからframework elementを見つける
Bindingからframework elementを見つける
Tatsuya Ishikawa
PHP agile test tips
PHP agile test tips
Tsutomu Chikuba
20150131 mvp com_camp_lt
20150131 mvp com_camp_lt
Toshiyuki Manabe
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
Shuji Watanabe
自動テスト知識体系TABOKのご紹介
自動テスト知識体系TABOKのご紹介
Shinsuke Matsuki
デプロイメントパイプラインって何?
デプロイメントパイプラインって何?
ke-m kamekoopa
What's hot
(20)
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応
Friendlyで始めるwindowsアプリシステムテスト自動化+内部使用技術解説
Friendlyで始めるwindowsアプリシステムテスト自動化+内部使用技術解説
開発ワークフロー
開発ワークフロー
Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化
Twitter4Jとテスト
Twitter4Jとテスト
Unit testで定時帰宅!
Unit testで定時帰宅!
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
.Netconf
.Netconf
Shibya.trac #2: TracとTestLinkの合わせ技
Shibya.trac #2: TracとTestLinkの合わせ技
超簡単!!なTestLinkの使い方
超簡単!!なTestLinkの使い方
「継続的デリバリー」読書会 第3章 継続的デリバリー
「継続的デリバリー」読書会 第3章 継続的デリバリー
テストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテスト
Bindingからframework elementを見つける
Bindingからframework elementを見つける
PHP agile test tips
PHP agile test tips
20150131 mvp com_camp_lt
20150131 mvp com_camp_lt
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
自動テスト知識体系TABOKのご紹介
自動テスト知識体系TABOKのご紹介
デプロイメントパイプラインって何?
デプロイメントパイプラインって何?
Similar to Php勉強会スライド
TDDはじめる前に
TDDはじめる前に
Yasui Tsutomu
Gui自動テストツール基本
Gui自動テストツール基本
Tsuyoshi Yumoto
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
Hiro Yoshioka
How to Develop Experiment-Oriented Programs
How to Develop Experiment-Oriented Programs
Kenta Oono
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について
Rakuten Group, Inc.
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とは
Katsutoshi Makino
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
mafujiwara
レガシーコード読書会 20120618
レガシーコード読書会 20120618
Suguru Shirai
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
Hiro Yoshioka
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
Satoshi Watanabe
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
Kotaro Ogino
Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例
健一 辰濱
Gamedevenvstudy1
Gamedevenvstudy1
Takashi Kokawa
19-B-4 開発品質向上のための、ASQ/ALMソリューション
19-B-4 開発品質向上のための、ASQ/ALMソリューション
Developers Summit
Software Test Basic
Software Test Basic
Akinari Tsugo
GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
Hiroyuki Tanaka
8人の匠によるテスト戦略20080918
8人の匠によるテスト戦略20080918
ssugiya
自動テストで開発効率を上げるには
自動テストで開発効率を上げるには
Wataru Terada
Php development efficiency improvement
Php development efficiency improvement
伸幸 茂木
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
Kotaro Ogino
Similar to Php勉強会スライド
(20)
TDDはじめる前に
TDDはじめる前に
Gui自動テストツール基本
Gui自動テストツール基本
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
How to Develop Experiment-Oriented Programs
How to Develop Experiment-Oriented Programs
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とは
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
レガシーコード読書会 20120618
レガシーコード読書会 20120618
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例
Gamedevenvstudy1
Gamedevenvstudy1
19-B-4 開発品質向上のための、ASQ/ALMソリューション
19-B-4 開発品質向上のための、ASQ/ALMソリューション
Software Test Basic
Software Test Basic
GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
8人の匠によるテスト戦略20080918
8人の匠によるテスト戦略20080918
自動テストで開発効率を上げるには
自動テストで開発効率を上げるには
Php development efficiency improvement
Php development efficiency improvement
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
Php勉強会スライド
1.
すずむら @179Bell PHPにおけるテストの概要と実践 第33回PHP勉強会 講義
2.
① テストの目的 テストの種類 テスト自動化ツールとは 実際にやってみる!! 本日の流れ
3.
① テストの目的 テストの種類 テスト自動化ツールとは 実際にやってみる!!
4.
①テストの目的 • 作ったプログラムが設計通りに動くか確かめる •デグレーションを防ぐ (他人がプログラムに変更や修正を加えて、プログラムが正常に動かなくなること。) (大規模なシステムになるほど起こりやすく、見つからずにリリースされてしまうこともある。)
5.
テストのメリット • テストコードがドキュメントの役割を果たすので人が変わっても動き がわかる • プログラムが仕様通りに動いているかを確かめることができる •
テストを通しやすくするためにコードの質が高まる
6.
テストのデメリット • 仕様を変更したらテストコードをすぐに書き換えないと意味をなさない • 実コード、テストコードを用意するので開発にかかる時間が長くなる
7.
① テストの目的 テストの種類 テスト自動化ツールとは 実際にやってみる!!
8.
②テストの種類 •単体テスト •結合テスト •総合テスト
9.
②テストの種類 •単体テスト •結合テスト •総合テスト
10.
単体テスト • 開発環境でのテスト • メソッド、関数のテストでプログラムの最小単位のテスト (LaravelであればModel,Policy,Middlewareなど) •
これらのメソッドや関数が期待通りの実装になっているかテストする • 詳細設計に基づいてテストケースが作られる • 最小単位でのテストなので全体のバグ修正コストを下げることができる • ただしスケジュールの関係でテストを飛ばされたり、不完全になりやす い • 単体テストは注目する観点からブラック・ホワイトテストに分けられる
11.
ホワイトボックステスト •内部を意識したテスト •条件分岐、繰り返し処理、例外処理などあらゆるものの 動作確認をする •造り手側目線のテスト
12.
ブラックボックステスト •想定された出力や動作がされているかのテスト •要求仕様を満たしているかのテスト •ユーザー側目線のテスト
13.
フォームリクエストの単体テストの例 ✅フォームリクエストを使う目的 •バリデーションルールを外部クラスにまとめることができる •バリデーションルールをControllerから切り離すことでコードの量を減らす •Controllerの可読性が高まる •使い回しがきく
14.
データプロバイダでtestArticleRequestにわたす引数の説明 ※データプロバイダ テストメソッドに任意の引数を渡すことのできるアノテーション 次のスライドで内容を載せています テストメソッド
15.
アノテーションで宣言した名前と同じである必要があるので注意 データプロバイダ テストメソッドに渡す引数 $key $value
16.
②テストの種類 •単体テスト •結合テスト •総合テスト
17.
②結合テスト •インテグレーションテスト、ジョイントテストとも呼ばれる •はじめてシステムが連携されるのでここで不具合を発見する必要が ある •複数システム間でデータの受け渡しができているかなどを確かめる •単体テストよりも粒度が大きくControllerのテストが当てはまる
18.
②テストの種類 •単体テスト •結合テスト •総合テスト
19.
③総合テスト •システム全体が要件を満たしているかを確かめる •実環境(ブラウザ)やそれに近い環境でテストをする •カーソルを持っていったらホバーするかやボタンが変わるかな どをテストする
20.
実装 単体テスト 詳細設計 結合テスト 総合テスト 基本設計 要件定義 V字モデル
21.
(参考)テスト駆動開発とは TDD (Test Drive Development) GREEN RED
REFACTARING •仕様に基づきテストコードを書く •テストコードを実行するとエラーが発生する (実コードがないため) •テストを通るように実コードを書く •この時は確実にテストが通るように書く •グリーンで通ったコードをさらに読みやすくする •グリーンを通過する都度やったほうが手をつけやすい
22.
(比較)一般的な開発の流れ 1. 設計を決める 2. 設計に基づきコードを書く 3.
設計に基づきテストコードを書く 4. テストを実行する 5. エラーが起きた箇所を修正、リファクタリング
23.
TDDのメリット •後工程にバグを残しにくい → 初期段階で不具合の検知修正をするから •設計への理解が深まる → ・テストコードを書くために仕様を理解する必要がある ・テストコードと実装内容の乖離にも気付ける •開発の心理的負担が経る →
TDDであれば追加の機能が追加されるたびにテストされている から
24.
TDDのデメリット •仕様が変わるたびにテストコードを書き直す必要がある •開発時間がかかる → ・テストコードの品質を保つ必要がある ・開発方法の違いに慣れる必要がある •従来の開発方法とは異なるのである程度の経験と慣れが必要 → いきなりテストコードから書くのは難しい
25.
① テストの目的 テストの種類 テスト自動化ツールとは 実際にやってみる!!
26.
③テスト自動化ツールとは •入力したテストコードの実行を自動的に行い、エラーがあればその箇 所を表示する •テストに便利な機能が備えられており、定められた規約に沿ったテス トコードを書くことでテストを自動化できる •PHPならPHPUnit、RubyならRspecがある
27.
PHPUnitの使い方 •LaravelであればPHPUnitが標準装備されているのですぐに使える • php artisan
make:test ○○Test のようにテストファイルを作成する •作成したテストファイルは src/tests内に格納される •テストメソッドの中でアサーションメソッドを必ず使う(使わないと エラーが出ます)
28.
テストの命名規則 •ファイル名は〇〇Test.phpのようにテスト対象クラスに「Test」という 文字列をつける •テストメソッドの名称は「test」とメソッド名の前に付け加える •@testアノテーションをつけるとテストメソッドと示されるのでメソッ ド名を日本語で書ける
29.
① テストの目的 テストの種類 テスト自動化ツールとは 実際にやってみる!!
30.
Fakerを使ったダミーデータの作成 •Seeder → 少量のダミーデータの作成 •Faker
→ 大量のダミーデータを一気に作成できる Laravelのメソッド •Factory → ダミーデータを作るファイル
31.
Fakerの使い方 • php artisan
make:factory ○○FactoryでSrc/databases/factoriesの中にfactoryファイル が作られる
32.
Fakerの使い方 ダミーデータを入力するモデル名を入力 カラム名
33.
Fakerメソッド(一部)の紹介 •$faker->name → 名前 •$faker->postcode
→ 郵便番号 •$faker->email → メールアドレス • $faker->phoneNumber → 電話番号 etc… たくさんあるので調べてみて下さい!!
34.
ArticlesControllerでテストをする!
35.
テストケース① •indexメソッド ・HTTPリクエストが通りレスポンスが返るか ・一覧ページが表示されるか •create,storeメソッド ・作成画面に遷移できるか ・入力して保存、投稿一覧画面に戻るか •editメソッド ・編集画面に遷移するか
36.
テストケース② •updateメソッド ・編集して保存ができるか ・保存した値はDBに存在するか ・バリデーションエラーを起こしてみる ・一覧画面にリダイレクトするか •destroyメソッド ・投稿が削除できるか ・削除した値はDBに存在しないか
37.
ArticlesControllerTestの作成 ターミナルでphp artisan make:test
○○Testと入力 Src/tests/Featureの下にファイルができる
38.
indexメソッドのテスト factoryでダミーデータを作成する
39.
記事を投稿するには認証済である必要があるのでユーザーを 作成して認証済ユーザーとして振る舞う必要がある actingAs()がそれを行うメソッド テストのたびにDBをリセットするトレイト (リセットしないとDBに値が残ってしまう) 指定されたViewが返されているか確認するアサーション factory(Model名::class)でモデルに連携するfactoryを呼び出しダミーデータを生成することができる! indexメソッドを呼び出すリクエストのレスポンスを$responseに代入 返ってきたレスポンスのステータスコードを確認
40.
成功!! テストの実行 → ./vendor/bin/phpunit
tests/Feature/テストのファイル名 ※実行したいテストがUnitディレクトリの下ならFeatureをUnitに変える
41.
もしテストが通らなかった時 viewファイルを違うところに保存してみる テストコードで指定されたviewが返っていない、ArticlesControllerTestの34行目がおかしい。 HTTPレスポンスが返ってきていない
42.
create,storeメソッドをテストするその前に!
43.
$user = factory(User::class)->create(); $this->actingAs($user); これを毎回同じことを繰り返すのはよくない ※DRY(donot
repeat youself)の原則 setUpメソッドを使用して 繰り返し使うものを先に定義しておく! 同じものを何度も繰り返すのは避けよう!!
44.
✅setUpメソッド •各テストメソッドの実行前に呼ばれるメソッド •テストメソッド呼び出すたび処理される ✅tearDownメソッド •setUpと逆にテストメソッドの実行後に行いたい処理をするためのメソッド •テストメソッド呼び出すたび処理される ✅setUpBeforeClassメソッド •上記2つと異なりテストケース全体の前処理 •つまり一番最初のメソッドの前に一度だけ処理される ✅tearDonwAfterClassメソッド •setUpBeforeClassの逆の処理 •一番最後に実行されるメソッドの後で処理される フィクスチャ
45.
setUpメソッドを使って処理を共通化
46.
記事投稿機能のテスト
47.
create画面が表示されるかどうか GETリクエストを出してレスポンスが返ってくるか 記事投稿画面のviewが表示されるかどうか
48.
Categoryテーブルのためのデータを入れる ※ArticleテーブルはCategoryテーブルの子テーブル なのでデータを入れないとエラーが出る テストデータを$dataに格納してPOST送信 テストデータがDBに保存されているか確認 保存後一覧画面にリダイレクトしているか確認 記事を作成して保存する
49.
記事編集機能のテスト
50.
user_idをログインしているユーザのidにする (403が出てしまうので) ※403 : Unauthorized(権限がない) 記事編集機能のテスト
51.
更新するデータを登録 (全部入れないとエラーが出ます) updateメソッドで更新 DBに値があるか確認 一覧画面にリダイレクトするか確認
52.
記事削除機能のテスト
53.
deleteメソッドを実行 論理削除を使用することになっているので assertSoftDeletedでソフトデリートされているか確認 記事削除機能のテスト
54.
•今回のテストは手順を少なくするためにかなり省略してます •テスト用のDBを用意してテストを実行することが望ましいです •初学者が自力で調べてやったテストなのでテストケースなど間違っている場合 •使用したアサートはごく一部です。(たくさんあるので調べてみて下さい)
Download now