目次
今回は社内の成果発表会「P-Review ’19」にて発表した、エンジニア 中島 茉桜さんの資料を紹介します。
※この記事は個人の研究発表であり、会社としての見解ではございません。
P-Review_nakazsimapdf中島 茉桜
2019年コマースサービス部エンジニアとして入社
入社後は主に外部サービスのプロジェクトに携わっている。
(※挨拶省略)
どうして品質テストがテーマなの?
今回のテーマは「より良い品質のためのテスト」です。
なぜこのテーマにしたかというと、私の最初の業務が、テストの実施とテスト仕様書の作成だったからです。
実際にやってみると、テスト仕様書の作成に関してはテスト項目の漏れが多数発見されまして、テスト実施に関しては自分が実施したテスト結果「OK」か「NG」というのに自信がなかったり……ということがありました。
そこで後世の新卒エンジニアに向けて、より良い品質の高いシステム提供に貢献するにはどういったことが必要なのかというのを、テストの意味とともに考えていこうと思います。
一般的な開発工程の流れ
今回紹介するのは、ウォーターフォール型という開発手法です。
ウォーターフォール型の特徴としては、開発手順を一歩ずつ確実に進めていく開発モデルとなっています。
オレンジの矢印のように上から下のコースになっていて、バツのついた矢印の意味はウォーターフォール型の特徴として、前に戻らないという特徴があるためです。
Web開発に関しては、他にもいろんな手法もありますが、いったん割愛します。
より良い品質テストについてくわしくお話します。
V字モデルを紹介!
ウォーターフォールのV字モデルというのは、ソフトウェアの開発→テスト→リリース。
ここまでの一連の流れにおける開発工程と対応関係を表したひとつのモデルのことをいいます。
そもそもテストってなに?
基本的なことですが、実装した機能が期待通り動いているか、どこかおかしい動きをしていないかを確認するために不具合を洗いだす作業のことです。
どうして新人エンジニアがテストを任されるの?
まず考えられることとして、新人をプログラミングに当てるのは、スケジュールも余裕を持たせないといけないし、リスクが大きいという点があげられると思います。
実際に、PM(プロジェクトマネージャ)の方へ理由をたずねました。
・プログラミングに比べて新人エンジニアと経験者の工数の差が少ない
・テスト仕様書の作成は要件を理解する勉強にもなり、プログラミングにも役立つ
(先にテストを書く、テスト駆動開発というものもある)
・プログラミングの知識は必要ないが、システムの概要を把握できる
といった意味があげられました。
極端に言えば、プログラミングを全く知らなくても作業が可能であるというのがテストなんですが、その中でもソースコードや設計書など、システム開発への理解を深める入り口になるというところが新人エンジニアが担当する意味になるのかと思います。
テスト業務でつまづいたこと
テーマ選定の説明でも言いましたが、実施したテストの結果に自信がなかったり、テスト仕様書の項目の漏れということが懸念としてありました。
これらのテスト実施の懸念点を踏まえて、良いテスト仕様書を作成できていないということであると分析しました。
このことはテスト項目に何かしらの不備がある状態ということでもあります。
これは私が実際に作成したテスト仕様書なんですが、一度先輩にレビューしてもらって修正を加えたものです。
漏れだったり、間違っていたところを黄色い背景/赤字にしたものです。
ほんの一部をスクショしたんですが、かなり多くの指摘を頂いてしまいました……。
この要因について自分なりに分析した結果、設計書を十分に読み込めていないという点と、テスト観点を整理できていないという点があげられます。
このテスト観点というのが、ソフトウェアが正しく動作するかを確認するための項目・着眼点・発想の仕方といった、いわばテストを行う上での切り口のようなものになります。
品質の高いテスト仕様書を作るにはどうしたらいいの?
品質の高いテスト仕様書を作成するためには、どういう工夫ができるのかいくつか紹介したいと思います。
テストすべき機能をすべて洗い出そう
まずひとつ目は、テストすべき機能をすべて洗い出すこと。
テスト観点を作成してみたり、整理するとテスト項目の漏れを防ぐだけでなく、思わぬ機能の漏れが見つかることもあります。
例えば、画面表示の制御に関していうと「強調表示される文字は赤色で書かれているか」「エラーが発生した場合、エラー表示の位置・フォントのサイズ」などそういった観点一つ一つを表にしてまとめたものが、テスト品証観点というものです。
※案件によっては既に共通のファイルが作成されているというのもあったりするので、確認してみるといいかもしれません。
テストする順序を確認しよう
無駄な動作がないようにテスト実施できるのか、対象画面への遷移方法やURLを記載するのも効果的だと思います。
テストケースに注釈をつけてみよう
どのようなテスト条件でテストを実施すればいいのか、日付などの数値やパラメータなどを記述し明確にするという点がとても大切なことです。
まとめ:テスト業務とは
・システム開発の工程の一つ
・システムの品質を担保するための非常に重要な工程
・新人エンジニアにとってプログラムやシステムを理解する入り口
ここまで試験仕様書に関して色々あげてきたんですが、正直なところ案件によって書き方が若干変わります。
良い試験仕様書の条件に関して一言で言えば、”人が見てわかりやすいかどうか“というのが一番重要だと思います。
テストを行うエンジニアというのは、機能の内容をすべて理解している人だけが行うものではないので、テストを実施する際に設計書などを確認しなくても、だれもが内容をイメージできることが試験仕様書に関してとても重要なことだと思います。
正しいテスト仕様書の作り方を知ることで、システムの品質は上がります‼
より良い品質の高いシステム提供に貢献するにはどういったことが必要なのか、テストを通してまだまだ一緒に学んで行きましょう。
テスト内容って色々想定しなくちゃいけないから大変そうですね~!
アイコもいつかテストを作ったりする機会があるのかな……?