クラウドワークス エンジニアブログ

日本最大級のクラウドソーシング「クラウドワークス」の開発の裏側をお届けするエンジニアブログ

クラウドワークスのアプリ開発チームでQAを導入した話

こんにちは、アプリチームの @tkoshida です。

昨年末より弊社ではQA(品質保証)担当の方(以降、QAさん)をチームに迎え入れたので、弊社アプリチームのQAさんがいる状態でのチーム開発の取り組みを紹介してみたいと思います。

f:id:tkoshida:20190801165146p:plain

当時のチーム状況

アプリチームでは、スマートフォンアプリ

の開発を行なっています。

QAさん参画以前の体制はこのような感じでした。

  • POx1
  • デザイナーx2(iOS, Androidそれぞれ1名)
  • サーバーサイドエンジニアx2
  • アプリエンジニアx4(iOS, Android

開発はスクラムで回しており、スプリントの期間は一週間でした。

開発者がテストしていたことによる課題

当時の課題としては、エンハンスのたびに開発者がテスト項目書を作成し手作業でテストの実施やデグレチェックをしており、開発者がテストにそれなりの工数を割いている状況でした。 当時行なっていた、アプリにお知らせ表示機能を付けるという対応では、テストだけで開発者の工数を一ヶ月以上使っていました。

また、開発者がテストをしていたことによって、

  • サイト側のエンハンスによってアプリ側にデグレが発生することに気付きづらかったり
  • iOS, Androidの新しいOSが出たりするときにもうまく動作するかなどの確認も不十分だったり
  • テストの効率化などの取り組みなども追いついておらず

日々のエンハンスなどに追われて十分な対応ができていないような状況でした。

そこでQAさんに参画いただくことに!

このように開発者によるテストを行なっている状況では色々な課題があったことから、QAさんに入っていただくようにしました。 テストの部分をQAさんに巻き取ってもらうことにより、チームとしてスピードをあげていく方向で進めました。

これにより、

  • 開発の流れをとめない
  • 継続したアプリ評価
  • テストに対して改善サイクルをまわす

などの実現を目指しました。

QAさん受け入れ

アプリチームがスクラムで進めており、もともとデザイナーさんも同じくスクラムに参加していたので、QAさんも一緒にスクラムでやってもらうこととしました。 現場によってはQAさんはスクラムから外れた形でやるところもあるようですが、他メンバーと同じ枠組みで進めることによってコミュニケーション面でのメリットだったり、振り返りなどもしながら改善を図っていけたらという考えです。

入り方としては以下のようなものでした。

  • QAさんは1名。iOS, Android両方みてもらう
  • 要件定義の段階から参加し、その後テストフェーズなどで品質の確認をいただく
  • 一緒にスクラムに入ってもらう
    • スプリントのプランニングで今スプリントでなにを(どのテストを)やるか決める
    • デイリースクラムで状況を確認し課題に対応して
    • 振り返りでプロセスをブラッシュアップしていく
  • 日々の取り組みとしては
    • テスト項目書作成、テスト実施、リリース前確認を基本セットとして、
    • テストの効果的な進め方の模索、
    • 継続的な品質評価(デグレが起きてないかなど)、
    • iOS/Android 新OSが出たときなどの評価もする

一方、懸念点としては

  • クラウドワークスの仕様が複雑というところもあってテスト仕様書をおこせるか
  • メンバーはリモートがメインの人が多くコミュニケーションに課題が発生するかも

といったものがありましたが、それぞれに

  • 参画時にオリエンテーションを実施する/参考になる資料をみてもらう
  • チームで出社して密にコミュニケーションをとれるように取り組む

などの取り組みを行なっていました。

そして数ヶ月が過ぎ・・・!

QAを導入してみての現在の状況

現在は、当初やりたかった 開発の流れをとめない という点については出来ているように思います。

基本的にエンハンスのテスト項目書の作成からテスト実施、リリース前本番動作確認はQAさんに任せられている状況で、開発者は評価観点の共有や影響範囲の共有、 テスト項目書レビュー、テスト環境準備の協力などだけで済むようになりました。 したがって、その点だけでも効果を感じられています。

スクラムの進め方としては、プランニング時に施策ごとに実装するストーリーとテストをするストーリーを分けて作り、スプリントAでは実装を消化しその後のスプリントBではテスト実施、リリースする、というような進め方をしています。

リリースの流れを整理した

QAさんが入ってリリースまでの流れで、以下のような課題感が出てきました。

  • スプリントをまわしていく上で随時開発したものができあがってくるが、どれがテスト&リリース予定で、何が残っているのかをチームでうまく管理できていない
  • 開発者からQAさんに共有する、実装したもののテスト観点や影響範囲が不十分で、QAさんがテスト項目書を作る段階で手が止まってしまうことが多々ある。施策としてやるものは仕様決めからQAさんも入っているのである程度わかるが、開発者でリファクタリングしたものなど、開発者でしかわからないものもあるので、影響範囲などちゃんと伝える必要がある

これらの課題に対して、チームでは リリース管理表 を作って解決するようにしました。

f:id:tkoshida:20190801154105p:plain

この図の通り、リリースしたいものを開発者が登録し、QAさんで受け付けてリリース対象にするものを管理するようにします。 ついでに、開発者はテストをするための(影響範囲などの)情報を書くようにしています。QAさんはその情報が不十分な場合には、受け付けないような仕組みとなっています。

以下がリリースまでの簡単なフローとなります。

f:id:tkoshida:20190801153906p:plain

今後の課題

今後の課題としては、以下のようなものがありますが、一つ一つ潰していきたいと考えています。

  • テストをいかに効率化させるか
    • 現在はQAさん一人に対して開発側から(iOS/Android両方)あがってくるテストをこなさないといけなく、余裕がない状態
    • チームとしてまだどういったテストに比重を置こうというすり合わせが出来ていない状態で、テスト項目を効率的に作成できておらず、テスト項目をブラッシュアップさせたい
  • サイト側の修正でいつのまにかアプリのSNSログインが動かなくなっていた、というようなことも想定されるので、そういったデグレにいち早く気づいていけるような運用を装着したい
  • これから、iOS 13, iPadOS も出てくる予定で、ユーザーがOSアップデートした瞬間にレイアウト崩れやクラッシュが多発するということも考えられるため、事前に動作確認をしていく必要がある

最後に

現在、クラウドワークス では積極的にアプリ開発に関わるエンジニアを募集しています。 話を聞いてみたい、などでも構いませんので、お気軽に遊びにきてくださいねー。 www.wantedly.com

© 2016 CrowdWorks, Inc., All rights reserved.