tak_kohei

名も無きQAエンジニアのブログ

孤独だったQAエンジニアの未来


こんにちは。エムスリーキャリアでQAを担当している@tak_koheiです。
このエントリーは、エムスリーキャリア Advent Calendar 2019の19日目です。

今回は、私がエムスリーキャリアに入社する以前の「大昔に携わってきたQAのお仕事」を振り返り、エムスリーキャリアに入社してからQAエンジニアとして「これからやろうとしていること」を書いてみようと思います。

エムスリーキャリアに入社する以前の話*1

孤独なQA

QAのキャリアをスタートしたのはウォーターフォール開発の大きなプロジェクトでした。開発関係者が分散した環境に100人くらいいて、1~2年がかりでシステムを改修していく例のアレです。そこでは開発を進める組織とテストをする組織が2つに分断されていてコミュニケーションが乏しい関係性でした。テスト対象のシステムにどんな機能改修があるのかは直前まで殆ど知らされません。事前に情報がもらえてもエクセルファイルに羅列された一行コメントのみ、といった感じでした。

その機能が、どんな目的の施策に紐づくものなのか、どんな人が使うのか、どんな機能なのか、どんな実装なのか、全くわからないまま。どんな人が開発しているのか開発者の顔も見えません。機能を想像しながらテスト計画やテスト設計の検討を進めても、初期見積りすら怪しい状態。適切な成果物が作成できるわけもなく、実装が終わったテスト対象の機能をひたすら解読しながらテストドキュメントの修正とテスト実行を進めていました。

テスト中のバグも大量に検出されました。表示される文言が違うといった軽微な不具合から、機能仕様そのものが大きく変わってしまうような不具合が検出されることもあり、大量のバグチケットがプログラマーとテスターの間で行き交います。1件のバグ修正に2週間を要するといったことはざらにありました。よってスケジュールは常に遅延していて、市場にリリースした後もユーザー環境で不具合が出てしまい、テスターの責任が問われるといったこともありました。

今から思えばそんな環境でもQAとしてもっと改善できた部分はありました。コミュニケーションを改善し、無駄をできるだけ排除していけばもしかしたら良い方向に進んでいたかもしれません。ですが当時はその世界しか知らず、そんな状況が問題であること自体も認識できずに、ただひたすら困難な状況に立ち向かう日々だったように思います。*2

Scrumとの出会い

そんな中でScrumを採用したアジャイル開発のプロジェクトにアサインされることになりました。プログラマー/テスター/プロダクトオーナー/スクラムマスターといった様々なスキルセットを持つメンバーで構成される開発チームは、それまでの分断された関係性ではなく、ソフトウェア開発に必要とされる人たちがコンパクトに集約されたようなチームでした。そこではプログラマーとテスターが常に共生し、お互いを補完し合う関係にありました。多様性に富んだ開発チームメンバーやアジャイルコーチとの出会いは、それまで孤独だった私のQA人生を一変させたのです。

見積

例えば、見積はスプリント計画で全員が相談しながら決めていました。どんな実装をするかの情報からテストスコープが明確になりましたし(プログラマー→テスター)、どんなテストをするかの情報から実装するロジックが明確になりました(テスター→プログラマー)。一方の限られた視点では見えていなかった観点に気付かされることがお互いよくありました。見積の精度が上がるだけでなく、開発を始める時点で「なにをやるのか」「なにをやらないのか」が明確になっていました。機能の設計/実装をし始める前にテスターがテスト観点をプログラマーにフィードバックするので、実装直後の品質も高く保つことができ、テストしても殆どバグが出ないといったことも多々ありました。*3

設計/実装とテスト

