こんにちは😀
今回は、以前まとめたプログラムのテストに関して追加でいくつかまとめます。
テストでモジュール間のインターフェースを確認する方法には、トップダウンテストやボトムアップテストがあります。
トップダウンテストに関して
個々のモジュールが持つ機能を使って、より複雑な機能を実現するのを上位モジュールと言います。
上位モジュールから、先にテストを済ませていくのがトップダウンテストになります。
構成としては、上位モジュールに仮モジュールであるスタブと接続してインターフェースの確認を行ないます。
ボトムアップテストに関して
トップダウンとは逆に、下位モジュールからテストを行うのをボトムアップテストと言います。
下位モジュールにドライバと呼ばれる仮のモジュールを接続してインターフェースの確認を行います。
この他には、トップダウンテストとボトムアップテストを組み合わせて結合テストを行う折衷テストや、全てのモジュールを接続してテストを行うビッグバンテストなどがあります。
リグレッションテストに関して
プログラムを修正した時に、その修正内容がこれまで正常に動作していた範囲に新たなバグを誘発していないかを確認するテストをリグレッションテストと言います。
日本語で、退行テストとか回帰テストと言います。
バグ管理図に関して
横軸でテスト項目の消化件数、縦軸で発見したバグの累積件数を表した図をバグ管理図と言います。
品質の良いプログラムであれば、信頼度成長曲線を描きます。
この信頼度成長曲線とは、バグが途中から加速度的に発見され、最終的にバグ件数は頭打ちになって収束する線を描くものを指します。
テスト完了に関しては、バグが全て解消したことだけで評価はされません。
プログラムの品質を評価するために、どのくらいのコード量でどのくらいの頻度でバグが出たかを管理します。
今回の一言・・・
どんなプログラムでも必ずバグは出ます。
それを洗い出すのが単体テストや結合テストになり、コード量に応じたバグの量でプログラムの正常さを判断されます。
なので、テストの工数を計る時もある程度のバグが出ることとその修正のための時間も見積もっておく必要があります。
リグレッションテストなども何度も行う必要が無いように工夫する必要があります。
経験上、テストを自動化するなど様々試したことはありますが、その自動化を作成したり修正したりで工数を取られるなどスマートに行かないことも多いです。
結果的には、プログラムの設計段階からテストを考慮したプログラムを設計するのが後々プラスになってきます。
今回はここまで🤚
では、また次回。
コメント