最近趣味で様々な勉強会やプロジェクトに参加させていただいてます。
いろんな立場や世界観を知りたいと思ったのがきっかけです。
そんな中
「良いチームは、どれだけ仕事を理解しているかではなくどれだけメンバーを理解できているか否か」
そんな風に感じるようになりました。
「題目に何の関係があるの?」
と思われる気がしますが、後ほど。
さて本題といきましょう。
難題「テスト項目書の改修」
9月末くらいに開発プロジェクトのPMから「テスト項目書の改修」を依頼されました。
改修理由としては
- わかりずらい
- どういう条件をどの粒度まで書けば良いか。
- テスト作成後に漏れがあることが
人によってテスト観点が異なることから、作成者によって記載粒度が異なるという問題点がありました。
解決にあたり、きっと同じような課題を抱えている仲間がいるはずだと思い、インターネットの力を頼りました。
結論を言うと
「どう言う観点でやれば良いかという記事はたくさんあるが、その解決策はなし」
困りました。
「できませんでした」で許してもらいたい。
経験によらないテストケース
調べている中で、素敵な論文がありました。
日本工学開発学会が出している「開発工学」に特集されていた内容です。
経験によらないようにする仕組みの構築が必要であると考えたことから実証実験を行った結果が記載されていました。
結論
「手順化されていればある程度のものを若手でも作成できる。しかし熟練者との差異はすべて埋められるわけではなく「テストに関する知識」の有無が大きく影響する。」
やはり知識があるかないかがポイントなようです。
ちなみに以前どんなテストがあるかまとめたことがあります。
きっとこの知識は最低ラインなんだろうな。
ちなみにこの記事、こちらのリストにも入れていただいてます。
インターネット上には「テスト観点」に関する記事が多く存在します。
「具体的にどう対応すれば良いのか」
と文句を言っている私みたいなのは論外なんだろうなと思います。
まずはじっくりテストについての知識を吸収することから始める必要があるのです。
とはいえ、早急にテンプレートを作らないと・・・瞑想、迷走。
テスト項目書のテンプレートを作ろう
ネット上にたくさんテンプレートが掲載されていましたが、どれもしっくりいくものではありませんでした。どんな点に注意すれば良いのかしっかり説明してくれている記事はたくさんあるのに。
こちらの記事でもテンプレートについて触れられていました。
私なりにも、何を意識すれば良いのか考え、下記のポイントを絞り出しました。
1. テスト項目書だけみて、どういったシステムなのか理解できるか
2. 掲載すべき内容が明瞭か
3. 正常系・異常系
ちなみに現在のプロジェクトはスプレットシートでテンプレート作成しております。
1. テスト項目書だけみて、どういったシステムなのか理解できるか
精度を高めるためにも実装者やテスト作成者とは別の人がテストを実施することが大半です。
そのためテスト項目書に書いている内容がよくわからず、実装コードをみたり、設計書をみたりと資料を漁って解決することがありました。
その無駄を省けるテンプレートを心がけました。
また内容がわからず迷子になったとしても、
「何を見れば良いのか」
導線がはっきりするようにもしました。
具体的にはバックログやPRリクエストのリンクがわかりやすいところに用意しました。
2. 掲載すべき内容が明瞭か
今までのテンプレートは「テスト結果」という欄に
「〇〇な表示になる」
「〇〇なデータができる」
など様々な情報を同一のセルに記載する形となっていました。
このため、記載漏れが生じやすい状況になっていました。
そこで
- 用意するデータ(テーブル名欄・カラム名欄)
- 動作方法
- 結果(データ関係以外)
- 結果(データ関係※こちらは別シートにまとめて記載※リンクを貼ることで誘導)
というようなことを項目わけて記載できるようにしました。
テンプレートに項目として用意することで、記載漏れが防げる確率が高まっているのではないかと思いました。
3. 正常系・異常系
僕は「異常系」について考えるのを忘れてテスト項目書を作成することがよくあります。
「思うように動くのだからO.K.」
そんな風に楽観的に考えてしまうことからですね、きっと。
そんな自分への戒めとして新規でこのテストが「正常系」によるものか「異常系」によるものがを判定できるようにしました。
これによりテスト観点が網羅でき、精度の高いものがリリースできるようになります。
その他
メンバーのリクエストとしてテストのNG回数が自動的にカウントできるようにGASを組みました。これにより、実装精度が一目瞭然となりました。
気になるテンプレート
こちらにテンプレートを貼ろうかと思いましたが、著作権が私ではなく、チームにある気がしたので貼ってません。みたい方はこそっと教えてください。
テスト自動化しないの?
さて、強強エンジニアの皆様はきっと思われたと思います。
「こちら自動化しちゃえば?」
確かにそうかもしれません。しかし項目書に起こし、コツコツ手作業で進めることにはいろいろな意味があると思います。
一番は
「ユーザーの気持ちになれる」
ではないでしょうか。
実際に触ることで、感じられることも多々あります。
これは自動化してしまうと感じることができません。
もちろんテスト実施には自動化以上に時間がかかったりします。
テストデータ作りに意識が朦朧とし、自動化すれば楽なんだろな・・・とぼやいたこともあります。
しかし「自動化」しないからこそ得られる視点もあるのです。
「良いチームは、どれだけ仕事を理解しているかではなくどれだけメンバーを理解できているか否か」
このメンバーには 「利用者、ユーザー」 も含まれると思っています。
みんなの立場を理解できるチームが素敵だと思いませんか?
以上です!
お読みいただきありがとうございました!!