2012年4月24日火曜日

開発者のテストとテストエンジニアの機能テスト - MassKaneko.Out


開発者のテストとテストエンジニアの機能テスト

前から薄々思っていたのですが、両者はケースの作り方が全く異なります。

期待値のあるテストとその限界

開発者の考えるテストケースは想定した入力に対して期待した出力があるかというもの。ユーザ操作などの入力に対して、処理・分岐・値の更新・APIコール・メッセージの送信・ログの記録…等、設計したことが実際に行われているかを確かめるものです。ユニットテストがまさにそうです。ASSERT(result==expected)というのは

「ある条件で、あることをすると、こうなるはずだ。」

というものです。


私は仕事のアプリケーション上での年齢を入れなければならない

テストエンジニアがエンドユーザの行える操作を駆使して行う機能テストにも同じ考えで作られるケースがあります。例えば「ユーザが○○画面の戻るボタンをしたら△△画面に移るか?」というのも結局人間の言葉で書いているだけでASSERT(result==expected)と同じ発想です。抽象度が異なるだけでやることは同じ。


私は仕事を手に入れた

もちろんこの発想だと、設計通りか?を確かめることはできますが、設計し忘れたことが無いか?を確かめることはできません。処理1,2,3をやればいいと考えていれば、4を忘れていたという欠陥は検出できません。機能Aに関するテストは機能Aに関することだけとしていれば、機能Bに影響してしまうという欠陥は検出できません。完璧なテストなど作れない本質的な理由です。こういった問題は設計の段階で人数(視点)を増やして気づきやすくすることによって解決すべきもので、テスト自体は誰が行っても同じ結果になることが望ましいと思っていました。しかしそれは間違いだと実感するようになりました。


インタビューの中で何を言っていない

期待値の無いテスト

文書化されていない全くオリジナルのケースを行ってバグをよく見つける人がいます。開発スキルが優れているわけではありません。どうしてその操作をしようと思ったのか聞いても「たまたま」「なんとなく」という曖昧な答えが返ってきます。世間的にこういったスキルを持つ人種が存在するようです。"テストエンジニア 直観力"で調べると出てきます。

息の長いエンジニアでゆこう: 女性の直感力が生きるIT分野 ?テストエンジニア?

私はとても重要なことに気づきました。彼らの作るテストケースとは

「どうなるかわからないけどやってみよう」


という姿勢から生まれたものなのです。テストとは「ある条件で、あることをすると、こうなるはずだ。」という期待値が無ければならない発想とは全く違います。そもそも「どうなるかわからないけどやってみよう」というのは設計者としては言ってはならないことだと思います。「原因はわからないけどここを変えたら直るかな?」と、あての無い試行錯誤をする人はチェンジニアと揶揄されたりします。

しかし事実、彼らの作る突飛な発想のテストケースによって我々設計者は非常に助けられています。設計者の発想では何人がかりでも非常に想定しにくいケースを拾うのは彼らしかいません。設計者はこうしたケースからあらかじめ何に気をつければよいかを学ぶべき…なのですが、中には学びようが無いことも少なくない気がします。「次から気をつけて下さい」と言われても「何に?」というオチにならざるを得ない場合がある気がします。


とは言っても、バグを見つける突飛なテストケースを思いつくスキルは形式知にできません…と諦めては前に進めません。色々なプロジェクトから突飛なテストケースを集めれば共通項がわかるかもしれません。今のところは、もしチームに期待値の無いテストで多くのバグを見つけるテストエンジニアがいるならば大事にすべきかと思います。つかみ所の無いテーマですが、今後も考えてゆくつもりです。



These are our most popular posts:

第1回 テスト管理システムとは何か? - 技術評論社

2008年9月19日 ... きちんと学びたいテストエンジニアのためのTestLink入門. 第1回 テスト管理 ... で開発 されています。元々は海外で作られていたソフトウェアでしたが,最近は日本でも徐々に 浸透してきているようです。 ... 今回はTestLinkのご紹介する前準備として,「テスト管理 システムとは何か」「では,そもそもテスト管理とは?」といったこと ... read more

ASCII.jp:第2回 「テストエンジニア」で一歩先行くためには|組込み一直線

2008年1月31日 ... テストエンジニアが現場で担う役割りや陥りやすいテストの失敗の原因とは何か。そして テストエンジニアとしてキャリア ... このように、多種多様な検査を経て、組込み系 ソフトウェアの品質は高まっていくのです。 とはいえ、品質を高めるために ... read more

きちんと学びたいテストエンジニアのためのTestLink入門:第2回 ...

2008年10月3日 ... 前回は,TestLink自体の説明に入る前段階として,そもそも「テスト管理」とは何かという ことについて説明しました。 ... Webベースのアプリケーションですので,Webサーバ( Apacheなど)とデータベース(MySQLなど)の環境で動作します。 read more

第40回 ソフトウェア・テストエンジニア "いろは"のおまけ|SQiP ...

2011年11月16日 ... テストはいつ終了すれば良いのですか?」 この質問 ... では、その基準は何かというと、 各テストの計画段階で設定した、全ての実施項目が実施されていることです。テスト ... 今回では私のソフトウェア・テストエンジニア "いろは"は、最終回です。 read more

0 件のコメント:

コメントを投稿