BASEプロダクトチームブログ

ネットショップ作成サービス「BASE ( https://thebase.in )」、ショッピングアプリ「BASE ( https://thebase.in/sp )」のプロダクトチームによるブログです。

QAという言葉を正しく理解して使っていますか

こんにちは! Process Engineeringグループのセキネです。 入社してからQAという言葉が社内で頻繁に使われることが多いのですが、どうも違和感を感じて今回の内容を社内で共有したところ結構反響があったので紹介したいと思います。

そもそもQAって言葉どういう意味で使っていますか?

実は結構前から社内では人によってQAという言葉の認識が異なっているように思います。 QAという便利な言葉によって認識の齟齬が起きているような話をちょくちょく聞くようになりました。 誤った認識や、認識の齟齬が起こらないようにしていく必要があります!

QA(Quality Assurance) 日本語訳的には品質保証

QA ≠ テストです!!!(テストも含んではいますが、イコールではないです)

もし、 QA=テストとして使っている人がいるのであれば少し認識を改めていただいた方がよいかもしれません。 品質保証の内容は以下の多岐にわたります。品質をよくするための活動全般をさします。

  • 設計段階での機能仕様の確認・評価
  • テストケースの設計・テスト実行 (←QAってここだけじゃないよ
  • テスト結果と不具合の分析
  • テスト自動化の検討
  • 開発プロセスの見直し・改善
  • などなど、品質向上に繋がる活動

コード書いた人に自信を持ってリリースしてもらうための支援という表現が近い気がします。 QAのイメージとしてはこんな感じ f:id:rsekine:20210914175210p:plain

※以下、解説資料( JSTQBシラバス 1.2.2から抜粋)

品質保証(または単に QA)という用語がテストを意味するために使われることがある。しかし、品質保証とテストは、関連してはいるが同じではない。 品質保証は、一般的に、品質が適切なレベルに確実に到達するよう、適切なプロセスを遵守することに重点を置く。 プロセスを適切に遂行すると、これらのプロセスで作成される作業成果物は一般的に高い品質を持つ。 これにより、欠陥の混入を防止できる。 さらに、根本原因分析を使用して欠陥の原因の検出と除去を行い、プロセスを改善するために振り返りミーティングでの発見事を適切に利用することが、品質保証の有効性を高めるために重要である。 品質コントロールには、テスト活動を含め、適切なレベルの品質を達成するために役立つさまざまな活動が含まれる。 テスト活動は、ソフトウェア開発またはメンテナンスプロセス全体の一部を構成する。 品質保証では、テストを含むプロセス全体を適切に実行することが必要となるため、適切なテストを支援する。

じゃあなんて言ったらいいの??

QAだと広義なのでXXXテストと伝えましょう

テスト内でもフェーズを分けて

  • 単体テスト(Unit Test、Component Test)
    • コードを書いた人がモジュールレベルでテストする
  • 結合テスト(Integration Test)←BASE社内でQAと呼ばれてテストしている大部分な気がしていました
    • 単体テストが完了したプログラムモジュールや外部モジュールを本番環境同様に組み合わせ、正しく動作するか検証をおこなうテストです
  • システムテスト(System Test)
    • 開発側の最終検証工程であり、本番と同じ環境ですべての不具合が解消されていることが理想とされます
  • 受入テスト(Accept Test) 
    • 一般的には発注者側がおこなう最終確認テストであり、このテストに合格することで納品・検収が完了します

f:id:rsekine:20210914174823p:plain

その他上記と合わせて、有用なテストタイプ(上手に組み合わせましょう)

  • 探索的テスト(ad hocテストなどと呼ばれたりもします) ←社内ではあまり意識せずにやっている人が多いかも
    • テスト項目は書かずに実施する
    • 実施者の能力、経験に依存する
    • 開発完了前でもスコープをや目的を絞ると有用
      • 工数削減(事前に大きなバグの洗い出し) 
    • 結合テスト、回帰テストで拾えないバグの洗い出し
      • 結合テスト後でも有識者にやってもらうと、想定外の不具合を見つけられるかも?
  • 回帰テスト(リグレッションテスト、デグレチェック)
    • 開発機能とは関係なく、サービス全体が正しく動作しているか確認するテスト
  • セキュリティテスト
  • 負荷テスト

まとめ

QAという言葉は便利ですがこれらを全て含んだ広義な言葉であり、人によって捉え方や認識が異なることが多いので、何を目的としたテストを実施するのか明確に関係者や、テスト実施をしてもらう方に伝えるようにしましょう。 また機能テスト、シナリオテストってよくやるけど、ここに書かれてないのでは。。。?と思われる方もいるかもです。 これらはテストタイプと呼ばれているもので、どのテストレベルでもでき、QAと近しいぐらいフワッとした表現になります。

フェーズと目的を明確にしましょう!

QAエンジニア:採用情報/カジュアル面談