CAT GETTING OUT OF A BAG

What the tester is thinking.

ソフトウェア技術者のためのバグ検出ドリル(問題3:入場料計算画面のバグ)

この記事は『ソフトウェア技術者のためのバグ検出ドリル』についての思考メモです。本書で問題を解いたことのある人、これから解いてみようかなと思っている人向けです。当然ドリルの問題は載せられないので消化不良を誘発する内容になっています。*1

ソフトウェア技術者のためのバグ検出ドリル

ソフトウェア技術者のためのバグ検出ドリル

 

f:id:miwa719:20200111135909j:plain

この問題で著者の山浦さんが用意した解答は2つ。表現の違いはあれど意図したバグ(改善点)は検出できた。うれしい。しかし片方は検出するまでのアプローチがこんなにも違うのか!と思うくらい違う。でも山浦さんの言ってることはわかるしそうだねって思う。まるで開発してるみたいだな。こういうのがとても面白いです。

 

*1:勘の鋭いエンジニアなら問題を逆引きできそう

ソフトウェア技術者のためのバグ検出ドリル(問題2:小学生用算数アプリケーションプログラムのバグ)

この記事は『ソフトウェア技術者のためのバグ検出ドリル』についての思考メモです。本書で問題を解いたことのある人、これから解いてみようかなと思っている人向けです。当然ドリルの問題は載せられないので消化不良を誘発する内容になっています。*1

ソフトウェア技術者のためのバグ検出ドリル

ソフトウェア技術者のためのバグ検出ドリル

 

f:id:miwa719:20200105101746j:plain

本書に載っている解決案が非常に勉強になりました。ソフトウェアの中で「ほぼ」の概念を扱うことのむずかしさと考えなくてはならないことが書いてあります。

普段の開発でも要求仕様の「おかしさ」を見つけたあとに「最適解を導き出す」のが本当にむずかしいと実感しています。どうにもできなくて制約や運用でカバーするのは負けだよね。設定で「どうにでもできるようにしておく」ことがあります。それが最適解なのか、それとも最適解を考えるのを放棄した結果なのか。自分自身に問いかけていきたい。


「最適解を導き出す」で任天堂宮本茂さんの言葉を思い出したので貼っておこう。

イデアというのは、複数の問題を一気に解決するものである 

www.1101.com

 

*1:勘の鋭いエンジニアなら問題を逆引きできそう

ソフトウェア技術者のためのバグ検出ドリル(問題1:コンピュータ・ゲームのバグ)

この記事は『ソフトウェア技術者のためのバグ検出ドリル』についての思考メモです。本書で問題を解いたことのある人、これから解いてみようかなと思っている人向けです。当然ドリルの問題は載せられないので消化不良を誘発する内容になっています。*1

ソフトウェア技術者のためのバグ検出ドリル

ソフトウェア技術者のためのバグ検出ドリル


昨年の12月に iPad(10.2インチ Wi-Fi 128GB)と Apple Pencil(第1世代)を購入したので練習もかねて手書きしました。GoodNotes 5 というノートアプリを使っています。*2

f:id:miwa719:20200104114053j:plain

1問目から解けなくて大丈夫だろうか…。 

*1:勘の鋭いエンジニアなら問題を逆引きできそう

*2:iPadApple Pencil は自分へのクリスマスプレゼントではありません。12月某日、まったくもっておかしな仕事が降ってきまして、当然抵抗したのだけど分かってもらえず(しかも一緒に抵抗してほしいと思っている人がやってあげようとする側にいて一体何を考えているのだと怒りに震えていた)カッとなってお昼休みに購入したのでした。おとなだから自分の機嫌は自分で直すのだ。しかしわたしの機嫌が直ることとその仕事が本当にやるべきものかどうかはまた別の話しである。結局もっとえらい人に言いつけて(いろんな人のがんばりのおかげで)そのおかしな仕事は1日しかやらずに済んだ。よかった。購入した理由はあれだけど iPadApple Pencil かなり良いです。手書きの文字をくるっと点線で囲み、別の場所にすーっと移動したときは感動しました。オブジェクトの移動なんて当たり前の機能だけど長年愛用しているほぼ日手帳ではできないので。

『ソフトウェア技術者のためのバグ検出ドリル』をやってみることにしました

わたしの中でドリル本と言えば『ソフトウェアテスト技法ドリル―テスト設計の考え方と実際』ですが、昨年11月にバグを検出することに特化したドリル本『ソフトウェア技術者のためのバグ検出ドリル』が発売されました。

ソフトウェア技術者のためのバグ検出ドリル

ソフトウェア技術者のためのバグ検出ドリル

 

さっそく購入してパラパラと眺めたのですが、これは面白そう!

