サーバーサイドエンジニアの田実です! YappliのPHPアプリケーションに symfony/panther を使ってJavaScriptの処理を含めた自動テストを導入したので、 導入の背景とインストール方法などを紹介をしたいと思います。 ※この記事は PHP Advent Calendar 2022 の16日目の記事です! 背景 インストール方法 PHPUnitの設定 環境変数の設定 実装方法 その他TIPS まとめ 背景 Yappliの機能のフロント部分はほとんどがネイティブアプリで作られているのですが、一部WebViewで作られている機能もあります。 また、社内用の管理画面もJavaScriptを利用しています。 これらの機能や画面の変更頻度は高く、JavaScriptによる不具合も発生していました。 自動テストがなかったので、ミドルウェアやライブラリのアップグレードの障壁にもなって
品質の高いコードを書くには、TDD(テスト駆動開発)ではなくてもテストを念頭に置いてコーディングする必要があります。ところが、数あるPHPのテストツールから必要な機能は備えつつも、重すぎない適したツールを選ぶのは大変です。 そこで2017年時点でおすすめする、8つのテストツールを紹介します。 PHPUnit PHPUnitは幅広く使えるテストフレームワークです。2014年にSebastian Bergmannが開発し、最新版はバージョン6。PHP 7が必要です。 Cucumber Cucumberは仕様に基づいて受入れテストを作成するフレームワークです。自然な文章の説明文を生成することで有名です。Cucumberの公式なPHPの実装はBehatです。 Behatの初心者向けチュートリアルです。以下のサンプルで、期待される動作がどう表現するのか分かります。 Feature: Listing
(最終更新:2017-09-11) PHPUnitなどを使いアプリのテストを書いているプログラマーのみなさんはコードカバレッジも計測していることと思います。 ここで、カバレッジの目標としてはどれくらいがいいでしょうか? 以前、名古屋のPHPの勉強会でカバレッジの目標を定めているか?という質問を参加者にした時、目標を定めている人はいませんでした。 最近はPHPやCodeIgniterユーザでもテストを書いていない人は減ってきていますので、カバレッジについても興味を持っている人も増えていると思います。 私のアプリのカバレッジの目標 私の結論としては、一般論として、PHPのWebアプリのカバレッジ(PHPUnitでのラインカバレッジ)の目標は80%です。 それくらいあると、何かAPIを変えてしまったりして一部が動作しなくなっても、だいたいテストで検出されます。もちろん漏れることもありますが。 C
はじめに テストデータを生成する方法を探していて、最終的に Faktory + Faker の2つのライブラリを使用して作成することにしてみました。今回はその手順を纏めてみました。 使用するライブラリについて テストオブジェクト作成用のライブラリです。Rails 等だと FactoryGirl と呼ばれるものがあるかと思いますが、Faktory はそれに非常に近い作りになっていると README.md を確認している中で個人的に感じました。FactoryGirl-PHP というモロにそれな奴もあったのですが、Faktory のほうが README.md が丁寧に書いてあること、最終 commit が近いことから、Star の数は劣るものの Faktory を選択することにしました。 テストの偽造データ作成用のライブラリです。英語のデータだけでなく日本語のデータ作成も簡単におこなえることが公
▼ [PHP] PHP の ::class を使うとテストコードがスッキリするよね、という話 会社でコードレビューをして貰っているときに ClassName::class という表記のコメントを貰った。え?「::class」ってなに?と思って調べてみると、PHP 5.5 からこの記法が追加されていた。 PHPマニュアル - クラスの基礎 ::class PHP 5.5 以降では、class キーワードでクラス名の解決ができるようになりました。 ClassName クラスの完全修飾名を文字列で取得するには、 ClassName::class とします。 これは、 名前空間つきのクラスと組み合わせると特に便利です。 これを知ってなるほど!!!と思って、さっそく使い始めた。 例えば、Phake でモックを作るときに、今まではこんな風に書いていた。 これを ::class で書き換えると、こうなる
Konstantin Kudryashov - Design How Your Objects Talk Through Mocking at Laracon EU 2014 - YouTube BehatやPhpSpecの作者である@everzetによるLaracon EU 2014での講演です。 英語が苦手なので翻訳することはできませんが印象的かつ聞き取れた部分を要約して紹介します。 モックはデータベース接続等の遅い部分をテストから分離して速くするためのものだと思われているが、それは誤解だ(そのような目的ではFake Implementationを使う)。 モックは、結果や状態に注目したクラシカルなTDDでは隠されていたオブジェクト間のメッセージングをさらけだし、設計の問題を明らかにするデザインツールだ。 メッセージングではなく、結果をさらけ出そうとするのなら、コードにさらにgette
This project follows a Code of Conduct. Build statuses Master: Requirements PHP >= 5.6.0 to run the formatter. Note that the formatter can parse even a PHP file version 4 in case needed. HHVM is not supported. Plugins Sublime Text 2/3 Vim PHPStorm PHPStorm beta Usage $ php fmt.phar filename.php $ php fmt.phar --help Usage: fmt.phar [-hv] [-o=FILENAME] [--config=FILENAME] [--cache[=FILENAME]] [opt
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く