PHPのTestの関数名を日本
語にした話
PHPUnitのテスト名を日本語にした
もくじ
導入前の社内のテストの状態
なぜ日本語にしようと思ったのか
日本語導入のために決めたルール
導入後の利点
導入後の問題点
改善案
参考
導入前の社内のテストの状態
● カバレッジがそもそも低い X0%
● テストが本当に正しいのかわからない
● CI(Jenkins)でみたときに失敗しているテストが探しづらい
● testメソッドの命名規則がない
● あまりテストを書かない
● 変更に弱いテストが多い
なぜ日本語を導入しようと思ったのか
● テストが足りているのかわかりづらい(コードレビューの際の負荷)
● オフシェアはやめた
● このタイミングでテストのルールを決めたい
● PHPSpecはSpecの管理が現在のシステムだと難しい(Composerがうまく使
えない)ので却下になった
● 新しく書いたテストと今までの質の悪いテストを区別したい
● テストを他のメソッドから呼ぶことはない(日本語でこまらない)
日本語導入のために決めたルール
● context (条件)と it (結果)をメソッド名に含める (基本的にこれだけ)
ex .
function ユーザーが男性の時にtrueを返す()
{
$user = new User();
$user->sex = User::MAN;
$this->assertTrue($user->isMan());
}
導入後の利点
● レビューの時にテスト内容の不備がすぐに分かる
● テストが上手く書けない時にメソッドの設計を見直しやすくなる
● CIでこけてもわかりやすい
● テストだけでなくコードもやっていることが自然と明確になった
● テスト名の中で複数のassertを書きにくくなった
● BDDとかTDDしやすくなっている
実際の問題点(今のところ)
● 海外の人を雇うことになってその人のハードルが高くなった
● 『何か変派』の登場
改善案
● 日本語を頑張ってもらう(すまぬ。。。)
● 『なにか変派』にはより説明していく(この資料とか)
参考
● JUnit実践入門
● これであなたもテスト駆動開発マスター!?和田卓人さんがテスト駆動開発
問題を解答コード使いながら解説します~現在時刻が関わるテストから、テ
スト容易性設計を学ぶ #tdd
● 日本語のテストメソッドについてどう思いますか?
● テストメソッドを日本語で書くことについて
きちんとチームの同意をとって
ご利用は計画的に

PHPのテスト名を日本語にした話