はじめに
はじめまして!
リンクアンドモチベーションの新卒エンジニアの渡邊です。
全くの未経験から、全社研修、プログラミング研修を経て配属され、現在三ヶ月目になります。
まずはプロダクトやデータベースを知るところを含めて、ソフトウェアテストを実施しております。
最初は「QAって何?」というところから理解をする必要があったため、
先輩社員に「QAとは」を聞くところから始めることにしました。
今回はその時に学んだことをまとめたいと思います。
QAとテストの違い
Quality Assurance=品質保証という意味なので、本来「QAする」とは言わない
テストとQAの違いについて、以下忘備録としてあげておきます。
ソフトウェアテスト (英: software testing) は、コンピュータのプログラムから仕様にない振舞または欠陥(バグ)を見つけ出す作業のこと
ソフトウェア品質保証(英: software quality assurance, SQA)は、ソフトウェアの適切な品質を保証するために、プロジェクトで使用されるソフトウェアエンジニアリングプロセスと方法を監視する手段と実践である
引用:Wikipedia
- QA は開発組織として品質を保証するための仕組みを整え、標準化することであり、
-
テスト は品質を保証するための行為である
ということですね。
バグって何のこと?
バグは、以下の2つに分けられます。
① −(マイナス)→ 0(ゼロ)のバグ
② 0(ゼロ)→+(プラス)のバグ
「テストでバグを見つける」というと、①のことかと思いがちですが、②も含まれている。
バグとは、故障ではなく改善点、ということなのですね。
②のバグを見つけるには、 テスト=作業 ではなく 、 プロダクトの改善活動 と捉えて
ユーザー視点で取り組むことが大事だなと思いました。
シフトレフトという考え方
テストで「バグ」を発見することがゴールかというと、そうではありません。
テストはあくまでもプロダクトが壊れていないかどうかを確認するものであり、
テストで発見したものを改善して初めて品質が上がります。
とはいえ、テスト段階で改善点を発見してデバック、となると余計な工数がかかってしまいます。
品質保証を前段階の設計・プロセス管理から考慮する、シフトレフトという考え方があります。
シフトレフトとは
セキュリティに関する問題がソフトウェア開発ライフサイクルの早い段階で対処されること を意味します
引用:google cloud(https://cloud.google.com/architecture/devops/devops-tech-shifting-left-on-security?hl=ja)
ユーザーストーリーについて
設計段階で考慮された品質をテストでどう担保できるようになるのでしょうか?
そこで重要なのがユーザーストーリーです。
ユーザーストーリーの重要性
ユーザーストーリーは ユーザーに何を届けたいのか、何を守りたいのかを理解するためにも重要なものです。
ユーザーストーリーについて具体例をあげて考えてみます。
例)携帯のオンラインストアの登録番号のバリデーションテスト
4桁の番号入力のテストケースの際に、入力例に「9999」しか記載されていない
→ケース通りに進めるのであれば、「9999」のケースのみの検証にとどまる
このケースにおけるユーザーストーリーは以下のようになります。
携帯の登録情報を変更するには、契約申込の時に入力した4桁の番号が必要
個人情報を悪意のある第三者に簡単に変更できないように、4桁の番号は連番・誕生日は不可となっている
上記のストーリーを理解した上でテストを行えば、
「1234」とか、他の連番にもバリデーションがかかるべきではないか?
という発想が生まれ、テスト設計者の構想外のパターンで検証ができるのです。
良いストーリーはどんなものなのか
良いストーリーとは、 テストの意義の部分を理解できるストーリーとなります。
ドリルを買いにきた人が欲しいのはドリルではなく『穴』である
引用:『マーケティング発想法』(1968年)
上記のようなマーケティングの話にもあるように、プロダクトにおいても
ユーザーが何を必要としているのか、何をもって喜ぶのか、その本質を捉えることが品質向上に繋がります。
ユーザーストーリーは、より多くの目で・主体的に品質保証に取り組むためにも
プロダクトに関わる人が理解するべきものだと感じました。
おわりに 「QAとは」
以上のことから、
プロダクトの品質向上のためには、サービスの設計段階から「本当に必要な機能なのか」を考え、
関係者が意義を理解して開発していく必要があると感じました。
リンクアンドモチベーションの開発組織では、品質保証をチーム全体で取り組むことに注力しています。
先輩は
QAの改善によるプロダクトの安全性・信頼性の向上がゴールではなくて
その上で、 顧客のこと、プロダクトの進化に関する思考時間を増やせるようになるのがゴールである
とおっしゃっていました。
まだまだできることは少ないですが、プロダクトの品質向上に少しでも貢献できるように、
新人なりに日々頑張っていきたいと思います。
最後までご覧いただき、ありがとうございました!