« 風邪で寝込んだり | トップページ | 仕事始め - テストツールのチューニング - »

自分のモチベーションがどんどん下がっていくのがわかる -回帰テスト-

忙しくてブログネタが見つからないのと、モチベーションが下がり気味なので更新が停滞中。。。まあ、波の激しい僕にしては3ヶ月以上モチベーションを上げ続けられたので、進歩かな。

==

今やってる作業は回帰テストツールのメンテナンス。個人的には回帰テストの自動化はアリだと思っているのだが、「知識ゼロから学ぶ ソフトウェアテスト」(翔泳社)のブログでは、基本的に自動化に向かないとの評価。

回帰テスト2 by 知識ゼロから学ぶ ソフトウェアテスト

基本的に回帰テストは自動化に向かない - 回帰テスト設計というエリアがない。テスト設計なしに自動化するというのは、混乱を招く。パフォーマンステストと機能テストとユーザビリティテストをなんら戦略もなくただバグだからといって回帰テストとして自動化するととんでもないことになる。

(中略)

- 多くの直し壊しバグは、以前出た部分ではなく、そのちょっと横とか、似たファンクションで起こりがちである。なので回帰テストの自動化に大きなコストをかけたとしてもコストメリットは出ない。だいたい重要バグなんて数百件
なんてケースがほとんどなんだから(そのうちほとんどがsmoke testでわかるもの)、それを手で回帰テストやっても一日でおわっちゃうでしょ。それなのに、高いツール買ってきて、その高いツールの使い方覚えて、テストケースを書くの時間の無駄である。Cem Kanerだって、意味ないって言ってるし〜。修論に回帰テストの自動化について書いたら怒られたし〜。

この文章を読んでみて思ったのは、自分が使っているツールでは回帰テストというよりもスモークテストのほうがしっくりくるのかな。ちなみにこのツールはメールをSMTPで送信してPOPやIMAP4でチェックするという基本的な機能テストに特化したツール。手動で実施していたのだが、Received行のチェックであったり、タイミングによっては若干の遅延が発生したりするので、何度かテストを実施する日羽陽があるため、ツール化した経緯がある。

「デグレードを防止する」という目的のテストって「回帰テスト」なんだろうか?「スモークテスト」なんだろうか?基本的なことかもしれないが、自分の頭の中ではイマイチ明確化されてないかも。

|

« 風邪で寝込んだり | トップページ | 仕事始め - テストツールのチューニング - »

コメント

リグレションテストの自動化という文句は、リグレション時だけの自動化を意味しているのか良くわかりませんよね...。
リグレションテストの必要が生じてから改めて自動テストを書くのって、それ自体が無計画な気がします。
リグレションテストが自動化に向かないんじゃなくて、そもそも自動テストついてまるっきり取り組んでいなかったプロジェクトで、リグレションだけを自動化しても、確かにしょうがない気がしますよ。
逆に、初めから機能テストツールを作って、テスト書式と実行方法が統一されていれば、リグレションでそんなことに悩む必要なんて無いんじゃないですかね...。
スモークテストは、動くかどうかわかんないけど、まずは一発動かして見る、というテストなので、デグレ防止とは違いますよね、きっと。

投稿: geo | 2006年12月26日 (火) 23:45

>geoさん

コメントありがとうございます。
ご指摘の内容とあわせて今一度考えてみると、僕の今扱っているリグレッションテストの対象は、
それ自体が無計画という範疇に入るプロダクトのようですね。。。

ただ、「そもそも自動テストついてまるっきり取り組んでいなかったプロジェクト(プロダクト)」で、
今後何度もエンハンスがされるものであれば、無計画であってもあとづけで自動化を考えるのは
アリかなと思っています。

スモークテストについては僕の認識が違ってましたね。「テスト前テスト」みたいな
イメージでしょうか。

投稿: softest | 2006年12月27日 (水) 14:15

>スモークテストについては僕の認識が違ってましたね。「テスト前テスト」みたいな
>イメージでしょうか。

そんな感じかなーと思います。

