Policy状態遷移テストについてSoftware2022.06.04今回の記事では、状態遷移テストについて紹介します。同値クラステストやデシジョンテーブルテスト等はこれまでの記事で紹介してきました。状態遷移テストは「状態遷移図」や「状態遷移表」を用いたテストのことです。これらを用いると、状態遷移の全体像を把握でき、ソフトウェアの動きを網羅的に確認することができます。状態は以下のようなカテゴリーに分けられます。状態遷移図は、以下の表記方法にしたがって記述します。diagram最近のソフトウェアは構造が複雑なものが多いため、状態遷移図が巨大になってしまうことがあります。そのため、機能ごとに状態遷移図を分割するなどの工夫が必要です。ブラウザ」等の機能がありますが、これらは一つ一つ別の状態遷移図に書き表した方が見通しがよくなります。ユーザーが実際に使うシナリオを想定する際の手助けになるテストケース状態遷移図をベースにテストケースを作る際は、以下のルールに従って作っていくと良いです。遷移することを表しています。升目の中の状態が遷移先の状態となっています。「-」となっている升目は「どこにも遷移しない」という意味になります。参考図書では、どこにも遷移しないイベントを「-」で表し、起こり得ないイベントを「N/A」で表しています。縦軸と横軸両方を状態にして、状態遷移表を作ることもできます。イベント」の状態遷移表が推奨されています。メリットすべての状態とすべてのイベントの組み合わせを一覧表示できるため、仕様が曖昧な箇所を特定できる状態遷移図の不備を見つけられるテストケース状態遷移表をベースとしてテストケースを作る場合は、1つの升目を1つのテストケースとします。table」を元にテストケースを作成すると以下のようになります。「起こり得ないケース(N/A)」の順で重要なので、この順にテストケースを作成することが推奨されています。このように状態遷移表を用いると「状態遷移しないケース」や「起こり得ないケース」も含めて網羅的にテストケースを作成できます。そのため、想定されるユーザーシナリオ通りにシステムが動くかどうかを確認する際は状態遷移図をベースにしたテスト、使い方として想定されていない状態とイベントの組み合わせも網羅的にテストしたい場合は状態遷移表をベースにしたテストが適しています。例題ドローンのシステムを考えます。全体システムの流れや状態遷移について今回は注目します。仕様は以下を満たしているものとします。S2状態遷移図の状態に注目して、矢印が伸びているイベントがある場合は升目を埋めていくようにすると状態遷移表を作りやすいです。(上の表だと、横一列を上から順に埋めていくイメージで状態遷移表を作っていくと作りやすいです。)テストケース今回は、状態遷移するケースのみをテストケースとして抽出します。表を作っていて、以下のような疑問や改善点が浮かんできました。状態があるとよい目的地が設定されていなかったときはどうする?目的地に着いたらホバリングを続けるべきか着地すべきか?センサの観測結果はどれくらいの周期でチェックすべきか?このように、状態遷移図や表を作っている最中にシステムの欠陥や不備、仕様の曖昧な部分を洗い出すことができます。アップロードしています。以下のソースコードで実現しました。変数の値が変わります。本来はどのようにセンサ異常を検知するかを考えたり、ボタン押下の検知をコールバック関数で行う処理を書いたりも必要ですが、今回は状態遷移テストに関する説明なので割愛しました。状態に変わっているかを確かめています。sm.get_state());}テストコードの実行は、以下のコマンドによって行います。していることがわかります。tests.まとめ状態遷移テストについて要約して、例題を作りソースコードを書いてみました。テストをしてソースコードに誤りが無いかを見つけるのも大事ですが、状態遷移図や状態遷移表を作っていく最中に仕様に問題がないかを考えていくことも大事だなと思いました。Controller運動方程式導出の記事に引き続き、シミュレーションを行っていきます。シミュレーション等について解説していきます。境界値テストを紹介しましたが、今回の記事ではデシジョンテーブルテストについて解説します。今回も以下の本をベースに解説していきます。今回は、以下のモータを使用します。いうオンラインショップにお世話になりました。PolicyHomeSearchTopSidebarCategoriesControlDrawingsElectronicsMulticopterRobotSoftware。