本書は『山浦恒央の“くみこみ”な話 - MONOist(モノイスト)』の内容を大幅に改稿したものとのこと。掲載されているバグ検出問題はぜんぶで31問。どれも著者の山浦恒央さんが体験したバグを元に作ってあるそうです。

monoist.atmarkit.co.jp

わたし自身、これまでバグの生成を含む数々の失敗からたくさんのことを学んできましたが、開発現場で出会えるバグには限りがあります。時間は有限ですし、そもそもバグをなるべく作らないためにチームみんなで尽力しているのでね。だから他人が経験したバグを使い、あたかも自分が出会ってしまったかのような擬似体験ができるのは大変貴重です。ありがとうございます。

6つの開発フェーズ(要求仕様、設計、コーディング、デバッグ、テスト、保守)をカバーしたリアリティのある良質な問題を解き、含蓄に富んだ解説を読みながらソフトウェア開発に必要な4つの能力を鍛えたいと思います。

  1. バグを見つける嗅覚
  2. 他人の作ったプログラムを読む読解力
  3. 必ずバグを見つけるという強靭な精神力
  4. 自分の専門外でも仕様をもとにバグを見つける汎用的な技術力

そうそう、各問題には制限時間(最短は10分、最長は4時間)が設けられています。解けても解けなくても時間がきたらおしまいです。残業しない感じが普段の仕事っぽくていいな。

『なりきりみわキット』をリリースしました

11月29日に福岡市で開催された JaSST'19 Kyushu@m_seki が唐突に告知した『なりきりみわキット』について紹介します。誕生秘話?についても書きました。

なりきりみわキットとは?

@miwa719 がよく使う言葉(みわ語録)を2時間おきに通知するiOS向けキットです。たとえばこんな言葉です。

  • 書いてあるテストじゃバグ出ないよね
  • よし!
  • これはダメなやつだ
  • そうなの?

使い方は自由。みわ語録が通知されたら小さな声で音読して安く「みわ」になりきるのもよし、あなたのそばに「みわ」がいるような気分でお仕事するのもよし。言葉の意味、背景を想像してみるのも面白いかもしれません。

設定方法

本キットは iOS のカレンダーアプリ(iCalender)を利用しています。
iPhone → 設定 → パスワードとアカウント → アカウントを追加 → その他 → 照会するカレンダーを追加 → サーバに 719.druby.work を設定して「次へ」を選択。SSL接続できませんと表示されたら「続ける」を選択。以下のような画面になったら「保存」してください。カレンダー(本日)にみわ語録が設定されます。

f:id:miwa719:20191201095058j:plain

解除方法

追加したカレンダーを削除してください。
iPhone → 設定 → パスワードとアカウント → 照会したカレンダー → 追加したカレンダーを選択 → アカウントを削除

f:id:miwa719:20191201184912j:plain

自分の思考を変化させるスパイスアプリが欲しかった

製品開発中にミスや問題は起きるという前提で、わたしはその兆候や違和感(おかしさ)をできるだけ早くつかまえたいと思っています。そのために自分の思考の持っていきかたを意識的に矯正したり"無意識"を意識的に使おうとしています。でも現状に満足していません。ドメイン知識のように学んで覚えていけるものはどうにかなるのでいいのですがこれはちょっと違う。うまく言えないけど自分がそのときに考えてないことを考えたいし思いつきたいのです。自分の思考に一味加えて変化をうながしてくれるようなスパイスアプリが欲しい!と思ったのがきっかけです。

思考を変化させるための言葉(スパイス)をたくさん登録しておきランダムに選んで Apple Watch に通知する。そのときの自分の思考にスパイスをふりかけてテストを動的に変えていくのです。うまくいくかわからないけど面白そうでしょ?

技術顧問が一晩で作ってきた

スパイスアプリの構想を技術顧問*1に話したら一晩で「2時間おきにフレーズを配信するカレンダーのサーバー」を作ってきて自慢されました。自分でアプリを作るつもりで iOS のメモ帳とリマインダーを developer.apple.com でせっせと調べていたので唖然としましたね。しかもわたしには思いつかないかっこいい実現方法だったので二重に悔しい!!

どのような仕組みで動いているかを解説してもらい「スパイスとなる言葉は自分で書いてー」と言われたのですが、動作確認用の言葉として書いてあったのがたまたま「みわ語録」だったんですね。これはこれで面白いのでは!となり『なりきりみわキット』が誕生しました。

で、ソースコードを見たら9時から17時までの間はランダムに言葉を選ぶように作ってあるのですが17時だけは固定の言葉「もうやめなよ」が配信されるようハードコーディングしてある……。これは「みわ語録」ではなく普段わたしが言われている言葉です……。*2リアルタイムでこれを言われている「わたし」になりきれると思います。

おわりに

