実装エンジニアのテスト vs QAエンジニアのテスト

こんにちは!
フューチャースピリッツWEBエンジニアのマッシュルーム🍄です!!

今回は「テスト」についてのテーマとなります!

アプリケーションにおけるテストとは「動作検証」を指すことが一般的ですが、
では実装エンジニア目線の「テスト」とQAエンジニア目線の「テスト」は、はたして同じ「テスト」といえるのかな?!

考えだすと居ても立っても居られなくなってきたので、僕なりの考えをまとめてみました!

目次

  1. 最終目的は同じ
  2. テストの目的の違い
  3. 視点の違い
  4. テスト内容・粒度の違い
  5. 「仕様」に対するスタンスの違い
  6. バグに対する考え方の違い
  7. まとめ

1.最終目的は同じ

実装エンジニアが行う「テスト」も、QAエンジニアが行う「テスト」も、
ともに「品質を高める」ことを目的としています。

でも、視点・責務・深さがかなり違います。

実装エンジニアのテスト

 - 「自分が書いたコードが、設計どおり正しく動くか」を確認するテスト

QAエンジニアのテスト

 - 「ユーザにとって安心して使えるか」を確認するテスト

ではでは深堀りしていきますね! 🤸

2.テストの目的の違い

実装エンジニアのテスト
主目的:バグを作り込まないこと

 - ロジックが正しいか
 - 仕様通りに実装できているか
 - リファクタリングで壊れていないか

 ➡ つまりテストは「実装の一部
  - この関数は引数Aのときに期待値Bを返すか?
  - 例外ケースでも落ちないか?

QAエンジニアのテスト
主目的:不具合を見つけ、品質リスクを減らすこと

 - ユーザが困るケースはないか
 - 仕様の抜け・矛盾はないか
 - 想定外の使われ方で壊れないか

 ➡ つまりテストは「品質保証
  - ユーザがこの画面で迷わないか?
  - 通信が遅い・切れたらどうなる?
  - この仕様、そもそもおかしくない?

3.視点の違い

観点 実装エンジニア QAエンジニア
視点 内部(コード・設計) 外部(ユーザ・業務)
思考 正常系・設計前提 異常系・想定外
立場 作り手 第三者・利用者の代弁
関心 きちんと動くか 使えるか・壊れないか


QAエンジニアは意図的に性格が悪いテストをします🤣笑
「そんな使い方しないでしょ?」を、あえてやるのがQAエンジニアです。

実装エンジニア : そんな操作しないでしょ?!
QAエンジニア : します

4.テスト内容・粒度の違い

実装エンジニアが主に行うテスト

・単体テスト
・コンポーネントテスト
・APIテスト

 ➡ 入力値がnullのとき例外を投げる
   ステータスが200ならレスポンスを返す

QAエンジニアが主に行うテスト

・結合テスト
・E2Eテスト
・シナリオテスト

 ➡ 会員登録 → ログイン → 購入 → メール受信まで一連で成立するか
   スマホ・PC・ブラウザ違いで崩れないか

5.「仕様」に対するスタンスの違い

実装エンジニア

・仕様は「守るもの」
・曖昧な仕様は「確認してから実装」

QAエンジニア

・仕様は「疑うもの」
・曖昧な仕様は「バグの温床」

「仕様通りだけど、これ本当に正しいですか?」とツッコミをいれるのも、
QAエンジニアの醍醐味なのかなぁと思っています。

6.バグに対する考え方の違い

  実装エンジニア QAエンジニア
バグ 防ぐもの 見つけるもの
バグ報告 修正対象 成果
再現手順 あれば嬉しい 必須


・実装エンジニアにとって、「バグが出ないこと=価値
・QAエンジニアにとって、「バグを見つけること=価値

7.まとめ

いかがでしたでしょうか^^
ともに「品質を高める」という目的は同じです。

では明確になにが異なるのか?

僕が思うに、

実装エンジニアのテスト

 ➡ 品質の土台

QAエンジニアのテスト

 ➡ 品質の最後の砦

どちらかが欠けてしまうと....

・実装テストが弱い ➡ QAが地獄
・QAエンジニアがいない ➡ ユーザがQAになる

こういう関係性なのかなぁと考えました。

フューチャースピリッツには頼れるQAエンジニアが在籍しており、ブログも執筆しています!
(こちら)

実装エンジニアとはまた違った視点の記事がたくさんありますので、是非是非ご覧くださいね🎶