スプリント中はタスクを共有してお互いが助け合っていました。例えば、大きな機能を追加する際、できるだけビックバンテストにならないようテスト可能な範囲まで実装したら、そこまでで一旦ビルドしてテストするなど、実装の粒度や順番を調整していました。設計/実装を進める中で計画時には気付かなかった要検討事項が見つかり予定通りに実装が進まなそうな場合、後回しにしていたテストデータ作成を前倒しするなどテスト作業の順番を柔軟に入れ替えたり、QAが検討に加わって問題解決をサポートしたりすることがありました。テスト中に検出したバグの原因調査も、バグを発見したテスターがコードの中身まで確認して原因を特定し、修正内容をプログラマーと相談してバグフィックスする、といったことも行われていました。

スピードと品質の両立がこの方法であれば可能なんだ、という確信めいた気付きがありました。また、何より自分たちの肌感覚として得られるプロダクト品質が、チーム全体に共有されている実感が持てていたことも重要だったように思います。

頻繁に業務ハック

プロダクトの開発に必要とする全ての活動で常に小さく改善サイクルが回っていました。例えば小さなことであればカンバンのチケットの書き方で遅延していることが見えやすくするための工夫*4であったり、大きなことであれば新しいE2Eテスト自動化の仕組みを導入するための内製ツールの開発*5プログラマーとテスターが協働して行うセッション形式の探索的テストなども行っていました*6

やり残したこと

過去に例のない短期間で開発したそのプロダクトは、市場にリリースされた後の数年の間に発生した市場障害は0件でした*7。その後、どんなことにも終わりはあるもので*8、QAエンジニアは孤独な世界に戻っていくことになったのです。

やり残した、と心に残っていることがあります。それは製販分離の組織だったために開発したプロダクトを売るビジネス側のステークホルダーや、実際に使ってくれるユーザーとの距離が果てしなく遠かったことです。距離が遠いためプロダクトやサービスの改善が開発チーム内に閉じてしまいがちで、よりアジリティのある開発にしたくてもできないジレンマがありました。QAエンジニアとして開発チームの改善に留まらず、もっと広い範囲でサービスやビジネスそのものの改善に寄与できるのではないか、という想いが残されました。

エムスリーキャリアに入社してからの話

あの体験をもう一度

あの時に体験した、プログラマーとテスターのコラボレーションによる圧倒的な品質とスピード感を、もう一度実現したいと思い続けていました。そしてやり残したプロダクトを作ることだけに留まらないQAエンジニアとしての可能性を見てみたい。その考えは日に日に大きくなり転職に至ります。2019年5月からエムスリーキャリアの正社員として採用いただき、今はQAチームの一員として通常のテスト業務に加えてQCD改善の活動に携わっています。

開発のより早い段階からQAエンジニアが検討に加わり、要件検討から設計の段階でテスト観点や仕様の懸念点をインプットすることで、仕様の不備やバグの混入を防止する施策。また、プログラマーが実装時にハマりやすい落とし穴に効率良く気付けるようなテスト観点リストの整備。QAチームの活動が品質保証を担う組織としてのQA(Quality Assurance)から、品質支援を担う組織としてのQA(Quality Assistance)へ発展させていくための取り組みを進めています。詳しい話はまた別の機会に書こうと思います。

更にその先へ

願わくは、QAエンジニアとして更に一歩踏み込んでビジネスサイドも含めたチーム全体の改善活動をしていくことが今後の夢です。Feature Team(依頼された機能を作るチーム)からProduct Team(プロダクトを成長させられるチーム)へ。そしてService Team(プロダクトを通じて提供するサービスを発展させられるチーム)、Business Team(ビジネスの一翼を担うQAエンジニアへ)という想いで日々を過ごしています。ONE TEAM。

楽しむ

最終的にこの一節が私の拠り所になっています。私たちQAエンジニアの理想。全てのQAエンジニアから孤独が取り払われ、本当の意味でQA活動を楽しめる世界になるよう頑張っていきたいと思います。

www.shoeisha.co.jp

みんなが協力しているチームで働くこと、プロジェクトの最初から最後まで働くこと、業務のステークホルダーが開発チームと一緒になっているチームで働くこと、チーム全員で品質そしてテストに責任を持っている場所で働くこと、これらのことは、まさにテスターのユートピアだと私達は考えます。みな仕事の中に喜びを見出していて、孤独ではありません。アジャイル開発はアジャイルテスターの仕事への情熱に報います。

