ソフトウェアテストにおける組み込みテストとは?

⚡ スマートサマリー

組み込みシステムではソフトウェアとハ​​ードウェアが密接に結合しているため、どちらか一方だけでは適切に検証することができず、組み込みテストではソフトウェアとハ​​ードウェアの機能的および非機能的な動作をまとめて検証します。

  • 🔘 タイトカップリング: ハードウェアはソフトウェアと並行して開発されるため、実際のテスト環境が完成するのはしばしば遅れる。
  • ☑️ 5つのレベル: ソフトウェアユニットテスト、統合テスト、システムユニットテスト、システム統合テスト、システム検証テストは、それぞれ異なるモジュール境界を対象としています。
  • 安全上の利害: 医療、鉄道、航空、自動車関連製品は、認証を受ける前に厳格な試験を実施し、その結果を文書化する必要がある。
  • 🧪 グレーボックスの優先順位: システム単体テストでは、内部リソースとRTOSメッセージを監視します。そのため、グレーボックステストの手法が最適です。
  • 🛠️ 主な障害: ハードウェアへのアクセス制限、オープンソースコンポーネント、ソフトウェアとハ​​ードウェアの混在する欠陥、および再現困難な欠陥。

組み込みシステムにおけるソフトウェアおよびハードウェアの組み込みテスト

組み込みシステムとは何ですか?

組み込みシステム 組み込みシステムは、ソフトウェアとハ​​ードウェアが密接に連携した電子制御デバイスです。組み込みシステムには、さまざまなコンピューティングデバイスが含まれる場合があります。これらは、アプリケーション固有の機能を実行するために他のデバイスに組み込まれたPCです。エンドユーザーは通常、その存在にさえ気づきません。

組み込みテスト

組み込みテスト 機能と性能をチェックするためのテストプロセスです。 機能しない 組み込みシステムのソフトウェアとハ​​ードウェアの両方の特性を評価し、最終製品に欠陥がないことを保証する。組み込みテストの主な目的は、組み込みハードウェアとソフトウェアの最終製品が顧客の要求を満たしているかどうかを検証し、妥当性を確認することである。

組み込みソフトウェアテストは、対象となるソフトウェアの品質が良好であり、満たすべきすべての要件に準拠していることを確認するものです。組み込みソフトウェアテストは、医療機器、鉄道、航空、自動車産業などの重要なアプリケーションにおけるセキュリティを保証するための優れた手法です。厳格かつ綿密なテストは、ソフトウェア認証を取得するために不可欠です。

組み込みソフトウェアのテストを実行する方法

一般に、次の XNUMX つの理由でテストを行います。

  • ソフトウェアのバグを見つけるには
  • ユーザーと企業の両方に対するリスクの軽減に役立ちます
  • 開発コストと保守コストを削減する
  • パフォーマンスを向上させるには

組み込みテストでは、以下の活動が行われます。

  1. このソフトウェアにはいくつかの入力データが付属しています。
  2. ソフトウェアの一部が実行される。
  3. ソフトウェアの状態を監視し、出力が期待される結果と一致するか、要件に適合しているか、システムクラッシュが発生していないかなど、期待される特性について出力をチェックします。

組み込みソフトウェアのテストの種類

基本的に、組み込みソフトウェアに適用できるテストには5つのレベルがあります。

ソフトウェア単体テスト

ユニットモジュールは、関数またはクラスのいずれかです。ユニットテストは開発チーム、主に開発者によって実施され、通常はピアレビュー方式で行われます。テストケースは、モジュールの仕様に基づいて作成されます。

統合テスト

統合テスト 2つのセグメントに分類できます。

  • ソフトウェア統合テスト
  • ソフトウェア/ハードウェア統合テスト

最終的には、ハードウェア領域とソフトウェアコンポーネント間の相互作用がテストされます。これには、内蔵周辺機器とソフトウェア間の相互作用の検証が含まれます。

組み込みソフトウェア開発には独特の特徴があります。それは、ソフトウェアが実際に動作する環境が、ソフトウェア開発と並行して構築されることが多いという点です。そのため、シミュレーション環境では包括的なテストを実施できないため、テストに不便が生じます。

システムユニットテスト

テスト対象のモジュールは、完全なソフトウェアコードとすべての リアルタイムオペレーティングシステム (RTOS)および割り込み、タスク処理メカニズム、通信などのプラットフォーム関連の要素。制御点プロトコルは、もはや関数呼び出しやメソッド呼び出しではなく、RTOSメッセージキューを使用して送受信されるメッセージです。

システム リソースは、組み込みシステムの実行をサポートするシステムの能力を評価するために観察されます。 この側面に関しては、 グレーボックステスト は、最も推奨されるテスト手法です。組織によっては、システム単体テストは開発者の担当となる場合もあれば、専任のシステム統合チームの担当となる場合もあります。

システム統合テスト

テスト対象モジュールは、単一ノード内のコンポーネント群から始まります。制御・観測ポイント(PCO)は、ネットワーク関連の通信プロトコルと、ネットワークメッセージなどのRTOSイベントが混在しています。仮想テスターは、コンポーネントに加えて、ノードの役割も担うことができます。

