こんにちは、株式会社DiverseでQAを担当している村上です!
QAを担当して1年ちょい経って、学びが多かったのでこれを機に書こうと思います。
インフォメーション
自社サービスとしてのQA経験を踏まえて書いているのでタイトルには「toCサービスにおける」と記載しています。
QAとは
QA = Quality Assurance(品質保証)
直訳すると品質保証になります。
ではそもそも品質とはなんでしょうか?
Quality(品質)とは
- 要求に対する適合(Crosby, 1926/6/18 - 2001/8/18)
- 誰かにとっての価値(Weinberg, 1933/10/27 - 2018/8/7)
上記で書いてあるように品質の定義というのは時代や人によって様々ですが、ユーザーファーストな現代においては誰かにとっての価値であることの方が重要なのかなと思っています。
上を踏まえて品質保証とは
会社によっては品質を保証するための役割もしくはその活動のことを指したりします。
個人的に品質保証とは、対象物が「期待されている要求やニーズを実現したサービスであること」を保証する活動だと考えています。
上は以下2つを保証していることを意味します
- 機能要件そのものの品質保証
- 実装された機能がユーザーのニーズに合致していることの保証
品質保証のための活動
ではどのように品質を保証しているかというとプロダクト品質とプロセス品質という2つの観点があります
ここではプロダクト品質とプロセス品質の2点があります。
プロダクト品質
成果物をテストして顧客に提供できるようにする活動であり、できたものがどれだけ要求と合致しているかを確認し、不具合があれば手直しをして品質を高める方法です。
これは結果系と言われています。
プロセス品質
一方、プロセス品質とは企画や開発の段階から品質の高いものを作り出すプロセスを整えることで品質を高めるという方法です。
これは要因系と言われています。
具体的な活動例
-
プロダクト品質
- コードレビュー
- 静的解析ツールの運用
- テスターによる機能テスト ←QAチームが担当している部分
- 動的テストツールの運用
-
プロセス品質
- CI/CDツールの利用
- ワークフローの運用
- 開発ブランチのルール設定
一見QAと聞くとテストを思い浮かべがちですが、こうして見てみるとテストというのは品質保証活動の中のほんの一部だということがわかります。
要求に対する適合
でも出てきたクロスビーさんも**重要なのは予防策であり、検査や手直しではない。**と言っているようにプロダクト品質(検査)よりもプロセス品質(予防)の方が重要であるという考えもあります。
まとめ
- 品質の定義というのは時代や対象物によってそれぞれだが、現代のソフトウェア品質においては誰かにとっての価値というのが重要
- 品質保証のための活動としてはプロダクト品質とプロセス品質の2種類がある
-
プロダクト品質
成果物をテストして顧客に提供できるようにする活動 -
プロセス品質
成果物が出来上がるまでのプロセスを整えることで不具合が出る可能性を減らす活動
-
※勉強途中のため修正あればコメントください