この記事は、CrossJoinテレグラムチャネルへの投稿に基づいています。
このアプローチについて話す前に、まず、ミューテーションテストが一般的に何であるかを簡単に説明します。知らない人のために。
ミューテーションテスト
TDDであるかどうかに関係なく、テストを作成する場合、正式な100%のカバレッジであっても、すべてが実際にコードでテストされているかどうかを確認することはできません。たとえば、テスト自体でassertを呼び出す際に間違いを犯す可能性があります。
assertEquals($a, $a);
そして、テスト中にさえいくつかのifに到達することができたとしても、このifのすべての条件が正しくチェックされているという事実ではありません。
テストが実際にテストされていることを確認するには、そのような方法があります。自分でコードにバグを導入し、テストがこれから外れるかどうかを確認します。テストがまだ緑色で、明らかなバグがある場合は、すべてがテストされているわけではありません。
たとえば、プラスをマイナスに変更したり、条件に「not」を追加したりして、テストが反応したかどうかを確認します。このアプローチは「ミューテーションテスト」と呼ばれます。
これは通常、プログラミングの非常に重要な領域で行われ、一般的にミスは許されません。たとえば、ローバーソフトウェアや医療ソフトウェア。
もちろん、ローバーの構築では、これはすべて自動的に行われます。特別なツールがプログラムの外観を損ない、テストが失敗したかどうかを確認します。
, , , , , . : AST, .
Mutation Driven Development
mutation driven development. TDD, .
- , ( )
- ( if). , , MDD (?) , 100% overage TDD.
, CI, , , MDD .
, , . mutation driven testing , . , .. , , , , , ., 95% , - -. , .
もちろん、今後の亜鉛販売の1つで突然変異主導型の開発について説明します。ポッドキャストを購読することを忘れないでください。