Nagoya.Testingに参加 #NagoyaTesting

行きたいけど時期的に無理かなと思っていたのですが、諸事情により時間に余裕ができたので参加することにしました。
今の自分に足りないものが見つかると思ったのも理由の一つです。

前夜祭?

「誰か晩御飯ご一緒しませんか?」とつぶやいたところ、TEF東海のKENさんときょんさんとご一緒できることに。
Nagoya.Testingスタッフと会話できるこの喜び…でもきょんさん、準備大丈夫かなとも思った夜でした。

始まるまで

最近増殖中の@irofさん、TEF東海のまさおさん、きょんさんと合流して会場へ。ちなみに、irofさんに「遠いところからわざわざ…」と言ったら反論された。それもそうか。


会場入りしてからは「名札作るの手伝って(シールを貼る)」と頼まれたので、シールを貼りながら受付のお手伝い(?)をしていました。某"雪"ウサギさんに「あれ?なんでいるの?」みたいなことを聞かれましたが、ぺんぎんが色々な地域に出没するのはきっとよくあることですよ?

午前

TDDや形式手法の話ばかりでした。
私もLTをさせていただきましたが、あれの要点は「最終的に実践あるのみ」「とりあえず皆TDDはやれるようになっておこうぜ」「って色んな人が言ってるよ」ということです。


「座席表誰かお願いします!」とつぶやいたら@orange_cloverさんが作ってくださいました。ありがとうございます!

お昼

初めて味噌煮込みうどんを食べました、うどんかためなのね。
食事中の@mzpさんと@kumagiさんによるpersistentなお話が面白かったです。

BlackBox、WhiteBox、網羅的、ピンポイントの4象限

午後最初のハンズオン。
知っている(やったことのある)テストは4象限のどこに位置するか、を書き出すハンズオン。
なんというか、なかなか思いつきませんね。特に技法以外のネタをなかなか書き出せなかったです。
普段使うものって三角測量、同値分割、境界値分析、デシジョンテーブル、状態遷移、原因結果グラフ、ランラムテスト、CFDかなぁ。TODOリストはこの分類にいれていいのかわからないとか、カバレッジは…まぁいいや。
平行系に関するテストの話が聞けたのは個人的に収穫でした。とても勉強になります。


一個疑問に思ったのは、これを次のハンズオンにどうつなげればいいのかな、ということでした。まぁ、私がハンズオンの目的を聞き逃していただけかもしれませんが…。

戦略、分析、設計、実装

テスト戦略、テスト分析、テスト設計、テスト実装を実際にやってみようというハンズオン。
状況は以下のような形が想定されていました。

  • デプロイされたHerokuアプリのテスト
  • 18:00までにリリースしたい

渡されたもの

function list

状態

なんともいえない状況ですね。

テスト戦略

私のいたグループの方向性としては

  • 少しでも早く深刻な順にバグを発見したい
  • 簡単かつ重大なバグを見つけられるテストを優先してスケジュール
  • テストデータ作成など、同時に作業しても問題ない部分はメンバーが並行して作業する

という形でいきましょう、ということに。

テスト分析、テスト設計

どういった事柄に着目しましょうか、という話を相談しながら以下の順に決めました。

  1. ページが開けるか
  2. 機能系
  3. セキュリティ
  4. 平行テスト(同時に登録・削除などした時の挙動)
  5. 時間があれば他のテスト
テスト実装

きょんさんに指摘されて気づいたのが、正常系異常系の同値や境界値の具体的データを仕様書に残していなかったことです。脳内完結させてしまっていたのはまずかったですね、反省。
あと、事前条件に書かれている項目が一部依存条件だったという指摘もありました。このあたりは素直に遷移図に切り替えたほうがよかったかなーとこちらも反省。

依存 テスト 期待する結果
トップページでステータス200が返ってくる wgetでクローリング エンドポイントのすべてのURLが200で返る
ブラウザにページが表示される キーデザイン操作 ブラウザで各キー操作に応じた結果が表示される
各ページが正常に表示される 入力データの検証 正常値は登録、異常値はエラー
データ登録が可能 10000件のランダムなデータを突っ込む 正常に登録される or 異常値ではじかれる
アプリからデータベースにアクセス可 SQLインジェクションの確認 エスケープされること
POSTがとおる CSRF エラーページ
入力系操作が単体で正常に動作する 削除→完了と編集→完了を同時実行 指定の挙動を満たす
入力系操作が単体で正常に動作する 削除→完了と削除→完了を同時実行 指定の挙動を満たす

確かに、改めて見ると具体値を書かなさすぎでテスト仕様書とはとてもいえないですね。時間的制約に焦った影響もあるかもですが、練習だと割り切ってゆっくり作るべきでした…。あと、上の表は思い出しつつなので少し間違っているかも。

実際にテスト

kumagiさんにかなり頼ってしまいました。
"WireSharkでパケット覗いて、Rubycurlで1万件突っ込む/削除するスクリプト作成"をサクッとやってしまうあたりがすごい。


私はこのあたりから体力の限界でほとんど動けていませんでした…orz

振り返りとか

少しはグループのお役に立てたのかな、など少し不安が残りましたが、不安があるってことは次回までに改善せよってことですよね。改善していく所存です。

懇親会でこんな話をした(された)、ような

  • 「組み込み系で同じようなハンズオンやりたいよね」という話になったときに、なぜか「KINECTを使ったテストのハンズオンとか面白そうだなー」とか思っていたら、いつの間にか口走っていた。
  • AlloyやろうAlloy
  • OCamlやろうOCaml
  • TDDBC大阪を侵r…おっと誰かきたようだ

個人KPT

Keep

  • テストに関する勉強

Problem

  • 実践不足
  • 体力切れ

Try

テストの勉強会にいったの?みたいなTryになっているけど気にしない。

感想?

  • この手のグループワークで学生が多目のメンバー構成だとつらい(普段一人で作って一人でテストな状況の学生が多いと特に)
  • 誰かの手が止まるとつらい(私も人のこと言えないけど…)
  • 何をすればいいのかわからない人もいた?(特に普段Excel触っていて今回初勉強会とかだったらそうなるかも?)要検証
  • 模範解答がほしかったという意見を聞いた気がする
  • うさみみさん、いのちをだいじに(体力的な意味で)
  • 時間、足りませんでしたね
  • Developer Testの話、結果的にはいらなかったですね
  • ペアプロできなかったのは少し残念
  • でも楽しかった
  • 自分に足りないものがわかった(気がする)

余談

  • 懇親会後に@irofさん、@hakuraiさんと手羽先を食べに行きました。2日連続手羽先!
  • 翌日、目が覚めたらチェックアウト20分前とか…

さいご

主催者の@kyon_mmさん、TEF東海のKENさんとまさおさん、エイチームさん、勉強会スタッフの皆様、勉強会に参加された皆様、ありがとうございました。
次またどこかでお会いしましょう!


あ、4月22日のSCMBC in Nagoyaがあるらしいのでよろしくです!