『なりきりみわキット』について紹介しました。サーバーは現在改良中です。土日は仕事しないので配信しないように直そうと思います。「みわ語録」だけでなく「あのチーム」でよく使うフレーズも登録しておこうかな。設定も解除も簡単なので興味のある方は試してみてくださいね。

*1:@m_seki

*2:17時すぎになってもテストしていると「もうやめなよー」「17時すぎましたよ?(帰らないんですか?帰っていいんですよ?むしろ帰ってほしいという意味)」と言われる

サディスティックミワテスト(ステッカー)を作りました

サディスティックミワテスト(ステッカー)が欲しい!とのご要望があり、自分でも欲しかったので キングプリンターズ で作りました。*1

個人用なので100枚もあれば十分だなと思っていたのですが、200枚でも300枚でも価格がほとんど変わらないんですね。

f:id:miwa719:20191031180144j:plain

価格の一例(円形ステッカー)

100枚だとなんだか損したような気持ちになってしまって、多いよなぁ…と思いつつ200枚作ったら見本用ステッカーが+70枚ついてきました。270枚もどうするんだ!!

というわけで、ほしい方には手渡しでプレゼントします。イベントなどでわたしを見かけたら「ステッカーほしい!」と話しかけてくださいね。

f:id:miwa719:20191027143441j::plain

ステッカーの大きさはこれくらいです(直径50mm)

ステッカーを製作する前に 無料サンプルセット を請求しました。紙の質感や手触りなどを確かめたり仕上がりがイメージできるので安心です。とてもよいサービスだと思いました。今回のステッカーもサンプルのステッカーを参考にしっとりとした質感の光沢を抑えた「マットPP」というもので製作しました。*2

kingprinters.com

miwa719.hatenablog.com

*1:正しくは技術顧問 @m_seki に発注しました!

*2:どうでもいい情報ですが、ステッカーの背景色は愛車のボディーをイメージした色(アマルフィホワイト)になっています。だから真っ白ではないのだ。

若手開発者(プログラマー)と読書会をはじめました

5月に社内の若手開発者(プログラマー)から「テスト設計技法を学びたい。できれば体系的に」と相談されたのをきっかけに、書籍『ソフトウェアテスト技法ドリル』の読書会をはじめました。この記事では読書会をはじめるときに決めたこと(伝えたこと)と、2か月やってみて思ったことをメモしておきます。あと『ソフトウェアテストの練習帳』を使ってみたのでそれの感想も!

ソフトウェアテスト技法ドリル―テスト設計の考え方と実際

ソフトウェアテスト技法ドリル―テスト設計の考え方と実際

 

読書会をはじめるときに決めたこと(伝えたこと)

本を読むことを主目的としない

単に本に書いてあることを音読し、わたしがたまに補足して、巻末の演習問題を解くのではなく、テスト設計技法を学びながら実際の開発(テストを含む)について考えたり、話し合う場にしたいと思いました。このやり方だと1冊読み終えるのに半年はかかるのと、読書会がうまくいったらどうなるか?のイメージ(=普段の開発の中で読書会で話したことを思い出し何かのヒントになる)を伝えました。

担当制にしない

章ごとに担当を決めて担当になった人が当日講師役になって進めていくスタイルは、講師になった人が事前に予習しなければならず大変なのでやめました。…というのは建前で、今回の状況だとどうみてもお前が講師だろ!て感じだったのでそれを回避しました。

宿題にはしない

宿題があると時間的にも気持ち的にも負担になりますよね。例えば、章の最後に演習問題が2問あるんですけど1問だけみんなでやって、もう1問は次回までに各自やっておきましょう、ということはしない。

無意識だったけど「しないこと」を決めていたのだなあ。

読書会を2か月やってみて

週1回開催(1時間/回)で8回実施しました。この本は第6章まであるのですが、現在第2章まで読み終えたところです。

  • そうだろうなと思っていたけど、若手開発者(以降、Aさん)も普段の開発の中でテスト技法(同値分割や境界値分析)を使っている
  • Aさんも「自分が普段やっていることに名前がついている」ことが分かってきたみたい
  • 本を読むことで「いつこの技法を使うのか」「どのように考えていくのか、またそれでよいとする理由」を自分の頭の中に取り込むことができる。これまでなんとなくやっていたことが(これでいいんだな)と思えるようになるのは、精神衛生上とても良いことだと思う
  • 区切りのいいところまで音読し、自由にディスカッションしている*1
  • 気になった文章を取り出し「これはどういうことを言っているのか」「この技法の考え方は実際の開発の中だとどこで使われているのか」そこからさらに設計、実装方法にブレークダウンしたり、過去に見た(聞いた)不具合などを話している
  • 結論を出したり章ごとにまとめるようなことはしていない(その場で話したことが全て)
  • この本は技法だけでなく「ソフトウェアテストの7原則」「248日問題」など、知っておいてもよいことがさらっと書かれている。Aさんに聞いたら「知らない」というのでその場で簡単に紹介している*2
  • Aさんとは開発してる製品が全く違うので、同じドメイン(医療機器)であっても原理的、構造的な違いから、似たような機能であっても気にするところが変わってくるのが面白い(自分の思考を広げるネタとして使えるので、こういう話を聞くのが好きです)
  • 1時間やるとかなり疲れるけど、週1回なので続けられそう