「実践アジャイルテスト ジャネット・グレゴリー リサ・クリスピン著 P.31 2.3.10 楽しむ」より 一部抜粋

*1:主に請負契約や派遣契約で”協力会社”の一員としてQA業務に従事していました

*2:という小説を読んだことがあります。

*3:従来のテスト方法ではあまりにバグが出ないので、最終的にはセッションベースの探索的テストを部分的に導入していました

*4:物理カンバンを使って、すべてのタスクを付箋に書き出して運用していました

*5:既存の自動テストツールもありましたが動作が遅いのとCI環境に統合できなかった

*6:気になっていることや不安に思っていることをプログラマからヒアリングして、その情報を元にテスターが時間制限付きの探索的テストを実施していました

*7:但し、開発チームをその状態まで成長させるのに2年はかかっていたと思います

*8:派遣契約終了

書籍から紐解くアジャイルテスター


こんにちは。エムスリーキャリアでQAを担当している@tak_koheiです。
このエントリーは、エムスリーキャリア Advent Calendar 2019の12日目です。

アジャイルテスター」とは?

弊社のQAチームメンバーがアジャイルテスト関連のイベントに参加するというので、「アジャイルテスターって具体的にどんなことをする人なんだろう?」というテーマで、社内勉強会の時間に「ミニ読書会」をやってみしました。全員のおぼろげだったアジャイルテスターに対する理解が少しだけ実像を結び、私たちにとって何が必要なのかディスカッションできたので、前回の記事と同様に進め方や気付いたことを共有しようと思います。

アジャイルテスター読書会やってみた

書籍

アジャイルな関連書籍を4冊ほど選び出しました。また、短時間で読んでもらえるように、あらかじめ書籍ごとに2~4ページの小さな範囲で読む箇所を決めておきました。

参加者

対象の書籍を読んだこと無い人5名
ファシリテーター1名(私)

進め方

  1. 参加者それぞれに担当書籍を1人1冊選んでもらう
    • 主催が担当を決めるのではなく、自分で選んでもらうことを重視しました
    • ただし早いもの勝ち
  2. それぞれの書籍で指定された箇所を読んでもらう
    • 10分くらいで各自が黙々と担当の書籍を読みました
  3. 読んで気付いたことを付箋に書いてもらう
    • 付箋は気付き1つにつき1枚で書いてもらいました
    • たくさん書き過ぎて言いたいことがぼやけてしまわないよう最大3枚まで
  4. 気付きを共有してもらう
    • 一人ずつ付箋をホワイトボードに張り出しながら説明してもらいました
      • 担当した書籍にはどんなことが書いてあったか
      • それを読んでどんなことを感じたか
  5. 明日からの行動に活かしてもらう
    • 学びや気付きを元に、明日から何かやってみよう、という付箋を一人ずつ書き出し共有してもらいました

読んでみてどんなことを思ったか共有

それぞれの書籍の読んだ箇所の抜粋と、参加メンバーの承諾をいただきましたので当日書いてもらった付箋をご紹介します。

エクストリームプログラミング

10章に「テスター」という節があるのでそこを読んでもらいました。

shop.ohmsha.co.jp

顧客は自分が求める一般的な振る舞いについてはよく考えているかもしれないが、テスターはそうした「ハッピーパス」を視野に入れながら、そこから外れたときに何が起きるかを質問するのが得意である。(中略)テストの自動化や調整などを行うこともできる。プログラマーがテストで行き詰まっていたら、ペアになって問題解決を支援することもできる。

エクストリームプログラミング Kent Beck・Cynthia Andres共著 角 征典 訳 P.70 10章 テスター」より一部抜粋

読んでくれたメンバーから気付きの共有

