業務状態遷移テストを語る夕べ

3
前へ 1 ・・ 11 12
あきやま🍠 @akiyama924

@mhlyc すみません。リリカルさんのご質問がわかりません。 「状態が爆発するような設計は」というところですが、140文字の制約から省略されているように思うのですが、「ソースコードや仕様などから状態を抽出しようとしたときに、状態の数が出しきれない(または非常に多く抽出される)ときは」でしょうか?

2018-09-01 14:44:45
リリカル @mhlyc

@akiyama924 目的機能ごとにソースコードを読んで、入力因子(正しい用語では信号因子)を出力因子に変換するまでに読み書きする変数を全て探して、それをラルフチャートの状態変数(状態因子)に書き出すという作業が大変になるような作りになっていることを、状態が爆発する設計と言っています

2018-09-01 15:07:03
あきやま🍠 @akiyama924

@mhlyc ありがとうございます。ご質問がわかりました。 テスト対象によりますが、一般的には設計が出来ていなかったり、設計後に仕様の追加があり、小手先のやり方で機能追加をしたりしたときにそのような状況になりますので、ほとんどの場合、設計が悪いと言って良いと思います。

2018-09-01 15:14:01
リリカル @mhlyc

@akiyama924 自分で言っていて、状態の設計が本来どうあるべきかよくわからなくなってきました シンプルな設計って常にできるものなのでしょうか?状態変数がいくつも出てくるけどそれが仕方ないということもあるように思います

2018-09-01 20:07:30
あきやま🍠 @akiyama924

@mhlyc シンプルな設計は常に出来ます。

2018-09-01 21:42:44
あきやま🍠 @akiyama924

第4夜です。 スライド7です。 このスライドでは、『組み込み系で見つけにくい状態遷移問題』について、架空の話(←ここ大事)を元に説明しています。 次回はこの問題がなぜ見つけにくいのかの話になりますが、果因アプローチとして、議論したい問題を理解してもらうスライドとなっています。

2018-09-01 21:49:06
あきやま🍠 @akiyama924

このトラブルは、『車線逸脱アラートが鳴らない問題』です。 まずは、車線逸脱アラートとは何かですが、最近の日本車にはついている事が多い、車が車線から外れた時に運転手に対してアラート音などで警告をする安全機能のことです。

2018-09-01 21:54:28
あきやま🍠 @akiyama924

Wikipediaの説明をコピペします。 車線逸脱警報(LDW,Lane Departure Warning)は車内に設置されたC-MOSやCCDカメラ画像をもとに車線を認識し、方向指示器を操作されないまま車線を逸脱しそうになると警報音を鳴らしディスプレイに表示するなどしてドライバーに知らせる機能である。 ←分かりやすい!

2018-09-01 21:55:38
あきやま🍠 @akiyama924

車線逸脱アラートの問題は『車線を逸脱してもアラートが鳴らない場合がある』ことです。 鳴らない条件は「ハザードランプが点灯中」です。 たとえば、高速を走っていて、前方が渋滞のとき、後続車に注意を促す目的でハザードランプを点灯してからブレーキを踏んで渋滞最後尾に並ぶ事があります。

2018-09-01 22:00:55
あきやま🍠 @akiyama924

100km/hから数百メートルで停止するわけですから、急ブレーキとまでは行かなくても激しい減速です。かつ、後続車の動きにも視線をやりますから、車線逸脱の可能性は高いものです。特に首都高速のカーブを曲がったら渋滞て、ヒャっとした経験はお持ちの方もいるのではと思います。

2018-09-01 22:04:27
あきやま🍠 @akiyama924

そんな車線逸脱の可能性が高い時に、車線逸脱アラートが鳴らないのは致命的バグといっても良いでしょう。では、どうしてこんなことになったのか? ハザードが点滅していないときには、車線逸脱アラートはなることから車線逸脱アラートの単機能テストは合格しているものとします。

2018-09-01 22:07:21
あきやま🍠 @akiyama924

もう一度Wikipediaをみると、「方向指示器を操作されないまま車線を逸脱しそうになると警報音を鳴らし」とあります。 そう、この不具合の原因は車線逸脱アラートのソフトウェアが、ハザードの点滅を方向指示器の点滅と間違えた事が原因です。

2018-09-01 22:10:35
あきやま🍠 @akiyama924

何故、車線逸脱アラートのソフトウェアは、ハザードと方向指示器を間違えたのかというと、「方向指示器が点灯しているときにONになる変数」が、「ハザードを点滅させるときにもONになる」という作りだったからです。

2018-09-01 22:13:52
あきやま🍠 @akiyama924

そう言われれば、どちらの機能も同じランプを点滅させるわけですから、わざわざ別の変数を使う必要は無い理屈です。車線逸脱アラート機能が無かったときからそうしていて、これまで何も問題は無かったわけです。 以上で第4夜はおしまいです。 次回は、この問題をどうやって無くすかの話になります。

2018-09-01 22:17:10
ぱいん🍍 @pineapplecandy

@miwa719 架空なんですかね?これ、普通にON/OFF制御に連携があるのでリアルなロジックミスの話だと思いました。

2018-09-02 00:15:06
あきやま🍠 @akiyama924

@miwa719 @pineapplecandy リアルっぽい例だけど、良い子は絶対に「自分の車ではどうかな?」って試さないようにね。危険なテストとなるから。 連ツイをテスターさんが読むことを想定して、「リアルじゃないよ、架空の話だよ」と注意しているのは、そういう意味です。

2018-09-02 07:04:22
あきやま🍠 @akiyama924

@pineapplecandy @miwa719 分かりにくくてすみません。 自分のテスト対象に置き換えて、「自分のテスト対象で車線逸脱アラート問題のようなことが発生するかな?」と考えてくださると、1番良いと思います。

2018-09-02 07:55:14
前へ 1 ・・ 11 12