テスト環境の仮想化

概要

  • 組込みテストの大変さ
  • ターゲット環境でのテスト
    • リソースが限られる
    • 操作が煩雑で自動化困難
  • 当たり前で手がつけられていない!!

モダン/ポストモダン

  • 仮想環境を使う
  • QEMUによるターゲット命令エミュレート
  • テストの自動化
  • 多数のテストを同時実行
  • ネット結合など統合テスト対応

1 docker 技術

1.1 仮想化の種類

  1. VMwearなど仮想化専用ソフト
  2. KVMやHyper-V
  3. Docker
  • 占有するリソースに差がある.
  • 軽量で高速:Docker 技術

```

2 動作させる

2.1 演習環境

  • Jupyter にログイン
  • ファイルエクスプローラで
    • work01/work12-12
  • Exa1, Exa2, Exa3

2.2 Exa1

  • readmeExa1.Rmdを開く
  • Cursor がUnityを使った
  • 自動テストの環境とテストデータ作成
  • その記録です
  • 内容を見る
    • Unity を動作させるツールの
    • OSへのインストールが含まれる
    • Cursor は自動実行する

2.3 Exa2

  • readmeExa2.md を開く
  • こちらはCMock を使った
  • テスト環境,テスト設計,実行を含む
  • Exa1とは環境が違うだけ
  • 実行はホスト上(Jupyter と同じubuntu24.04)

2.4 Exa3 docker

  • ここからDockerで仮想環境を立ち上げる
  • README_qemu_arm.md を開く
  • ここではArmの32ビットマシンをエミュレート
  • 動作させるのは三角形問題
  • それをDockerで動作させる

2.5 dockerの起動定義

  • docker-compose.yml が設定情報
  • 演習では,4グループが同時実行するので
  • container_name にグループ識別を追加
  • 保存(Ctrl + S)

2.6 docker 起動

  • terminal から
  • docker compose build
  • その後
  • docker compose up -d
    • いきなりup -d でも動作する
  • 動作確認は
    • docker compose ps

2.7 テストの自動実行は指定していない

  • 動作確認のために仮想側(ゲスト側)に入る
  • ホスト側から
  • docker exec -it triangle_test_arm_qemu-X bash
    • XはAとかDとかグループ識別
  • 成功するとrootのプロンプトが出る

2.8 テストのmakeと実行

  • カレントが workspace であることを確認後
  • make check-toolchain 実行
  • その後 テストのmake
  • テストを実行してカバレッジ確認

2.9 いろいろmdファイルに書いているので

  • 討論しながら試してください
  • 変な状態でハマたら,コンテナーからexit
  • コンテナーを停止(down)
  • 再起動する

2.10 ブレークアウトルームへ

  • 【20分】

Breakout Rooms
 20分

3 docker compose (参考)

3.1 Dockerの活用

  • 様々な局面で活用が考えられる
  • グループで共有しましょう

Breakout Rooms
 7分

3.2 まとめ

  • 開発とテストの一体化
  • 機能間の隔離技術が進み
  • マイクロサービス的な開発
  • 支える技術の代表:仮想化技術
  • 統合までならDocker
  • 開発者,テスト技術者,共に必要な技術

次は,