システム検証テスト

テスト対象となるモジュールは、完全な実装を備えたサブシステム、または組み込みシステム全体です。この最終テストの目的は、外部エンティティの機能要件を満たすことです。外部エンティティとは、人、通信ネットワーク内のデバイス、またはその両方を指します。

違い: 組み込みテストとソフトウェアテスト

以下の表は、組み込みテストと従来のテストを比較したものです。 ソフトウェアテスト.

ソフトウェアテスト 組み込みテスト
ソフトウェア テストはソフトウェアのみに関連します。 組み込みテストは、ソフトウェアとハ​​ードウェアの両方に関連します。
平均して、世界で行われている検査の90%は完全に手動によるものです。 ブラックボックステスト. 組み込みテストは組み込みシステムまたはチップに対して行われ、ブラックボックスまたは ホワイトボックステスト.
テストの主な領域は、GUI チェック、機能、検証、およびある程度のレベルのデータベース テストです。 主な試験対象は、ハードウェアに与えられる入力数に対するハードウェアの動作です。
ソフトウェア テストは主に、クライアント サーバー、Web、およびモバイル ベースのアプリケーションで実行されます。 組み込みシステムのテストは、一般的にハードウェア上で実施される。
例えば、 Google Mailヤフー Mail, Android 分野の様々なアプリケーションで使用されています。 例えば、医療分野の機器、コンピュータで使用されるマイクロコントローラなど。

課題: 組み込みソフトウェアのテスト

組み込みソフトウェアのテスト中に直面する可能性のある課題には、以下のようなものがあります。

ハードウェアの依存関係

組み込みソフトウェアのテストにおいて、ハードウェアへのアクセス権が限られているため、ハードウェアへの依存性は大きな課題の一つとなっています。しかし、エミュレータやシミュレータは実際のデバイスの動作を正確に再現するとは限らず、システム性能やアプリケーションの使いやすさについて誤った認識を与える可能性があります。

オープンソースのソフトウェア

組み込みソフトウェアコンポーネントの大部分はオープンソースであり、社内で開発されたものではなく、完全なテストスイートも存在しない。そのため、テストの組み合わせや発生するシナリオは多岐にわたる。

ソフトウェアとハ​​ードウェアの欠陥

もう一つの側面は、新しく開発されたハードウェア向けにソフトウェアを開発する場合です。このプロセスでは、ハードウェアの欠陥が多数発見される可能性があります。発見される欠陥はソフトウェアに限らず、ハードウェア自体にも関係している場合があります。

再現可能な欠陥

組み込みシステムの場合、欠陥を再現したり再発生させたりすることがより困難になります。そのため、組み込みシステムのテスト手順では、標準的なシステムの場合よりも、あらゆる欠陥発生をはるかに高く評価し、欠陥の根本原因を特定するために合理的に必要とされる限りのデータを収集する必要があります。

継続的なソフトウェア更新

組み込みシステムでは、カーネルのアップグレード、セキュリティ修正、各種デバイスドライバなど、定期的なソフトウェアアップデートが必要です。ソフトウェアアップデートに伴う制約により、バグの特定が困難になります。さらに、ビルドおよびデプロイメント手順の重要性が高まります。

よくあるご質問

典型的なスタックは、静的解析、C 言語の単体テストハーネス、および C++バスアナライザー、 trace対応デバッガーとハードウェア・イン・ザ・ループ・リグ、さらに テスト自動化 そのため、回帰テストスイートは無人で実行されます。

ハードウェア・イン・ザ・ループ(HIL)では、シミュレーターが周囲の設備が生成する信号を供給する一方で、実際のコントローラー上で実際のファームウェアを実行し、物理的に発生させるには危険な故障状態を再現します。

シミュレータは動作をモデル化してホストビルドを実行するのに対し、エミュレータはターゲットの命令セットを再現して実際のバイナリを実行します。どちらもアナログ効果やタイミング効果を完全に再現するわけではありません。

IEC 61508は、汎用的な機能安全規格です。分野別の規格としては、道路車両向けのISO 26262、航空機搭載ソフトウェア向けのDO-178C、医療機器向けのIEC 62304、鉄道制御向けのEN 50128などがあります。

AI モデルは、大量のログをトリアージし、 trac装置の生産量を分析し、繰り返し発生する障害をクラスタリングし、限られたハードウェアで最初に実行すべき回帰テストの優先順位を決定します。安全性の判断はエンジニアに委ねられます。

GitHubコパイロット C または のテストハーネスとスタブのドラフト C++ モジュール化により、反復的なモック処理が高速化されます。ただし、これまで認識していなかった動作やタイミング制約については、引き続き確認が必要です。

最悪の実行時間分析を通じて、計測された tracターゲット上でeを実行し、最大負荷でストレステストを実行します。デッドラインミスと割り込みレイテンシは、ホストビルドでは再現できない実際のハードウェア上で測定されます。

C を読み、 C++回路図とロジックアナライザに精通し、RTOSの概念とバスプロトコル、さらにスクリプト作成にも精通していること。関連業務としては、 IoTテスト 同じ基盤に基づいている。