コード解析とは、ソースコードを解析し、問題点を見つけ出す作業です。静的コード解析といったツールを使えば効率的に進められます。
コード解析とは、ソースコードを解析し、エラーやバグといった欠陥がないか検証する手法です。ソースコードは、コンピューターに対する命令を書いた文字列ですが、人の手ですべてコードレビューするとなれば時間も手間もかかり過ぎます。
コードレビューは、他の誰かが書き上げたプログラムを、第三者が適切かどうかチェックする作業です。ただ、人がすることですからミスは起きるのはしかたありません。特に大規模、複雑化したソフトウェアを細部まで人の手で完璧にチェックするのは大変です。そのときコード解析の手間と負担を軽減するコード解析ツールを使うことで、人的ミスの減少が期待できます。
静的解析は、コードを実行しない状態で検証することです。低コストで、導入しやすく、命令規約違反や、インデントのような書式の問題を検出できます。コーディング時という早い段階でエラーを検出でき、プロジェクトで共通したコーディングスタイルを進められることで、コード可読性と保守性のアップが期待できるのです。
ベテラン開発者のコーディング習慣を、経験の少ない開発者が習得できるという利点もあります。また、レビューで、設計といった高度な問題に集中できるのも利点です。
動的解析もあります。静的解析ではプログラムコードを実行しませんが、動的解析では逆です。プログラムコードを実際に実行し、バグの検出、品質評価や動作確認をします。
他にも、開発者がデバッガを使用し、意図した通り動いているか確認します。開発者がデバッガを使って意図通りプログラムが動作するか確認するのも動的解析です。
実際に動作させるわけですから、より明確に製品仕様を満たしているかチェックできます。パフォーマンスやユーザビリティという観点でテストしたいとき、仕様そのものに問題がないか確認するときも有用です。
実行中、状態、論理が変化することがあります。そのときどんな問題が出るかも見つけられるのもメリットです。ただし、モジュールの作成やソフトウェアが動く状態にする必要があるほか、テスターのテクニックに依存するため、不具合の検出に差が出るといったデメリットもあります。
コード解析で使われるツールは、静的解析ツール、構造解析ツールです。静的解析ツールは、ソースコードを解析してさまざまな情報を取得できます。決められた形式に従い、ソースコードが記述されていない箇所の検出。他にもバグの検出や、ソースコードの品質と複雑さの目安になる数値の測定です。
構造解析ツールでは、ソースコードを解析し、クラス、関数といったモジュール同士の関係、処理の流れを図やグラフにして、システム構造の把握をサポートします。
コード解析をするタイミングは、用途、使用するツールで違います。たとえば、コーディングルールのチェック、メトリクス情報の取得用途で利用するなら、コーディングの初期段階から継続的に使ったほうがいいでしょう。問題のあるコードの書き方を初期段階から避けられて、品質向上をサポートします。
プログラミングエラーを見つけるなら、最低限、ユニットテスト段階のタイミングです。見逃してしまう可能性があるエラーを見つけて修復できます。
構造解析ツールは、既存ソフトウェアの構造理解のため、設計段階で使われるケースもあります。コーディング段階だと、設計通りの実装ができているかチェックできるのです。
コード解析がうまくいっていないとさまざまなトラブルが発生します。たとえば、納品手前でコード解析をして問題が見つかれば、修正する時間が取れません。修正後、変更テストをしようにもできないのです。
開発スケジュールの遅れ、欠陥品のまま納品という状況になりかねません。コード解析ツールの運用計画がいい加減だと、解析結果が出ても反映あれないまま品質低下を招きます。コードレベルの問題が統合システムテスト段階でも残っていた場合、テスト担当者と開発担当者のコミュニケーションに悪影響も出て、原因調査に時間がかかりテスト実行の工数が増えてしまう点も注意が必要です。
商品名 | Ranorex (ラノレックス) |
Autify (オーティファイ) |
---|---|---|
商品タイプ | パッケージ型
膨大なテスト工数を |
SaaS型
初期費用を抑えて |
対応テスト |
|
|
実行回数 の制限 |
制限なし |
制限あり
400回/1000回/任意 ※プランにより異なる |
日本語サポート | 導入後のセミナーが充実! | ヘルプサイトが充実! |
体験版 | 14日間 | 14日間 |
※Googleで「テスト自動化ツール」と検索し上位表示されたパッケージ型、SaaS型のテスト自動化ツール21種類の中から、(1)クロスデバイス、マルチブラウザに対応し、(2)日本語のサポートがあり、(3)ノンプログラミングでシナリオ作成が可能なツールをピックアップ(2021年11月1日調査時点)。パッケージ型、SaaS型それぞれの代表商品を選出しました。
【代表商品の選出基準】
☆パッケージ型:上記の条件の通り。
☆SaaS型:上記の条件に加え、公式サイト上に導入事例がもっとも多かったツールを選出。