はじめに
おばんです、MacBookのマイクでのPodcast収録が限界だったため、ちょっと良いマイクを買っちゃった田中です。
先日、WACATE(Workshop for Accelerating CApable Testing Engineers)という、テストエンジニアのための合宿に参加したのでそのレポートをします。イベントは座学のセッションとワークショップを交互に行う形式でした。資料とTwitterの呟き、それからその他気づいた点などまとめていきます。
WACATE2018 夏 ~もちもちモ・デ・リングで、もぐもぐテスティング~ 開催概要 - WACATE (ソフトウェアテストワークショップ)
#wacate pic.twitter.com/AejXKIHHT4
— ダンボー田中 (@ktanaka117) 2018年6月16日
参加の目的
- 開発エンジニアとして、テストエンジニアが集まる空間で知識と雰囲気を感じて視野を広げるため
- レガシーコードを整理し改善するためのヒントとして、モデリングやテストの方法を知るため
- 機能開発とバランスをもってテストしていくための方法を知るため
- テストエンジニア界隈を知るため
参加する前にやったこと

- 作者: リー・コープランド,宗雅彦
- 出版社/メーカー: 日経BP社
- 発売日: 2005/11/03
- メディア: 単行本
- 購入: 24人 クリック: 539回
- この商品を含むブログ (51件) を見る
上の書籍を途中まで読んで、以下のことを学んだ。 これはやっておいてよかった。事前学習なしだとだいぶ厳しかったかもしれない。
- ブラックボックステスト
- ホワイトボックステスト
- テストとは何か
- 同値クラステスト
- 境界値テスト
- デシジョンテーブル
参加してわかったこと
UMLには複数種類ある
ユースケース図はシステムの全体像を掴むのに有用
- システム屋以外の人間でもわかりやすいという利点もある
アクティビティ図はアクターがやることの流れを掴むのに有用
- シーケンス図との違いは、実装に寄っているかどうか
- シーケンス図を書く場合、どういうデータをどういうプロトコルで受けわたすか、などの詳細設計が行われる
- アクティビティ図はアクターがどういう行動をするかという概要を時系列順に書くもの
状態遷移図/表は仕様の抜け漏れを探すのに有用
nスイッチカバレッジ
- 状態遷移をテストする組み合わせの話
- 0スイッチカバレッジは1つの状態が少なくとも1回のパスを通る組み合わせ
- 1スイッチカバレッジは1つの状態が少なくとも2回のパスを通る組み合わせ
- 状態A→状態B→状態A(戻り)→状態B、みたいな
モデリングとは、ある側面から見た概念の捉え方
- 目的に合わせたモデル(UML)を使って、概念を記述する(文法)
- UMLに複数種類あるように、モデリングの仕方は様々ある
- どういう視点でモデルを構築するかが、ある程度体系立てられている
- これまでは雰囲気でやっていたモデリングだったが、UML書きが体系立ててモデリングをトレーニングする方法になりそう
テストは常に何を切り捨てるかという選択
- 「全件をテストすることは不可能である」という前提がある
- その前提に基づいてテストを考えるということは、「なにをテストするか」というより、「なにをテストしないか」ということに焦点が当てられる
- 2日間のワークショップの中でも基本的に時間不足の状況が作られていて、実戦に近い形でテストを考える必要があったので、とても良いワークショップ設計だった
「テストの視点からのモデリング」 by 朱峰 錦司
「ユースケース図&アクティビティ図 モデリングからテストまで」 by 中村 仰志, 越中谷 郁美
「状態遷移テスト」 by 藤原 洋平, 角田 俊
深夜の分科会
WACATEの夜は分科会という、各々が持ち寄ったテーマについて語り合う時間があります。が、その時間についてではなく、その後の自由時間に行われた深夜の分科会が個人的にとても楽しかったので、そこをピックアップして紹介します。
深夜の分科会で話したテーマはTDDでした。
- ブロッコリー(@nihonbuson)さんによるTDDのデモ
- テストファーストとTDDの違いは?
- 雑に答えるとリファクタリングの工程があるかないか
- 金融系のような大きなプロジェクトをTDDでやることができるか?
感想とその後
テスト自体の理解が進んでよかった。また、テストは一人で学習して仕事に投入していくにはかなり高いハードルがあるが、合宿を通してテスト設計をする手順について知れたことで、ハードルを超えられた気がする。周りの参加者と会話やワークをしていくことで、これまで散り散りで理解していた知識をつなげることができたのも、大きな収穫だった。
プロジェクトの状況によって、やらなきゃいけないことが変わってくるな。
— ダンボー田中 (@ktanaka117) 2018年6月16日
作ってみなきゃいけない図とか、変わってくる。状況次第で使い分けられるように練習していきたいな。#WACATE
WACATEは「若手IT技術者が世界に羽ばたく為の加速装置」と銘打っているが、加速するかどうかはこの後にかかっていると思った。 ので、帰ってきてから早速PlantUML + Atomで環境構築をして、手元の処理の流れをシーケンス図で記述していってみている。なかなか良さそう。
あと一番大きいのは、レガシーコードに向き合う勇気がもらえたことかもしれない。一段飛ばしはできないものの、一歩ずつ理解を進める手立てを得られた。