これは、asumikam #phpcon_odawara Advent Calendarの14日目の記事です🎄 本日は「テスト品質を向上させよう! 〜 アンチパターン回避メソッド 〜」の感想を書いていきます!
🤖 logmiさんのまとめ記事
何をテストするか・どのような状況とシナリオか・期待される結果は何か 明日からでもすぐにできるアンチパターン回避メソッド | ログミーBusiness テストカバレッジが100%でもそれが意味のあるテストかは断言できない Mutation Testでテストコード自体の検証をしよう | ログミーBusiness
Kanonさんの登壇が文字起こしされています、ぜひみにいってください🌸
感想
テスト品質を向上するための、「明日からすぐにできること」「継続的に取り組めること」「さらにその先のお話(Mutation Test)」というお品書きで登壇していただきました。 テンポよく基本から応用まで話してくれていて聞きやすかったです。
- 明日からすぐにできること
- テスト名を気にしよう: 「XはYのときZ」
- テスト名めっちゃ大事!!端的に仕様を表現できるとよいですよね
- 軽視されそうがち...だが、ちゃんとやるとよいぞ!と話してくれるところに信頼感があります
- AAAパターンを表明しておく
- 意外にこれめっちゃ大事なんですよね〜わかる〜
- 少しの努力で視認性めっちゃ上がりますもんね
- パラメタライズテスト
- いわゆる
dataProvider
適切に使おうね、ですね
- いわゆる
- エラーはキャッチせず、エラーを期待する
- テストコード中に、
willThrowException
を使わずに try-catch しているのをみかけた、という話 - 流石にこれはみたことないが、確かに知らないとこうなってまうか・・・!w 原体験を登壇に落とし込んでくれるのありがたい
- テストコード中に、
- テスト名を気にしよう: 「XはYのときZ」
- 継続的に取り組めること
- さらにその先のお話(Mutation Test)
- わざと"ダメなコード"に置き換えて、ちゃんと失敗するのか?をみる手法
- Killed / Survived
- わざと"ダメなコード"に置き換えて、ちゃんと失敗するのか?をみる手法
ぺちおだの登壇だとMutation Testはさわりだけだったので、他のアウトプットもdigってきました⚒️
まずは、この前のYAPC::Hakodateのやつです。「こんな感じでやるんだよ〜」と「こんな課題感と戦っていたよ〜」を話してくださっています。 お〜、マジでバグを埋め込んでくれるんだ、すげ〜。賢い・・・! まあ、そうなったら遅くなりそうだわな・・・という気持ちにもなりました。
▲ Playgroundも見つけたので遊んでみました。
100 + 0 = 100
というテストケースだとSurvivedしちゃいますね。たしかに。
▲ 100 + 30 = 100
というテストケースに手元に書き換えたらKilledになりました!おもしれ〜〜
そして、調べれば調べるほどKanonさんのアウトプットが出てくる!えらすぎる!! PHPでの使用感はこんなかんじなのかー、がわかりました。
Kanonさん、登壇ありがとうございました
さまざまな視点でのテスト品質の向上に取り組んでいることが伺えて、👏偉業👏というきもちになりながらみさせていただきました!! Mutation Test、ちゃんと運用に載せてうまく使ってそうだし、毎回ちゃんとアウトプットしてるのも素敵.......
登壇ありがとうございました!!あと、結婚祝いのビールも😆🍺!!!ww