GameWith Developer Blog

GameWith のエンジニア、デザイナーが技術について日々発信していきます。

GameWith の 手動テスト方法について #GameWith #TechWith

はじめに

こんにちは!GameWith QAエンジニアのIです!

今回のブログは GameWitfh で実施している QA について書いていきたいと思います。

QAとは

Quality Assurance の略で、プロダクトの品質を保証するための業務全般を行なっています。

企業やプロダクトによってチームがあったりなかったりその体制はまちまちですが、GameWith では開発部にQAエンジニアが所属しています。

自動テストと手動テストを併用していますが、今回は手動で行っているテストについて紹介していきたいと思います。

行なっている手動テスト

大きな開発や難易度が高いと思われるテストはQAエンジニアが実施します。

JSTQB(Japan Software Testing Qualifications Board)のテスト7原則でも言われている通り、 テストはやろうと思えば無限に行うことができ、また不具合が0であると証明することはできません。
参照:テスト7原則(Foundation Level シラバス 日本語版 Version 2018V3.1.J02より)
http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018V31.J02.pdf

当然リリースまでの期日も遵守しなければなりません。

その中でどのようなテストを行うのが効果的でよりリスクを下げられるのかテストの設計を行い、 それを元に実際のテストケースに落としていきます。

テストケースはExcelなどのスプレッドシートを用いて管理している場合も多いかと思いますが、 GameWithではGitHubのIssueにMarkdownのtasklist方式で記載を行い、チェックをつけています。

f:id:t_iwsk01:20201124163441p:plain
テストケースの例

この方法はプロダクトの仕様に理解があることが前提にはなりますが、 冗長な条件や手順の記載を避けることで、テスト観点(意図)が端的に伝わるテストケースに仕上げることができます。

結果的に開発担当エンジニアのレビューへの負担を軽減する効果も見込めます。
(別ドキュメントにしたり文章量が増えるとどうしても確認の工数が増え、結果的に目も行き届かなくなります)

テストが可能になり次第、あらかじめ策定した環境にてテストを実施するのですが、 ここでも経験をベースにテストケースの行間を読んだり、仕様の変更などに対して柔軟に対応していきます。

事前の準備は行いますが、全体的にはいわゆる経験ベースの探索的テストに近い部分もあります。

以下はJSTQBにおける探索的テストの定義です。
(JSTQB-Syllabus.Advanced_TA_Version2012.J01より)
http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018V31.J02.pdf

「探索的テストには、テスト担当者がプロダクトとその欠陥の学習、完了すべきテスト作業の計画、テストの設計と実行、および結果の報告を同時に行うという特徴がある。
 テスト担当者は、テスト実行時にテスト目標を動的に調整し、軽量のドキュメントのみを準備する」

こうしたフローを採用することで、1サイクルの短い開発にも素早く効率的にテストが行えるようにしています。

すべてのテストをQAエンジニアが行うわけではない

各プロジェクトの内容によっては、開発を担当したエンジニアに直接テストケースの作成や実施を行ってもらう場合もあります。

GitHubのPull Requestに、エンジニアが開発機能に対するテストケースを記載

QAエンジニアにメンションをつけてレビューを依頼(通知が飛ぶ)

QAエンジニアでレビューして足りない項目がないかを確認し、必要であればテストケースの加筆修正を行なってもらう
という流れです。

こうすることでエンジニアに「開発とテストはセットである」という意識を身につけてもらい、 品質への意識を高く保ってもらうという狙いがあります。

「テストや品質の責任はQAエンジニアのもの」という意識が根付いてしまうと不具合の作り込みも増え、 実際にプロダクトの品質が低下することに繋がってしまう恐れがあります。

使用するユーザーのことを想像したり、より良いプロダクトを提供しようという意識は大切なものです。

QAエンジニアはこういった品質に対する在り方の提案も行なっています。

おわりに

冒頭でQAは企業やプロダクトによってあったりなかったり、体制が異なると書きましたが、 所属する人や業務のフロー、使用しているツールなどにもよってもいろいろ条件が変わってくるため、「これが正解」と言った形は存在しません。

QAエンジニアは品質を担保することももちろん大切な業務ですが、 既存のやり方にとらわれず、プロダクト開発におけるQAの在り方をリードしていくことも大きな役割だと考えています。

今後もそのために尽力していきたいと思います!

GameWithのDeveloper向けTwitterアカウントも開設しています。
良かったらフォロー宜しくお願いします!

twitter.com