どちらかというとプログラマ向けの書籍?だと思うのですが、開発チームの役割を解説した章の一番最初が「テスター」の説明になっていることが印象的ですね。初期段階からコミュニケーションをとって積極的に開発に関わるテスターの姿が語られていて、とても好きな本です。メンバーの気付きにも初期段階への参画やコミュニケーションについて言及がありました。

アジャイルの魂2016

西脇 春名さんの「あるアジャイルテスティングの物語」というエッセイを読んでもらいました。

http://shop.manaslink.com/items/3368905shop.manaslink.com

従来型の品質保証を行っていたときは別のフロアでしたが、近くの席で作業することで開発チームの状況がつぶさにわかるようになり、修正依頼などのやりとりをリアルタイムでスムーズに行えるようになりました。(中略)毎朝顔を付き合わせ、新しい機能の所感を伝えたり、質問をしているので、自然と開発チームとの信頼関係を構築することができました。

アジャイルの魂2016 あるアジャイルテスティングの物語 西脇 春名 P.130 開発チームと信頼関係を構築できる」より一部抜粋

読んでくれたメンバーから気付きの共有

アジャイルジャパン2016に参加した際にいただいた本です。アジャイル開発で品質保証のスキル特性を持った筆者がどのような活動をしているかが具体的に例示されていて、とても参考になるエッセイだと思います。メンバーからもコミュニケーションや探索的テストの重要性について気付きを共有していただきました。

プログラマが知るべき97のこと

ジャネット・グレゴリーさんの「プログラマーとテスターが協力してできること」というエッセイを読んでもらいました。

www.oreilly.co.jp

プログラマがコーディングを始める前に、テスターは「どういうテストをするつもりか」という考えを伝えるだけでなく、同時に、プログラマに何か提案はないかと尋ねるのです。そうすれば、プログラマからは、テストカバレッジをあげるのに役立つ情報、あるいは、どれが必要なテストでどれが不要なテストかの見極めに役立つ情報が提供されることが多いのです。テストについて早い段階から知っていれば、プログラマは、これから書こうとするコードがどういうものなのかをかなり明確にしてからコーディングを始めることができます。それによってバグの発生は大幅に減らせるでしょう。

プログラマが知るべき97のこと ジャネット・グレゴリー P.174 プログラマとテスターが協力してできること 」より一部抜粋

読んでくれたメンバーから気付きの共有

後述の「実践アジャイルテスト」原書の著者でもあるジャネットさんのエッセイです。テスターとプログラマが早い段階から協働することによって、実装されるコードとテスターが行うテストの両方の品質が向上することの解説が印象的で、メンバーからも同様の気付きを共有いただきました。

実践アジャイルテスト

「2.1 アジャイルテスターとは?」と「2.3.10 楽しむ」という節を読んでもらいました。

www.shoeisha.co.jp

アジャイルテスターとは、変化に対応し、技術担当の人や業務担当の人たちと共同作業でき、テストのコンセプトを理解して要求を文書化し開発をリードできる、プロフェッショナルなテスターです。アジャイルテスターの特徴は、高い技術スキルを持ち、メンバーと共同作業を心得てテストの自動化を行うことです。アジャイルテスターはまた経験豊富な探索的テスターでもあります。顧客が何をしたいかを常に気にかけており、顧客のソフトウェア要求を深く理解することができます。
(中略)
スキルは重要ですが、しかし心構えはもっと重要です。ジャネットはよく言っています。「心構えがなくては、スキルは意味がない」。(中略)テスターはより大きな視点に立つことがあります。テスターはユーザーや顧客の視点からアプリケーションを見ています。このことは、テスターは顧客重視であるということを表しています。

「実践アジャイルテスト ジャネット・グレゴリー リサ・クリスピン著 P.20 2.1 アジャイルテスターとは?」より一部抜粋

www.shoeisha.co.jp

みんなが協力しているチームで働くこと、プロジェクトの最初から最後まで働くこと、業務のステークホルダーが開発チームと一緒になっているチームで働くこと、チーム全員で品質そしてテストに責任を持っている場所で働くこと、これらのことは、まさにテスターのユートピアだと私達は考えます。みな仕事の中に喜びを見出していて、孤独ではありません。アジャイル開発はアジャイルテスターの仕事への情熱に報います。

