QAってQ&Aの略なんですか?Quality Assurance(品質保証)とはいったい?

アソビューAdvent Calendar 2023の1日目(B面)です。

アソビューでQAを担当している大山です。
主にBtoC向けの遊び予約サイトアソビュー!のQA・ソフトウェアテストを担当しています。 他にはシステムセキュリティまわりの事なんかも少しやってます。
ところで──

QAってQ&Aの略なんですか?

アソビューAdvent Calendar 2023を見に来てくれている諸氏であれば、多くの方が「Quality Assurance」の略称だとすぐに思いついて頂けるのではないでしょうか。
単語自体がパッと出てこなくても(略さず「Quality Assurance」という言い方をすることは滅多に無いですし。。。)、「テストを遂行するチームや役割の事」とか「テスト・検証をする事」みたいに連想される方は多いんじゃないかと思います。
でもですね、結構あるんですよ。「QAってQ&Aの略なんですか?」とか「FAQみたいな?」とか言われる事って。
またまたご冗談をって思う方もいらっしゃるかもしれませんが、意外と根強い誤認ネタです。
なので私は、自分の職業や役割を話す時は、相手によっては意図的にQAという単語は使わず「ソフトウェア・システムのテストや、品質保証・品質管理をやってます」と言うようにしています。
ちなみに、数年前に「課長塾」という日系BP主催のマネジメントセミナーに参加した事があるのですが、本当に様々な業界・業種の方が参加されていて、ご多分に漏れず「QA」はほぼ通じなかったです(そしてタイトルに繋がる)

Quality Assuranceとは

ウィキペディアでは以下のように記されています。

品質保証(ひんしつほしょう、英: quality assurance、QA)は、効率と品質が求められるあらゆる活動において、それらに保証を与えるのに必要な証拠を提供する活動一般を指す。計画され体系化された活動は一般に、その製品やサービスが要求された品質を満足していることを保証する必要がある。品質保証は品質管理と密接に関連しており、これらによって顧客や権利保有者のニーズ・期待・要求に製品が適合していることを保証する。QA は、品質が所定のレベルに到達していることを事前に確認する手続きを効率的に構築するものである。

また、ソフトウェア開発においては、関連する活動として以下のようなものが挙げられています。

  • 要求仕様文書のレビュー
  • ソースコード制御
  • コードレビュー
  • 変更管理
  • 構成管理
  • リリース管理
  • ソフトウェアテスト

ソフトウェア開発の現場において「QA≒テスト」のような意味合いで使われる場面も少なくないとは思いますが、このようにQA本来の意味としては、テストはその活動の一部である事がわかります。

QAとテストの違い

業界・業種や組織ごとに様々な考え方があるとは思いますが、一般的にはこのように考える事が出来ます。

  • QAとは
     製品・ソフトウェアが要求された品質を満たしている事を確認・保証すること。
  • テストとは
     製品・ソフトウェアが期待した通りに動作する事を確認・検証すること。

ソフトウェア開発において、QAの役割・組織が開発者自ら行うテストとは独立したプロセスとして存在していたり、ソフトウェアテスト専門会社にアウトソースしているケースは非常に多いと思います。
人によっては「中身をよく知ってる開発者自らテストして品質を管理したほうが効率が良いし要求品質を満たしやすいでしょ?」と思われる方もいらっしゃるかもしれませんが、多くの企業・組織において、QAの機能を独立したチームで遂行している事には大きな意味があります。

第三者検証としてのQA

では、QAの機能・役割を開発者自身とは別の担当者・チームで遂行する事には、どういった意味があるのでしょうか?
一番に言えるのは、第三者の視点を持ってソフトウェアの品質を検証するという視点です。
先程、テストとは「期待した通りに動作する事を確認すること」と書きました。通常、開発者は自分が思い描いた通りに動作するように実装をするはずなので(例外もあるかもしれませんが)、基本的には「自分のイメージした通りに動作する事」という視点をもってテストを実施するかと思います。
一方、第三者の視点をもってテストを実施する場合、「求められる品質レベルに達しているか」を主眼としてテストを遂行します。また、第三者としてよりユーザーに近い立ち位置・目線で確認をします。

殺虫剤のパラドックスにご用心

ソフトウェアテスト技術者資格認定の運営組織であるJSTQBが定める「テストの7原則」の一つにこのような言葉があります。
これは、害虫に対して同じ殺虫剤を使い続けているとその殺虫剤に耐性を持った害虫が誕生する事になぞらえて、同じテストを何度も繰り返すと、最終的にはそのテストでは新しい欠陥を見つけられなくなるという意味です。
これは必ずしも第三者検証に限った話ではないのですが、「殺虫剤のパラドックス」を回避するためには、テストやテストデータ等を定期的に見直していく必要があります。QA=品質保証の一環として、こういった活動を継続的に行う事も、専門性をもったQAエンジニア・QAチームの重要な役割の一つです。

逸脱の標準化

ところで皆さまは「逸脱の標準化」という言葉をご存知でしょうか?
これは1986年に起きたスペースシャトルチャレンジャー号爆発事故において、その発生原因として、安全基準や規則を逸脱した行為が繰り返されることで、それが当たり前になってしまい、逸脱してることを気にかけなくなる現象の事を表した言葉です。
チャレンジャー号爆発の直接的な原因は低温によりゴム製のOリングがその役割(その柔軟性をもって隙間をふさぎ燃料が漏れ出すのを防ぐ)が機能不全に陥った事によるものですが、スペースシャトルの打ち上げに関してはしばしば安全基準の逸脱があった事が判明していたものの、事故には至っていないという事実からNASAはこれらの逸脱を放置していました。
この逸脱の放置こそが事故に至った真の原因であり、研究者はこれを「逸脱の標準化」と名付けました。
え?急にスペースシャトル?なんの関係が??
と思われた方もいらっしゃるかもしれませんが、ソフトウェア開発の現場において、似たような事例は数多く存在するように思われる方も多いのではないでしょうか?(似たような言葉に割れ窓理論というものもありますね)
私は組織の中でQAという役割・機能の必要性を説く際に、よくこの事例を引用します。第三者性をもって品質を担保する事の重要性を、端的に表している言葉・事例ではないでしょうか。

まとめ

ソフトウェア開発におけるQA=品質保証の位置づけ、そして第三者としての視点をもったQAの必要性についてお話をさせて頂きました。
開発者自ら行うテストとの差異についても記載しましたが、優劣の問題ではなくどちらも同様に大切であり、どちらか一方だけやれば良いというものではありません。
組織や開発の規模、開発スタイル、求められる品質基準は企業・団体により様々ですが、「テスト」と「QA」の両方をバランスよく併用する事でソフトウェアの品質向上及び開発プロセスの改善・効率化に大きな効果を発揮すると思います。
ご清覧いただきありがとうございました!

最後に

アソビューでは一緒に働くメンバーを募集しています! QAエンジニア・スペシャリストも絶賛募集中ですので、ぜひ採用ページをご覧ください!

www.asoview.com