ソフトウェアテストの勉強を始めると、「動的テスト」と「静的テスト」というテスト手法が出てきます。
ご存知の方も多いかもしれませんが、今回はその「動的テスト」と「静的テスト」に関してご紹介したいと思います。

ざっくりと言うと、
・プログラムを動かしながら行うテストを「動的テスト」
・動かさずにテストすることを「静的テスト」
と言います。(当たり前ですがこれが大事!)

さて、それでは改めて、
それぞれどのような特徴があるのか把握していきましょう。

動的テストがぜんぶわかる!特設サイトはコチラ!

動的テスト

動的テストとは、プログラムコードを実行して、その結果からソフトウェアのバグ検出や品質評価、動作確認を行うテスト方法のことです。

〇実施方法の例

テスターによる機能テスト

テストの担当者(テスター)が実際の製品を動かしながら、仕様通りの機能になっているのか、動作に問題はないのかを確認する。
テスターは、プログラムの中身を意識しない、ブラックボックステストの状態で行われることが多い。

開発者による動作確認・デバッグ

開発者がデバッガなどを使用して、作成したプログラムが意図した通りに動いているのか確認する。
プログラムの内部の構造を把握して、実行経路の動作を確認するので、いわゆるホワイトボックステストに該当する。

動的テストツールを使用したテスト

動的テストツールを使用し、内部構成を把握したうえで機能テストを行う。
実行時間の測定やカバレッジの計測などの機能を有しているので、テスト結果の分析を容易にすることができる。
ブラックボックステストとホワイトボックステストの中間にあたるので、グレーボックステストと呼ばれる。

〇動的テストのメリット・デメリット

メリット

・実際に動作させて、製品仕様を満たしているか確認できる。
・実際に動作させることで、パフォーマンスやユーザビリティの観点からテストを行うことができる。
(そもそも仕様に問題はないのかを検証できる。)
・動的に(実行中に)状態や論理が変化することによって引き起こされる問題を見つけることができる。
(タイミング依存の問題など)

デメリット

・動的テスト行うためには、モジュールを作成したり、ソフトウェアを動作できる状態にする必要がある。
・不具合の検出は、テスターのテクニック等によって差が出やすい。

静的テスト

静的テストとは、プログラムコードを実行せずに、ドキュメントやソースコードなどのチェックによって誤りや脆弱性を検出するテスト手法のことです。

〇実施方法の例

レビュー (目視によるチェック)

作成した仕様書やコードなどを、作成者とは別の人が評価し、計画した結果との違いを分析・改善を提案する。

静的解析ツールを使ったチェック

ソースコードを解析し、ソースコード上に存在するさまざまな問題を、プログラムを実行せずに発見する。
コーディングルールチェックや、制御フローの解析、コードの複雑度の分析などが行える。

〇静的テストのメリット・デメリット

メリット

・ソフトウェアの内部構造に関する欠陥(規格からの逸脱や要件の欠陥など)の検出に有効。
・ソフトウェアを動作させる必要がないので、開発プロセスの早期に実施し、欠陥を検出・修正できる。
・静的解析ツールを使い、機械的にコードのチェックができる。

デメリット

・パフォーマンスや仕様の欠陥の検出など、ソフトウェアを実際に動作させないと検出しにくい問題に関しては、静的テストでは不向き。
・ツールによる静的解析は、機械的にチェックをするため、指摘事項が膨大になりやすい。
(チェックのレベルやルールの設定をしたり、エラーの解析に時間がかかる場合がある。)

最後に

いかがだったでしょうか。「動的テスト」と「静的テスト」、それぞれに得意不得意なことがあり、お互いに補完しながら実施することで、より高い効果が期待できます。
特徴をつかみ、ソフトウェアテストを実施するための参考にしていただければと思います。

【 無料セミナー 】
レガシーコードをいじる前に知っておいてほしい「動的テスト」の3つの使い方

レガシーコードやOSSなどの資産を使ったソフトウェア開発では、ベースコードへの理解は最重要。
しっかり理解せずに開発してしまうと、あとで不具合発生の温床になってしまうことも。
そんなときこそ、ソフトウェアの実挙動を解析する「動的テスト」の出番。
はじめましてのソースコード相手でも短時間でかなり深く理解できる仕組みをご紹介します。

お申し込みはこちら!

<参考文献>

「ソフトウェアテスト教科書 JSTQB Foundation 第3版」翔泳社