「無計画」っていうのは、なんか言い方悪かったです。自分でも、既存プロダクトのリグレションを楽にするために、後づけでテストツールを作ることはあります...。だって、最初から用意できなかったんだから、今からでも無いよりはあるほうがいいですからね (^_^A;

なんていうか、引用元の「リグレションテストは自動化に向かない」というのが、あまりに短絡的な意見に感じたんです。普通に自動テストに取り組んでいたら、そんな言葉は出てこないんじゃないかと思って。
もちろん、自動化しづらいテストはあるわけですが、Kent BeckやWard Cunningham だったら、ほとんど全てのテストを自動化しちゃうんだろうなと思うと、早くその境地に達したいと遠い目になります。

投稿: geo | 2006年12月27日 (水) 23:57

>geoさん

コメントが遅れましてすみません。
全てのテストを自動化ってのは理想ですね。でも視点を変えると、全てのプロジェクトの仲間が
テストを意識するようにするのも重要かなって思いました。

投稿: softest | 2007年1月 4日 (木) 10:07

言葉の定義から考えると、デグレの防止のテストは「回帰テスト」であると思います。
自動化できるかどうかは別にしてもできる箇所とできない箇所、意味のある箇所とない箇所とあると思います。
そこを明確にしておけば、自動化はすべきであると思います。
自動でも手動でもその前のテストケースが間違っていればまったく意味のないものにはなります。
ということを言いたいのではないかと文脈から推測してみました。

投稿: ただいま修行中 | 2007年1月 5日 (金) 21:17

>スモークテストについては僕の認識が違ってましたね。「テスト前テスト」みたいな
>イメージでしょうか。

スモークテストは元々、ハードウェアの世界で生まれた言葉で、IC回路などを修正して電源を入れた時点で「煙が出なければとりあえず、そのコンポーネントの修正は全体に影響を与えるような問題は無い」というところから来ています。

ソフトウェアでも同様の意味で使われ、毎回のビルド直後に実施される簡単な(といってもできるだけ重要な機能の動作は確認できる)テストコードを自動で流すことが多いようです。

回帰テストの自動化ですが、私はした方がいいと思っています。というのは、高橋さんが仰ることももっともなんですが、悲しいかな、一度直したコードがその後のインテグレーションミスで再発したり、一つのコードを複数の製品で使用している場合にそれぞれのラインでテストする必要があるからです。

究極的には、
 1.バグが発生
 2.再現させるプログラムを組む
 3.バグを修正する
 4.2のプログラムで再現しない事を確認
 5.スモークテストに2のプログラムを追加
というサイクルにすれば価値ある資産(テストウェア)として残っていくと思います。

投稿: あきやま | 2007年1月 6日 (土) 09:18

>ただいま修行中さん

そうですね、「回帰テストは自動化に向かない」という言葉を捉えすぎていたかも。
本質的には後半の「自動化した部分で今後バグがみつかるよりもその近傍で見つかる」
ということがいいたかった、と思えてきます。


>あきやまさん

スモークテストの由来はそういえばどこかでご指摘されたような由来を聞いた気がします。

> 1.バグが発生
> 2.再現させるプログラムを組む
> 3.バグを修正する
> 4.2のプログラムで再現しない事を確認
> 5.スモークテストに2のプログラムを追加

までのサイクルは直感的にもシンプルかつ効果的ですね。

投稿: softest | 2007年1月 6日 (土) 16:09

皆様のご意見、とても勉強になります。
で、私がなんで元の内容に引っかかっているかを考えたところ、どうも「自動」の捉え方が自分と違う気がしました。
私が自動テストに最初に感銘を受けたのは、手作業を自動作業に置き換える「自動化」ではなくて、テストを自動テストコードとして作成することの効果そのものでした。これは、テスト駆動開発で耳タコなほど聞くことと全く同じことです。テストをコードとして作成することに意義を見出していれば、リグレションの自動化の効果云々の話しにはならないんじゃないかと思うんですよね。ましてや、リグレションの自動化よりもスモークテスト云々という話しにもならないと。
自動テストとテストの(作業としての)自動化というものが異なる考え方であり、リグレションを「自動化」するという視点だけならば、確かに意味希薄な場合はあるだろうと考えました。そして、自動テストを創造活動として受入れているチームでは、そういう考え方はあてはまらないんだと分かった気がします。

投稿: geo | 2007年1月 8日 (月) 02:02

>geoさん

なるほど。
自動テスト・・・ビルドによってテストが自動的に実施される取り組み
テスト自動化・・・手作業を自動作業に置き換える取り組み

といった意味でしょうかね。

投稿: softest | 2007年1月 9日 (火) 12:04

自動テスト・・・リファクタリング、動く仕様書など、人間の創造性を最大限引き出すための仕掛け
テスト自動化・・・将来の労力削減のための投資
といった捉え方ですね。

リグレションのためにテストの自動化をするのは無駄だと言える場合でも、創造のために自動テストを作っているチームに対しては、そういう指摘が全くあてはまらないということが分かった感じです。

投稿: geo | 2007年1月10日 (水) 19:36

>geoさん

ご意見ありがとうございますー。
ちょっと自分の理解不足で「創造」というキーワードが自動テストとまだまだ
結びつかない感じです。。

まだまだ勉強が必要な感じだす。^^;

投稿: softest | 2007年1月11日 (木) 22:20

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/155415/4682587

この記事へのトラックバック一覧です: 自分のモチベーションがどんどん下がっていくのがわかる -回帰テスト-:

« 風邪で寝込んだり | トップページ | 仕事始め - テストツールのチューニング - »