スリーポイントで押さえるQA(Quality Assurance)

## QA(Quality Assurance)スリーポイントまとめ
1. QAは品質管理を行って顧客の期待に応え続けること
- QAのスコープは出荷前と出荷後の両方
- QAとテストは異なるもの

##1. QAは品質管理を行って顧客の期待に応え続けること
###1.1 英英辞書の説明
"Quality Assurance" を英英辞書[^1]で調べたところ以下のような説明を得ました。

|辞書|New Oxford American Dictionary|Oxford Advanced Learner's Dictionary|Oxford Business English Dictionary
|----|----|----|----
|説明|the maintenance of a desired level of quality in a service or product, esp. by means of attention to every stage of the process of delivery or production.|the practice of managing the way goods are produced or services are provided to make sure they are kept at a high standard.|(Production) the practice of managing every stage of the process of producing goods or providing services to make sure they are kept at the standard that the customer expects.
|Google翻訳|特に配送または生産のプロセスのすべての段階に注意を向けることによる、サービスまたは製品の品質の望ましいレベルの維持。|商品の生産方法やサービスの提供方法を管理して、商品が高水準に保たれるようにします。|(製造) 商品の生産またはサービスの提供のプロセスのすべての段階を管理して、顧客が期待する水準に維持されるようにすること。

なかでもOxford Business English Dictionaryは一般向けの辞書ながら"プロセスのすべての段階を管理"、"顧客が期待する水準"、"維持されるようにする"という説明をしていて納得感があります。

|説明|筆者の補足[^2]|
|----|----|
|プロセスのすべての段階を管理|すべての工程が品質管理の対象であり、特定の工程(例えばテスト工程)に限定されない|
|顧客が期待する水準|品質の基準は顧客であり、["オレオレ品質"](https://www.google.co.jp/search?hl=ja&as_q="オレオレ品質")[^3]ではない|
|維持されるようにする|品質保証は各工程のメンバーすべてで取り組むものであり、QAだけで取り組むものではない|

##1.2 [ソフトウェア品質保証のメモ](https://qiita.com/pbjpkas/items/8064523ea5170adf5678)で引用した用語解説の説明
Oxford Business English Dictionaryよりさらに具体的な解説がされています。ハードウェアをイメージすると分かりやすいです。

> 製品が品質基準に合致しているかを、設計・試作・製造・検査の全ての工程で確認する仕組みがあり、それを実行していることを保証する、請合う、自信をもって言う([Limited warranty - 英借文ドットコム(Web Archive)](https://web.archive.org/web/20171213194528/http://www.eishakubun.com/warranty.html))

###1.3 ISTQBの説明
[ISTQB](https://www.istqb.org/)の用語集から[Quality Assurance](https://glossary.istqb.org/en/search/quality%20assurance)の説明を引用します。

> - Activities focused on providing confidence that quality requirements will be fulfilled. (English)
> - 品質要件が満たされるという確信を提供することに焦点を当てた活動。(Japanese)

Oxford Business English Dictionaryでは"顧客が期待する水準"となっているのがISTQBの解説では"品質要件"となっています。期待は提供者側でコントロールできるものではないし達成したかどうかの判断も難しいですが、要件であれば要件定義書で明文化されて発注側と受注側で共通の認識を持ちやすいですね。

###1.4 富士通ソフトウェアテクノロジーズのテクノロジーコラムの説明
[富士通ソフトウェアテクノロジーズ](https://www.fujitsu.com/jp/group/fst/)の[テクノロジーコラム](https://www.fujitsu.com/jp/group/fst/about/resources/featurestories/index.html)、[アジャイル開発の品質管理技法（前編）開発プロセスの特徴](https://www.fujitsu.com/jp/group/fst/about/resources/featurestories/about-agile-04.html)を拝読していたところ

> - 品質管理は、出来栄えをみながらつくり方を微調整すること、それを繰り返すこと。
> - 品質保証は、お客様や市場の求める品質を会社として請け合うこと。（ですから、品質保証にはバグが無いこと以外に、求められているものを提供するということも含みます）
> - 品質保証の本質は、要求と提供のギャップの極小化[^4]

という解説があってわかりやすいと思いました。ただし

- 期待ではなく要求
- 極小化とあって要求を満たさないだけでなく超えるのもマズい

というのは注意深く読むべきと思いました。

##2. QAのスコープは出荷前と出荷後の両方
ソフトウェア品質保証のテキストである「[ソフトウェア品質保証入門](https://www.amazon.co.jp/dp/4817192631)」や「[ソフトウェア品質保証の基本](https://www.amazon.co.jp/dp/4817196572)」のいすれもフィールド保証やサポートといった出荷後のトピックスを扱っていることからわかるようにQAのスコープは出荷前と出荷後の両方です。以下にそれぞれの書籍の目次を示します。

[ソフトウェア品質保証入門](https://www.amazon.co.jp/dp/4817192631)
第1章 ソフトウェア品質保証の考え方
第2章 ソフトウェア開発と品質保証の方法
第3章 フィールド保証
第4章 品質検証・評価の主要技術
第5章 人材育成
第6章 いま求められている品質保証

[ソフトウェア品質保証の基本](https://www.amazon.co.jp/dp/4817196572)
第1章 ソフトウェア品質保証の今日的な課題
第2章 ソフトウェア品質保証の原則
第3章 ソフトウェア開発の品質保証
第4章 フィールド品質保証とソフトウェアサポート
第5章 組織的なソフトウェア品質マネジメント
第6章 ソフトウェア品質保証を支える技術
第7章 これからのソフトウェア品質保証
付録:ソフトウェア品質保証原則と対応する施策一覧

##3. QAとテストは異なるもの
QAとテストはしばしば一緒くたにされますが、ここまで見てきたようにスコープも役割も異なるものです。

[^1]: 引用元は筆者所有のSII製電子辞書[SR-G9000](https://www.sii.co.jp/cp/products/english/srg9000/index.html)です
[^2]: 蛇足という説もあり
[^3]: 井の中の蛙状態で品質がいいと判断してしまうこと([ソフトウェア品質管理研究会](https://www.juse.or.jp/sqip/workshop/index.html) [第33年度(2017年度)分科会成果報告](https://www.juse.or.jp/sqip/workshop/report/2017.html) 演習コースⅠ「ソフトウェア工学の基礎」[付録](https://www.juse.or.jp/sqip/workshop/report/attachs/2017/i_furoku.pdf) 第9回(臨時会):メトリクスの基礎とGQM法によるゴール指向の測定:鷲崎弘宜(早稲田大学/国立情報学研究所))
[^4]: [XP祭り2019 B-6 アジャイルソフトウェア開発への統計的品質管理の応用](https://www.slideshare.net/sakataakinori/xp2019-b6)([https://www.slideshare.net/sakataakinori/xp2019-b6](https://www.slideshare.net/sakataakinori/xp2019-b6)) p.50にも同様のフレーズがあります