「実践アジャイルテスト ジャネット・グレゴリー リサ・クリスピン著 P.31 2.3.10 楽しむ」より 一部抜粋

読んでくれたメンバーから気付きの共有

※書籍が2冊あったので2人の方に読んでいただきました。

言わずと知れたアジャイルテストの名著です。学びの多い内容が盛りだくさんですが、中でも「2.3.10 楽しむ」は本当に本当に大好きなお気に入りの一節で、読むといつも涙が出ます。読んでいただいたメンバーにも想いが伝わってくれたようで嬉しかったです。(ただし、涙が出ちゃうので私の前で音読するのだけは勘弁してください)

気付きを活かそう!

最後に読んでみて気付いたことや考えたことのうち、なんでも良いので明日からどんなことしようか、という考えを付箋に書いて共有してもらいました。イベントや書籍は参加したり読んだりして終わりだと勿体ないので、少しでもアウトプットして次の行動に活かしていくスタイルです。

参加者全員から共通して出た意見としては「プロジェクトの早い段階からQAがコミュニケーションを通じて関わっていくことの大切さ」でした。エムスリーキャリアのサービスはほとんどが漸進的な開発で進められているので、今後もより一層QAメンバーが開発チームの中でコミュニケーションの触媒となって活動しながら、より良い品質のサービスを素早く提供していけるようになりたいです。

今回の共有は以上です。また何か面白いことがあったら共有していこうと思います!

JaSST Review '19に参加して社内で共有した話


こんにちは。エムスリーキャリアでQAを担当している@tak_koheiです。
このエントリーは、エムスリーキャリア Advent Calendar 2019の5日目です。

先月、JaSST Review '19に参加してきました。
www.jasst.jp

JaSST Reviewはソフトウェアレビューに関する取り組み事例や関連研究などの活動事例を共有するシンポジウムです(詳細は上記リンク参照)。私は今回が初参加だったのですが、興味深い発表やパネルディスカッションが盛りだくさんで、非常に学びや気付きの多いイベントでした。

中でも深谷美和さんの「『違和感のつかまえかた』~組み込みシステムの開発者(テスター)としてやっていること~」という発表が私達のQA活動の中でも活用できる内容だったので、「これは是非みんなに伝えなければ!」と社内のQAチームメンバーに共有してディスカッションをしてみました。

(テスターとしてどのように違和感を捉えて不具合検出につなげているかというお話です。講演でお話されていた内容も全てスライドに記載されているので、講演を直接聴講されていない方でも分かりやすい資料になっていて、素晴らしいので是非ご覧ください。)

メンバーとのディスカッションの中で新たな気付きを得たり考えを深めたりできたので、実際にどんな方法で共有したのかや、どんな気付きが得られたのかなどをここで共有しようと思います。

QAチームの社内勉強会で気付きを共有してみた

参加者

JaSST Reviewに参加した2名と参加していない4名の計6名
(全員QAを担当しているメンバーです)

進め方

全員でスライドを見ながら、気になったページについて意見を出し合ってみました。
その際、どんなことを考えながら見れば良いか、以下のようなガイドを用意しました。

  • 自分たちの日々の業務に置き換えて考えてみよう
  • 違和感が不具合の発見につながった経験はあるかな
  • 普段どんなところから違和感を感じているのかな
  • 違和感にもっと気付き易くするためにはどうすれば良いだろう
  • 違和感をもっと気軽に発信するためには何が必要だろう

どんな気付きがあったか

以下はメンバーから出た意見や気付いたことです。

要件/仕様/設計レビューでどうやって違和感を捉えるか

  • たしかに仕様に対してモヤモヤすることは多いけど形にならないことが多い
  • どんなことにモヤモヤするんだろう?
    • 仕様に対する不安:この仕様でユーザーが困ることがありそう
    • 仕様バグっぽい既視感:似たような機能で仕様バグを見たことがある
    • 複雑さに対する警鐘:機能が複雑すぎて不具合が入り込みやすそう

