こんにちは。QAエンジニアの和田谷です。 残暑続く中ですが相も変わらずサウナは最高です。
今回は「アジャイル開発におけるQAエンジニア」について私がQAとして行ってきた活動をお話しできればと思います。*1
そもそもアジャイル開発とは?
アジャイル(Agile)とは、直訳すると「素早い」「機敏な」「頭の回転が速い」という意味です。 システムやソフトウェア開発におけるプロジェクト開発手法の1つで、小単位で実装とテストを繰り返して開発を進めていきます。
アジャイル開発に対してQAとして最初に感じたこと
初めてアジャイル開発という言葉を聞いたのは今から7年ほど前で、当時はそもそも「アジャイル」って何?という状態でした。
そしてアジャイル開発が小単位で短い期間での対応の為、必然的にQA期間も短くなり、品質保証を行いながら進めることが困難なのではないかという不安しかありませんでした。
しかしQAであるのであれば品質保証を行いながら進めることをしなければいけません。
アジャイル開発「スクラム」に対して行ってきたQA対応方法
1スプリント内で開発とQAは同時に行わない
1スプリント内でQAも行うとなると開発が遅れた際にはTest対象を削る、最悪だとリリース日をずらすなどということが起きる為、開発の次スプリントでQAを行うようにします。
QA見積もりを行いどのくらいの期間でQAを完了することができるか把握し共有
開発完了後にQAを開始したとしても、リリース日に間に合わないと意味がないです。また、次スプリントにまでQA対応がはみ出してしまうと、その後の案件対応の時間が短くなり、結果その後の対応が遅れていってしまいます。
その為、QA見積りを行い必要期間をステークホルダーと決め進めることが必要です。私の経験した理想は1スプリント(2週間)で開発、開発完了後の2週間でQA対応(リリース含む)というサイクルで行うと1か月で2度のリリースが実現でき、ユーザに新しいものを素早く提供でき良いと思います。
Test対象を早く決める
Test対象が多ければ多いほどTest工数は増えていき、決められた期間での準備、Test実行時間が減っていきます。その為、上流工程でTestを行うものを素早く決めておくことが大切です。
過去に以下のような活動をした際は、プロジェクト全体が効率よく動けていたと思います。
- 案件仕様書の作成段階からQAとして入り、目的にあったものをどう作っていくかなどの議論を行い、その際にTest対象を絞り込む
- 規模が大きな機能に関しては、Phaseを分ける提案をする
Test準備を早く行う
仕様書review、TestCase作成などは早く正確に行わなければなりません。早さを取りすぎていたため、TestCaseに漏れがでていまい結果障害発生というQAさんは何人も見てきました。(私もその一人です。)
では早く正確に準備を行うためにはどうしたらよいのかですが、仕様をしっかり理解できていることが前提条件の一つかと私は思っております。
仕様を理解というのは単純に仕様書に書いてあることを把握するだけではなく、仕様には記載されていないもの(他機能への影響など)も含めて把握するということです。把握していればいるほど、必要なTestがわかる為、何よりも大事なことだと思います。
余談:この辺を書いてる時に私をQAエンジニアにしてくれたQAエンジニアの方が「QAエンジニアで一番大切なのは仕様理解」と言ってくださったのを思い出した。
次スプリントを把握
今スプリントのことだけを考えていると次スプリントでのQA対応が後手に回ってしまいます。
その為、次のスプリントを把握して、並行して準備を進めることが必要になってきます。当たり前のように少人数で対応しているQATeamだと工数が足りなくなります。
私は案件リリースScheduleをステークホルダーと握ることで、1スプリントでのタスクをコントロールして凌いでました。
課題
Refactoring時の動作確認に回すQA工数がない
スプリント内のQA準備、QA実行でRefactoringTestに回すコストが無くなります。早期段階でTest自動化を入れるなどをしないと残業が増えたり、回らなくなります。
QAだけでなく開発、デザインにも潤沢な工数が必要
初回の1スプリントの開発、デザイン対応ができたとしても、2スプリント目での開発、デザイン対応中にはQA実施による不具合の修正、改善案の対応などが発生するので、2スプリント目の開発、デザイン対応に集中できなくなり、結果対応が遅れ、Scheduleが破綻してしまいます。
ローテーションを組めるくらいの潤沢な工数を用意するか、1スプリントでの開発内容をよりコンパクトにするなどの提案が必要になります。
今後
上述した改善を進めることが今後の取り組みになっていくのですが、 人員を増やすなどは会社の予算との相談にもなっていきますので、 当面は一回のリリースで行う案件規模をより小規模(必要機能は絶対に入れる)にするような提案などを進めていきます。 Test自動化に関してはMagicPodでの導入を考えている最中で、どうにか進めていきたいと考えています。
最後に
アジャイル開発におけるQAの課題はQAエンジニア単体で解決できるものばかりではなく、他職種を含めたチームメンバーの協力が不可欠です。 そのためQAについてメンバーの理解を獲得するための啓蒙活動から始めるのが良いと思います。
*1:前提としてアジャイル開発「スクラム」に対してのQA対応のお話となります。