新人なりに ”QAとはなにか" の問いに対する自分の考えを語ってみた
目次
前置き
筆者について
興味を持っていただいてありがとうございます、halspringと名乗っている者です。
現在、web系企業に今年4月入社、配属からようやく4カ月のひよっこQAエンジニアです。
あくまで個人的な見解、意見なので賛同・反論・助言することがあれば 是非コメント等お願い致します。
現場の環境や状況が不明瞭な状態で語るよりも、どんな環境で働いてどんな考えを持ったか、どのような立場の意見かが はっきりしていた方が良いかと思うため、
少々説明を入れます。
さっさと次!という方は読み飛ばして本題だけお読み頂ければ幸いです。
開発文化
弊社では開発チームが企画からテストまで行います。
各チームにQAのような立場の人がいるわけではなく、別組織に近い形で必要に応じて開発チームをサポートしています。
もっとも近くにいる独立組織のような立ち位置だと思います。
QAの関わり方
弊社では、ヘルプを求めてきたチームもしくはリスクの高いPJに関与します。
(その他、自動テストでデグレチェックもしていますが割愛)
関わり方も様々で、
開発チームへのレクチャー
テスト計画書の作成(ヒアリングから)
開発側が作成したテスト計画書やテスト仕様書のレビュー
テスト仕様書作成のために観点の洗い出し
開発側が洗い出した観点のレビュー
テストケースの作成
テストケースのレビュー
テスト実施状況の可視化
バグ分析
メトリクスの収集・分析
スケジュールの設定・見直し
PJ進行方針の提案
ツールの導入
探索的テスト実施
等々、いくつもパターンがあります。 (むしろ パターンがないのかもしれません。)
ここまでツラツラと書いておいてなんですが、
予め理解して頂きたいことは「QA ≠ テストする人」の環境で育っており、その認識で今QAをしている、ということです。
新人なりに考えた”品質とは”
今の業務に就き、"品質とはなにか"を考えるようになりました。
この界隈では非常にあるあるな問いですが、明確なひとつの答えをもつものではないので意見が割れるところだと思います。
ですので、ここで述べる意見もあくまで一個人の考えです。もちろん、人間ですから考えが変わることもありますし、考えをぶつけ合ってよりよいものにしていきたいものです。
少し脱線しました、"品質とは"に戻ります。
私なりの"品質"の考え方は「ユーザーが本当に求めているもの(価値)を提供できているか」という軸で成り立っています。
つまり、「Aを良くすれば品質がよくなる」だとか「Bを早くすれば~」とか「Cの故障率を~」や「Dのバグを~」のようなものではないと考えています。
例えばWebであれば表示が早くなれば品質が上がったと言っても もちろん間違いではありません。
しかし、「ただ早くすればいい」ではないということです。
よって、よく言われる「テストをすれば品質があがる」「バグがなければ品質が高い」というのは"品質"の本質ではないというのが私なりのスタンスになります。
テストは何のために行うのか
テストで品質はよくなる?
ですが上記の通り、普段 私は業務でテストに関することをしている割合が多いです。
「言ってることとやっていることが違うじゃないか!」というのは早合点で、テストを行うことで品質を高めることはできます。
ただ、テストだけが全てではないですし、テストをすれば絶対に品質がよくなるわけではないと考えています。 (まさにバグゼロの落とし穴ですね)
品質を高めるには
テストで品質を高めるためには、「テストをする目的や意図」を理解・意識しながら行う必要があると思います。
「現場で先輩がこんな感じにやればいいって言ってた」「過去のテストケースみたらこんなこと書いてた」では
そのテストでどんな品質が保証されたのかわかりません。
テストをなぜ実施するのか、それは、
ある特定の要素に対して、それを保証するためです。
ここで言う特定の要素は、機能・速度・正確さ・効率・保守性・信頼性・安全性やそれ以外にも多岐に渡ります。
いずれにせよ、何かを保証したり確かめるためのテスト、すなわち、保証したいものがあってこそのテストなのです。
テストの意図や目的を理解・意識してこそ、正しく設計・実施・保証ができるというわけです。
ではQAとは
「今度はテストが大事って話になってきてない?」はい、そうかもしれません。
テストが大事なのはもちろん認識として持っています。
ではQAはテストをしっかりと目的を意識して設計・実施すればよいのか?
それは少し違う気がしています。
テストに関することだけを行うのであれば、それはQAではなくテスターやテストエンジニアでいいのではないでしょうか。
QAは品質保証を行う業務です。ですので、品質を高めるためにできることをやるのが仕事だと思います。
組織の文化や体制によってできることは異なります。
しかし、そのできること郡の中からいかに品質を高めるために動くことができるか、がQAとしての腕の見せどころではないでしょうか。
テストを担うことしかできないのならテストで品質向上に努めるように、
一歩離れた位置にいるのなら客観的なレビューやプロセス改善、他にも開発が開発に専念するためにできることがあるはずで、
それを行うのがQAだと思っています。
明確に役割を定義せず、あえて曖昧さを持たせることが重要な気がしています。
どうせ正解はないので、自分の思うQAとは何か、を自分の中に持っていればいいと思います。
十人十色のQAがあるべきです。
理想的なQA組織って?
QAの在り方
QAは特に役員のような強い権限を持っているわけではなく(持っているところもあるかもしれませんが)、
企画段階から方向性に口を出せるような立場ではないことが多いと思っています。
(これは業界に詳しくないので確かではありませんが)
また、仮にそのような"強いQA組織"があったとしても、
「そんな初期段階から文句を言われるくらいなら、最初からあんたらが作ればいいじゃん」といった不満が出ないとも限りません。
(私が開発側なら少なくとも1回はそういった不満を漏らすでしょう)
QAはあくまでも開発チームに寄り添う存在であり最高の右腕で在ることが望ましいと私は思います。
開発が開発に専念するためにテスト設計をサポートしたり、バグの分析を行って作り込みを防止したり。
メンバーにテストや品質特性について質問されれば、真摯に向き合い全体の意識を高められるようレクチャーしたり。
プロジェクトがあらぬ方向を向き始めたら、一歩引いた冷静な立場から熱が冷めないようにそっと軌道を修正したり。
この絶妙さが難しく、しかしおもしろい。これこそがQAの在り方だと思います。
QAはいなくなるのが理想?
最近まで、最終的にQAはいなくなるのが理想なのでは?と考えていました。
開発チームや組織全体の品質意識を高め、全員が他所でQAを名乗れるほどになれば"QA"という組織はその組織には不要ではないかと。
そして、それが理想なのではないか、と。
たしかに、これはQAの思い描く「夢」だと思います。
全員が自分達のような品質に対する思いを持って、正しくテストを理解して実施できる。
夢のような光景です。
ですが、品質に満場一致の充分はありませんし、十人十色の品質があるのではないでしょうか。
また、QAがいなければ誰が客観的な立場から品質を確かめることができるのでしょうか。
開発者は開発者であるが故に"純粋なユーザー"にはなれないのです。
だからこそ、一番近い他人のような一歩引いた立ち位置から開発側の思いを理解しつつ、
そのプロダクトやサービスを享受するユーザーのことも考えることができるQAという存在が必要だと思うようになりました。
「QAがいなくても全然やっていけるんじゃない?」と冗談交じりで言われるくらいの組織を作るのはもちろん間違いではなく、目指すべきだと思います。
しかし、本当にQAがいなくなってはいけない。
だからこそ、QAの思い描く「夢」なのだと私は思います。
全員が法律を学び正義の心を持って行動すれば警察は不要か、裁判官は不要か。
自分の答えはNoで、第三者の視点は絶対になくてはなりません。
ちなみに同じ前提で「当事者ではない全くの他人に裁いて貰えばいい」というのも誤りです。
その第三者の"本来別のことに使うはずだった時間を搾取"しています。
そうなると、最初はうまく回っていても いつか必ず破綻すると思います。
開発チームは人の集まりであり、理想はあくまで理想のまま目指すものとして、専門の人が残っている状態くらいがちょうど良いのではないでしょうか。
おわりに
まとまっているような、まとまっていないような文章になってしまいました。
書き始めると熱くなってしまうので、話が脱線したり極端な方向に向いがちですね...
結果 第三者による客観的な助言が必要なのでQAはやっぱり必要ですね(強引なまとめ)
冗談はさておき、これは個人的な思いですので、読んでくださった皆様が異なる意見であっても否定するつもりはありません。
"十人十色の品質"があり、むしろそうであった方が健全な気がします。
拙い文章でしたが、ここまでお付き合い頂きありがとうございました。
少しでも皆様が改めて何かを考えるきっかきになったり、何かの後押しになれば幸いです。
皆様の感想やご意見等、お待ちしております。