テスト設計やテスト実施でどうやって違和感を捉えるか

  • 狙ってバグを捕まえにいくのが難しい
    • アプリの壊し方をもっと学ぶ必要があるのかもしれない
    • 学ぶというより考える癖付けとかなのかな

違和感を捉える感度をどうやって向上させるか

  • 違和感を拾うために自分自身のことをもっと良く知ることが大切
    • どんな性格かとか、どんな思考に陥りがちなのかとか

違和感を発信していかに周囲と共有するか

  • 違和感を言語化する能力がとても大切
  • 違和感に気づいてから、いかにライトに周囲にそれを伝播できるかも大事

気付きを活かそう!

気付きの中にあった「違和感に気づいてから、いかにライトに周囲にそれを伝播できるかも大事」という意見を受けて、違和感に気付いたらすぐに共有してみようという取り組みを始めることにしました。

どうやって共有するかの取り組みが以下です。

取り組み その1:Slackでつぶやく

  • 例:「このメッセージの日本語に違和感あるんだけどどう思う?」
  • 例:「この画面の構成って使いにくい気がするんだけどどうかな?」
  • 例:「あれ?変だな」「気のせいだった!」←実際にあった事例

ふわっとした内容でも共有するとみんなが見てくれて意見をくれるので、違和感が手軽に形になります。時間もかからないのでリーズナブル。すぐに共有して見てもらう目を多くすることで、違和感を形にしやすくなっていると思います。

取り組み その2:社内勉強会のネタとして投げ込む

  • 例:「xx機能のテストを今度やるんだけど、みんなでモブテスト設計やろう!」
  • 例:「〇〇機能の改修で機能が複雑になってきたんだけど仕様の漏れが無いか見て欲しい」

ある程度の時間が必要なものは毎週開催している社内勉強会のネタとして投下します。ネタの提案者は参加者に説明するので理解が深まるし、QAメンバーがよってたかって質問するので仕様の抜け漏れだったり不備を見つけやすいです。テストのときにみんながどんなことを考えているかの共有にもなるので、スキルアップにもつながります。

それと、テストをする時に狙って不具合を出しにいくのが難しいという人もいれば、結構得意だという人もいたので、私達のプロダクトに特化したテストの観点を抽出して共有できるようにしよう、という取り組みも始めています。その話はまた別の機会に。

補足

エムスリーキャリアのQAチームでは、各メンバーが1~3つほどのサービスを複数人で担当して、プロダクトマネージャー・プログラマー・デザイナー・マーケターなどなど様々な役割の方たちと一緒にサービス開発に携わっています。

QAチームメンバー同士は普段別々のサービスを担当していて業務での接点が無いメンバーも多いので、知識を共有したり一緒に勉強をしたりというイベントを毎週1時間とって開催しています。メンバー個々がスキルアップしたり、日々の業務を改善するヒントを得たり、そんな場を提供できているのが嬉しいですね。

また何か面白いことがあったら共有していこうと思います!

#JaSSTReview

テストエンジニアとしての生い立ち

私は出会いの運に恵まれているなぁ、とつくづく思う。今テストエンジニアとしてこうしてお仕事をさせてもらっているのも、奇跡のような出会いに導かれたからこそ。今日は「どうしてそうなった?」の原点を思い出せる限り書き出してみたい。

  • 1.暗黒の時代
  • 2.転機の予感
  • 3.敗北の日々
  • 4.転機の到来
  • 5.エウレカ
  • 6.感動の伝承
  • 7.余談
  • 8.更に余談
続きを読む

STAC2015 参加レポート 後編

  • セッション4:楽天の品質改善を加速する継続的システムテストパターン
  • セッション5:キーワード駆動によるシステムテストの自動化について
  • セッション6:Testing Tools for Mobile App
  • 自分なりのまとめ
  • 最後に
続きを読む