ソフトウェアテストの練習帳』の感想

ソフトウェアテストの練習帳』はソフトウェアシンポジウム 2019 東北に参加した際にお土産として頂いたものです。一般の書籍ではないので、以降の感想は練習帳を持っている方とこの練習帳の製作に尽力された方々向けになります。

ソフトウェアテスト技法ドリル』の第2章まで読み終えると、この練習帳の同値分割と境界値分析(11問)が解けるようになります。さっそくやってみました!

  • 1時間で2問解きました(1問目:40分、2問目:20分)
  • 問題を解く上で考えなくてよいこと(制約)が書かれているので、考える範囲が適度にしぼられ、その結果、対象にしている技法(今回は同値分割と境界値分析)に注目して解くことができました
  • 問題が文章だけ(構成図や画面例がない)というもの同じで、書いてないことで有効な制約になっていると思いました*3
  • あえて制約をつけないで問題を解いてみるという使い方もできそう
  • 問題を解いてるときに解答例、解説が見えない(次のページになっている)のが良いです(自分で見えないようにするのは案外ストレスがかかるものです)
  • 問題の横に書き込めるように?たっぷり余白があるのですが、何度も使いたいので練習帳には書き込まずホワイトボードを使いました
  • この問題に対する答えはこうだろうというよりは、自分ならどんなテストをしてみたいか、なぜそれをしたいのかを自分の言葉で話すようにしています
  • 自分で出した答えと解答例を比べて同じだと、やはり嬉しい気持ちになりますね
  • 1問目を解いたときに「代表値」について読書会ではそれほど触れなかったのに気づくことができました。そこで「都道府県を選ぶときの代表値」を例題にしてディスカッションしました
  • 解答例だけでなく丁寧な解説もついているので、その答えにたどり着くまでの過程を自分の思考と照らし合わせて確認することができるのがよいですね
  • 1問目と2問目は同じような解説が載っています。対象が同値分割と境界値分析なのでそうなるんですけど、やりようによってはわざと見せ方(解き方)を変えることも可能だと思ったのですが*4、おそらく同じような解説の方が読み手が混乱せず、安心して問題を解くことができるので、正しいことを同じように繰り返すのは大事なことなんだと思い直しました*5
  • 問題を解いていくことで「同値分割と境界値分析とはこういうもの」をより実感することができますね
  • Aさんは本で学んだ通りのお手本になるような解答をしたあと、さらに実装方法をホワイトボードに書きながら、自分ならこの対象としている値の元になるデータはfloat型を使うかもしれない、そうなると値を求める時に差分をとって比較するようなことをすると思う。なぜ差分をとるのかは前に値をそのまま比較して失敗した(丸め誤差と桁落ち)ことがあるので…のような話をしてくれました*6
  • このような話が出てくるきっかけになる練習帳の問題、素晴らしい!
  • 老眼の人にも優しい組版だと思いました(フォントや文字の大きさや行間など)

 

同値分割と境界値分析の問題はあと9問あるので、次回の読書会からしばらく練習帳を使うことになると思います。この練習帳を作ってくださった方々のお顔を思い浮かべ感謝するとともに、これからも楽しみながら解いていきたいと思います。ありがとうございました。*7

note.mu

追記(2021.11.16)

ソフトウェアテストの練習帳』は、JaSST配布版から加筆・校正され、一般書籍『ソフトウェアテスト技法練習帳 〜知識を経験に変える40問〜』として技術評論社より出版されました。

追記(2022.09.29)

来月『ソフトウェアテスト技法ドリル』第2版が発売されるそうです。赤ドリル!

*1:読書会ではなんでも話してほしいので、率先してわたしがなんでも話すようにしている。Aさんもなんでも話してくれるようになってきた。自分の仕事で解決できなくて困っていることとか。

*2:その後、Aさんは自分でボーイング787の248日問題、497日問題、36時間問題などを調べていた。

*3:うっかり画面例を書いたらいろいろ気になってしまい大変なことになった。

*4:思ったというか期待しちゃった…!JaSST Tohoku 実行委員のみなさんに対する期待値がものすごく高いんだわ。

*5:3問目以降の問題は見ないでこれを書いてます。

*6:こういう話が好きです。

*7:練習帳の表紙にもなっている仙台『蔵の庄』のごぼう天、美味しかったのでまた食べたいなあ。