品質保証に関わる職種や役割はこんなにもある
QA(Quality Assurance:品質保証)とは、仕様に沿った動作の確認や製品の品質管理を行うこと。QAエンジニアはブラックボックスで動作確認するなどして、不具合で生じるシステム障害を回避し、ソフトウェアが一定の品質を提供できるように責任を持つ。中には第三者目線でテストやレビューをすることもある。エンジニアと呼ばれつつもプログラムを書かない人もいれば、がっつりとソースコードと向き合う人もいる。
「ぶっちゃけ、なんでも屋さんだったりします」と日野杉氏は言う。なぜなら会社やチームより求められることが異なるからだ。QAエンジニアをテスターとみなす場合もあれば、成果ログや計測システムを確認する役割と見たり、品質管理担当やテスト自動化担当と見たりすることもある。
テスト範囲も異なる。テストには単体テスト、結合テスト、システムテスト、受け入れテストなどがあり、基本的に単体テストは開発者が行い、結合テスト以降をQAエンジニアが行う。単体テストは個々の機能を検証するためにJUnitなどのテスティングフレームワークを用いるが、QAエンジニアが担当することもある。バグ修正コストを下げるために、早い段階からスモークテストを実施することもある。
一概にQAと言っても、実は関連する職種は多数ある。簡単に紹介しよう。
QAコンサルタント
自社のQAコンサルタントなら、関係者からヒアリングして品質リスクをとりまとめ、品質戦略を打ち出す。テストプロジェクトの立案、報告、予算管理などをまとめる。社外のQAコンサルタントなら、顧客からヒアリングして品質戦略やテスト計画を提案する。
QAディレクター
品質について指揮・監督する。仕様の改善要望、作業品質、仕様バグをQAの視点でまとめる。QAコンサルタントやPMが提案したテスト戦略や計画を実際に推進していく。
QAマネージャ
品質保証やテスト戦略の立案、業務フローの立案や改善、チームスケジュール管理、外部テストベンダーとの折衝、テスト自動化の計画策定、メンバーの評価や採用などQA実務を幅広く担う。
QAエンジニア
第三者視点で品質測定、テスト設計、テストケース策定のほか、仕様の把握や仕様に関する改善要望や指摘も行う。
テストマネージャ(検証会社)
検証会社のテストやテスターの管理業務が中心となり、エンジニアやテスターとの情報共有、教育、稼働調整などを行う。会社によってはテストケース作成も行うとか、QAエンジニアが兼務することもある。
テスター
テストケース、スモークテスト、アドホックテストなどを実行する。日本ではウォーターフォールモデルの下流工程要員としてみなされがちで、クリエイティブなイメージではない。しかし海外では高額報酬をもらう優秀なテスターも存在する。
テスト自動化エンジニア
Selenium、Appiumなどを駆使してJenkinsでテスト自動化の仕組みを作る。Detox、Cypress、TestCafeが使われることもある。求人ではSET(Software Engineer in Test)とも呼ばれていることもある。
会社やチームにより定義が異なるだけではなく、こうした職種の違いにより品質についての価値観や姿勢が分かれることもある。時には衝突も起きる。それで日野杉氏は「自分が本当にやりたいことはどれなのか、分からなくなった」。そんな時にQE(Quality Engineer)に出会ったという。