
IoT を使ってみる(その12:FreeRTOS排他制御編)
前回は「FreeRTOS」のタスク優先度を考察しました。 今回は「排他制御」について見ていきたいと思います。 排他制御とは # 複数のタスクが並列実行するプログラムにおいて、複数のタスクから利用される”共有資源"が存在する場合、複数のタスクが同時に”共有資源”にアクセスすると、”共有資源”に不整合が発生する場合があります。 ”共有資源”には、メモリや外部機器などが該当します...
記事を読む品質保証者の憂鬱「負のループを断ち切る」
筆者はこれまで35年ほどソフトウェア開発関係の仕事に従事してきました。 35年間の内訳は 25年間:ソフトウェア開発者(後半の数年は開発&品証の二足のわらじ) 10年間:ソフトウェア品質保証者 としてです。 社会人になったばかりの頃はソフトウェア開発部門に配属されました。 それ以降、ずっとソフトウェア開発を生業にしていこうと思っていたのですが、ある時先輩社員から「ソフトウェア品質」について熱く語られ、”ソフトウェア品質って面白いな”と考えるようになりました...
記事を読むIoT を使ってみる(その11:FreeRTOSタスク優先度編)
前回は「FreeRTOS」のタスクを紹介しました。 今回は前回説明できなかったタスクの挙動が優先度でどのように変わるのかを見ていきたいと思います。 サンプルプログラム # COMポートに”HIGH”、”LOW”の文字を出力する2つのタスクを用意しました。 タスクの優先度は初期値として両方とも「2」を設定しています...
記事を読むIoT を使ってみる(その10:FreeRTOSタスク編)
前回はESP32などの安価なIoTデバイスで利用できる「FreeRTOS」を紹介しました。 今回はFreeRTOSの詳細に入っていきたいと思います。 FreeRTOSのタスク # FreeRTOS では処理を実行する単位を「タスク」として構造化します。 各タスクは、システム内の他のタスクやスケジューラ自体に依存することなく、独自のコンテキスト内で実行されます。 任意の時点で実行できるタスクは 1 つだけであり、FreeRTOS スケジューラがどのタスクを実行させるかを決定します...
記事を読むIoT を使ってみる(その9:FreeRTOS基本編)
今回はESP32などの安価なIoTデバイスで利用できるRTOS(Real Time Operating System)の「FreeRTOS」を紹介したいと思います。 FreeRTOS とは # FreeRTOSはフリーに利用できるRTOS(Real Time Operating System)です。 上記の説明ではただ単語に分解しただけなので、もう少し詳しく説明しましょう。 FreeRTOS は以前は”例外条項付きGPL”の下で配布されていましたが、現在はAmazonが権利を保有しています...
記事を読むペアワイズ法テストケース生成ツール「PictMaster」のカバレッジ指定を使う
前回はペアワイズ法テストケース生成ツール「PictMaster」の”無効値”機能について紹介しました。 今回はPictMasterの”カバレッジ指定”機能について紹介したいと思います。 2因子より多い組み合わせ数を指定する # テスト対象の因子の数が多く、因子間の影響が2因子間に限定できない場合には、因子の組み合わせ数を2よりも大きくしたいケースがあります...
記事を読むGoogle Test を使ってみる(その4:VSCode拡張機能編)
前回は Google Test のテストフィクスチャを使うことで、テストケースを実行する前に、データをテストケースに渡すことができることを確認しました。 今回はテストケースの実行をサポートするVSCode拡張機能「GoogleTest Adapter」の設定や使い方を紹介したいと思います。 VSCode拡張機能「GoogleTest Adapter」 とは # VSCode(Visual Studio Code)は拡張機能をインストールすることで便利な機能を追加できるようになっています...
記事を読むGoogle Test を使ってみる(その3:テストフィクスチャ編)
前回は簡単なサンプルプログラムのテストケースを「Google Test」を使って記述し、テストを実行してみました。 今回はもう少し複雑なプログラムのテストケースを Google Test の「テストフィクスチャ」を使って動かしてみます。 テストフィクスチャ とは # 複数のテストケースを書いていると、複数のテストケースに同じセットアップ(テストケースに事前に値を設定するなど)を使いまわしたい場合があります...
記事を読むGoogle Test を使ってみる(その2:サンプル実行編)
前回は「Google Test」が実行できる環境を整えました。 今回は Google Test を使った簡単なサンプルプログラムを動かしてみます。 なぜ単体テストフレームワークを使うのか # ソフトウェアのテストは、テスト対象を可能な限り小さい単位で、しっかり実施しておくことが重要です。 テスト対象が複雑に結合された巨大なモノリス(一枚岩)になってしまってからテストを実施すると、障害の原因を突き止めるのに非常に時間と労力を要します。 またテストには「独立性」と「再現性」も求められます...
記事を読むGoogle Test を使ってみる(その1:準備編)
これから数回に分けて「Google Test」についてご紹介したいと思います。 Windows+VSCode(Visual Studio Code)環境で Google Test を紹介している例があまり無かったので、今回は Google Test をソースコードで取得してビルドし、Google Test環境を準備するところまでご紹介します。 Google Test とは # Google Test は、正式には「Google C++ Testing Framework」と言います...
記事を読む