Qt Test セキュリティに関する注意事項
Qt Test フレームワークは、テストの実行を管理し、その結果に関するレポートを生成します。これを使用する際は、「Qtの開発者ツールを安全に使用するための注意事項」に関連する多くの点を念頭に置く必要があります。Qt全般に関する「Qt共有セキュリティモデル」で説明されているように、Qt Test を使用するユーザーは、Qt Test の使用方法およびそれが生成するデータについて注意を払う必要があります。
優れたテストスイートは、所々で被テストコードに負荷をかけ、クラッシュや未定義の挙動を引き起こすなど、失敗する危険性をはらんでいます。 テスト対象のコードが進化するにつれて、エンドユーザーに届く前に、こうしたテストによって時折ミスが検出されることになります。このような失敗は、ソースコードやビルド成果物など、テストプロセスがアクセス可能な他のリソースを破損させるなど、予期せぬ副作用を伴う可能性があります。
テストの失敗には、その失敗の性質を説明する追加情報が伴う場合があります。テストが成功した場合でも、警告やデバッグメッセージがトリガーされたり、コマンドラインオプションに応答したりして、テスト自体またはテスト対象のコードが出力を生成することがあります。 このデータの形式によっては、場合によってはレポートへの反映が困難になったり、Qt Test によって直接、あるいはQt Test が生成した出力を利用する他のプロセスによって、レポートの書式設定に支障をきたす可能性があります。
Qt Test のユーザーは、以下の点に留意することをお勧めします。
- テスト出力には機密データが含まれる可能性があり、その結果、その出力を読み取ることができる立場にある者なら誰でもアクセスできてしまう恐れがあります。
- 特に、テストコードや被テストコードの信頼性が十分に確保されていない場合は、可能な限り特権のないプロセスでテストを実行し、テスト終了後はテスト結果のレポートのみを保持するサンドボックス(仮想マシンなど)内で実行する必要があります。
- テストシステム上に存在するアーティファクトは、テスト実行前と同じ状態が維持されているとは信頼すべきではありません。
- Qt Test は、テスト出力に埋め込むデータをエスケープしたり適宜調整したりするなど、可能な限りの配慮を行い、出力が要求された形式に準拠するようにしていますが、その出力を利用するツールが、テストで生成され得るあらゆる種類の出力に対して堅牢であることを確認してください。
ビルド時の成果物
テストコードがコンパイルされる前であっても、テストのビルド時の設定によって、ビルド環境が調整される場合があります。例えば、ビルド設定に、テストに関連するソフトウェアの要件が追加されるなどです。
したがって、こうした調整がビルド自体にどのような影響を与えるかを理解することが重要です。これには、ビルド時ツールが組み込むソースコードやリンク先のライブラリを見つける場所の変更などが含まれる可能性があります。可能な限り、テストに必要な調整は、エンドユーザー向けの成果物のビルドには適用せず、それらを必要とする各テストのビルドにのみ適用すべきです。
これは、ビルド時の設定変更が信頼できないソースから行われる場合に特に重要です。このような変更は、ソフトウェアパッケージのセキュリティ侵害に関与した事例があります。
一般的な考慮事項
自動テストは万能薬ではありません。 既存のテストでは、偶発的なエラーや悪意のある変更を検出できない場合があり、テストを実行するという行為そのものが、そのような変更によって被害が生じる機会を与える可能性があります。テスト対象のコードの変更に伴い追加された新しいテストであっても、その変更に含まれる重大な問題や、変更の結果として明らかになった既存コードの問題を検出できない場合があります。
『Qt Test 』のベストプラクティスに従うことで、テストの挙動をより予測可能にし、セキュリティ上のリスクを含む様々なリスクを回避しやすくなる可能性があります。同文書で述べられているように、「外部依存関係を避ける」で説明されている通り、外部依存関係は問題を引き起こす可能性があります。
「Qtの開発者ツールの安全な使用」に関しては、テスト環境、テストコード、および被テストコードの完全性については、ユーザーが責任を負う必要があります。Qt Test は、悪意のあるテストコードや被テストコードに対処するようには設計されておらず、テストが失敗した際に有益なレポートを提供できるテストを作成するための便利なフレームワークを提供するのみです。
テストビルドと本番ビルドの分離
一般的に、配布用ソフトウェア成果物はテスト成果物とは別々にビルドし、テスト成果物のビルドやテスト実行の影響が及ばない場所に保存することが賢明です。
これらを分離しておくことで、テストのビルド、テスト自体、または被テストコードの何らかの不具合に起因して生じうる潜在的な問題を回避できます。これらはいずれも、ディスク上のファイルを変更する可能性があります。これらの手順のいずれかで、セキュリティが侵害されている可能性のあるリモートサーバーへのネットワーク接続を使用する場合、これは特に懸念事項となります。
通常、本番システムではテスト成果物は必要とされません。本番システム上でテストを行う必要がある場合、システム上でテストを実行してすべてが正常であることを確認した後、それらを容易にアンインストールできるよう、テスト対象のコードとは別にテストをパッケージ化することが賢明です。 これにより、すべてのシステムが意図したとおりに動作するという確信が得られるまで十分な数の本番システムコピーでテストを行った後、本番システムのコピーには主要な成果物のみをインストールすることが可能になります。
出力ファイル名の確認
ファイルに書き込みを行う他のソフトウェアと同様、Qt Test のプログラムにも、出力の保存先や形式を制御するオプションがあります。
ビルドシステムやテストを実行する品質管理システムなどによって、これらのオプションに渡される出力ファイル名が自動的に生成される場合は、生成された名前が意図した通りであることを確認するように注意を払う必要があります。 このような名前を自動的に生成するシステムは、生成された名前が期待どおりであることを確認し、他のシステムによって誤解されたり、他のソースのデータを上書きまたは置き換えたり、あるいはそのデータによって上書きまたは置き換えられたりする可能性のある場所に、出力を配置しないようにする必要があります。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.