新人技術者のためのロジカル・シンキング入門(9) ―― メモリ転送速度の最適化設計
【3】最適化によるバグに注意(2/2)
● テスト実施を自動化して対応
テスト・ケースを実施するのにも時間がかかるため,テストの効率化も実は必要となってきます.テストの効率化というと,まず,
・不要なテスト項目を省いて工数削減
というアプローチが考えられます.しかし,効率化の手段がこれだけしかない場合は問題です.なぜなら,このアプローチはしばしばテスト項目の省きすぎにつながるからです.差し迫った開発工数の中で「多分大丈夫なはずだ」と考えて,テストを大幅に省略してしまう誘惑に勝つのは容易ではありません.従って,
・テストの自動化による工数削減
という別のアプローチが有効だと考えられます.具体的には,テストそのものをプログラム化してしまうことでテスト工程を自動化し,テストにかかる工数を少なくしながら,テストを確実に実施できるようにするわけです(図7).
図7 テスト実施の自動化
最適化作業中の品質劣化を防ぐためには,適切なテストを効率良く実施することが不可欠である.よく用いられるのは,テストそのものをプログラムによって自動化してしまう方法である.もちろん,テスト・ケースそのものが適切に工夫されていることが前提となる.
組み込みモジュールの場合,リファレンス・モデルが出力する期待値との一致をもってテストの合否を判定するケースはよくあります(2).このような場合,テスト・プログラムが動作パラメータを受け付けられるようにしておけば,パラメータの組み合わせをスクリプトでテスト・プログラムに与えられます.こうすると,何千通りのテスト・パターンがある場合でも,テストそのものはスクリプトで自動化されているので,人間の作業は新しいモジュールをテスト環境に結合する作業だけとなります.スクリプトの動作時間は長いかもしれませんが,十分なCPU速度を備えたパソコンを用意するなどによって短縮できるでしょう.テスト・プログラムを夜間に動作させるようにすれば,わずかな修正→終夜運転による再テスト→翌日リリース,というステップを踏むことができます.この方法なら,テスト項目をあれこれ削ってテスト工数を削減するよりも確実な品質が見込めます.
● テスト・ケースの中身が大事
もちろん,実施するテスト・ケースそのものに無駄や漏れがあっては,いくらテストを自動化しても品質の劣化は防げません.自動化の前提には,テスト・ケースが適切に確立されていることが前提となります.テスト・ケースが不十分であったり,偏りがあって的確にバグが洗い出せないものであった場合には,ただやみくもにテストを自動化したとしても,バグ混入は避けられないでしょう.テストは,実施方法が自動化されている,いないにかかわらず,まずテスト・ケースが適切に組み立てられていることが重要なのです.
tag: 技術教育