ソフトウェアテストはQA(品質保証)の手段の一つでしかないと言われるけれど、QAってなぁに?

QA(品質保証)とテストの違いについて述べたコンテンツはたくさんありますが、自分自身の言葉で整理することを目的に記事にしたためました。
なお、QAに関する具体的なアプローチについては触れないため、そういった情報を求めている方は、そっとタブを閉じるか、ブラウザバックしていただければと思います。

また、本稿で述べる違いは、「QAエンジニアとテストエンジニアの違い」ではありません。

二つの品質

西堀栄三郎先生の「品質管理心得帖」では、「二つの品質」というものが提案されています。
この書籍は、40年以上前に出版され現在は絶版となっていますが、紹介されているマネジメントの考え方は現代にも活かすことができる素晴らしい書籍です。

入手困難な状況ではありますが、国会図書館のデジタルコレクションで読むこともできます。

そのときに、私は二つの品質を提案しました。
その一つは、『狙いの品質』であり、もう一つは、『出来映えの品質』であります。
この二つは明確に区別すべきであると考えました。
『狙いの品質』これは、正直申しまして会社のトップサイドにおける責任でして、
「どういう電算機を作るとか、どういう製品をこしらえるか」ということは、
会社のポリシーで、極端に言いますと、批判の限りではないわけです。
例えば、非常に高級な自動車を作るということに対して、「そんな高級車を作ってもだめですよ」といくら言ってみても仕方がない。
あるいは、フォルクスワーゲンのような廉価の車を作る。
これもポリシーなんですから、極端に言うと、批判の限りではないのです。

西堀栄三郎 著. 品質管理心得帖

西堀先生は、品質というものを「狙いの品質」と「出来映えの品質」という二つに区別しています。
この二つの品質は、品質保証を理解する上でとても重要な概念であるように感じたため引用しました。

なお、飯塚悦功先生の「現代品質管理総論」の中でも類似する概念が登場します。
飯塚先生は、品質の二つの側面として「設計品質」と「適合品質」があると述べています。

設計とは,要求を満たす手段の指定である.

(中略)

設計品質とは,多様な顧客の要求をどの程度満たす設計になっているかどうか,その程度のことをいう.
一方,適合品質とは,実際の製品・サービスがどのくらい設計の指定通りにできているか,その程度である.
もちろん,重要なのは設計品質である.

飯塚悦功 著. 現代品質管理総論

なぜ絶版になっている40年前の「品質管理心得帖」を読んだのかという点については、以降で述べます。
余談ですので、忙しい方は、次の章まで読み飛ばしてください。

私は、品質保証という深遠なる言葉を少しでも理解するために、飯塚悦功先生の「現代品質管理総論」を読んでいました。
そして、品質管理の原点でもある製造業の品質管理について知りたくなりました。
そこで、かの有名な「トヨタ生産方式」について調べていることをポストしたところ、
しんすく(@snsk)さんからのポストでおすすめいただいたというのが経緯です。

あちこち脱線して一つの本を読み終えるまで時間がかかるのは私の悪い癖です。

テスト

ソフトウェアテストの目的は、主に実装されたソフトウェアを評価することです。

巷でよく「テストだけしていても品質は良くならない」と言われます。
そして、「テストはQA(品質保証)の一つの手段でしかない」とも言われます。

先の二つの品質で例えるなら、テストは「出来映えの品質」を測ることが主な目的であるから、テストだけでは品質は良くならないと言われるのかもしれません。

QA(品質保証)

品質保証の定義について説明をはじめると、ISO 9000の定義はとか、⚪︎⚪︎先生はこう述べているとか、ソフトウェア品質知識体系ガイドを読んだ方が早いんじゃないかということになりかねません。
したがって、本稿ではそういった教科書的な定義は追い求めず、先の「二つの品質」というものでQAの活動について考えてみたいと思います。

私が考える品質保証の定義は次の通りです。

品質保証とは「狙いの品質」を識別し、識別した「狙いの品質」と「出来映えの品質」とのギャップを埋めるためのあらゆる活動である

「狙いの品質」、つまり経営層が考える品質がぼんやりした状態では、テストをしても「出来映えの品質」は評価できません。
よって、まずは『「狙いの品質」を識別する』活動をします。
そして、テストしてわかった「出来映えの品質」について、「狙いの品質」がどの程度満たされているのかを評価します。

よく聞く話として、「テストで欠陥を指摘したのに、修正してもらえない」という事象があります。
これは、指摘した人が考える「狙いの品質」と、修正するか判断する人が考える「狙いの品質」にギャップがあるが故に起きることではないでしょうか。
高級寿司と回転寿司に異なる価値を見出せるのと同様に、システムにおいても使う人、環境などの条件に応じて「狙いの品質」は変わるはずです。
そこでまずは、「狙いの品質」について、関係者と認識を合わせる必要があるのです。

そして、「狙いの品質」の目線が合った状態で、はじめてテスト等を通じて「出来映えの品質」が評価できます。
評価した結果、「狙いの品質」と「出来映えの品質」にギャップがあるならば、それを埋めるための改善活動を行います。
これが私なりのQA(品質保証)の活動の解釈です。