単体テストソフトウェアを使用して、単体テストを実行できますか?


8

QUnitは、次のように自身のWebページに広告を出します。

...それ自体を含む、任意の一般的なJavaScriptコードをテストできます!

単体テストソフトウェアを実際に使用してテストできますか?ソフトウェアの欠陥は結果が信頼できないことを意味しませんか?


2
これは本当に解決しようとしている問題ですか?それとも、理論についての議論を始めたいですか?
ジムG.

8
@JimG。この質問には決定的な議論の余地のない答えがあると確信しています。
JJJ 2012

回答:


16

はい、できます。JUnitには、独自の機能をテストするための広範なテストスイートがあり、好きな作者に尋ねます。これは、プロジェクトを拡張する際の生産性にとってこれが不可欠であると教えてくれます。おそらくほとんどのテストツールは同じことをします。

トリックは、新機能のテストが実際に新機能自体を使用している必要はないということです-それは単にそれを実行して結果をテストする必要があるだけです。このようにして、システムの一部の機能の信頼性を使用して、はるかに大きな部分の信頼性を確立できます。これは、セルフホスティングコンパイラがブートストラップされる方法に似ており、コンピューティング理論の基本的な手法です。


テストを使用してテストフレームワークを作成するまさにその例は、優れた本「Clean Code」
CaffGeek

7

ケントベックの著書「例によるテスト駆動開発」はまさにこれを実行します。TDDの例として、彼は最初から自分自身の開発に使用されるテストフレームワークをブートストラップします。


多分これは私が参照するつもりだった本であり、Clean Codeではない...あまりに多くの本、わずかな記憶に。
CaffGeek 2012

1
コンパイラーと同じようにテストフレームワークに関連するブートストラップの + 1。dogfoodingも参照してください。
マークブース

3

あなたは正しいです、ソフトウェアの欠陥は結果が信頼できないことを意味します。ただし、それを回避して、信頼できるテストスイートを構築する方法があります。

アイデアは、テストシステムの各コンポーネントの非常に基本的な「コア」機能をテストする小さなテストハーネスを構築することです(通常、少なくともフレームワークとランナーで構成されます)。テストフレームワークが十分に柔軟である場合、たとえば、インターフェイスを実装したり、ハーネスの実装に必要なメソッドセットを提供したりすることにより、そのハーネスをシステムに直接接続できるはずです。

残りの機能は、ハーネスを使用してすでにテストされている「コア」機能のみに依存してテストする必要があります。「コア」の機能のみを使用して非コア機能をテストする場合は、信頼できる一連のテストがあります。


0

qunitについては知りませんが、以前のバージョンのソリューションを使用して新しいバージョンを検証するプロジェクトをいくつか行ったので、それを無効なアプローチとは見なしません。

統合されていない、またはUATテストのない真空での単体テストパッケージは、テストパッケージ自体の欠陥、および単体テストスイートがカバーできない通常の統合の問題すべての影響を受けやすいため、私は同じバージョンでのセルフテストは、他のプロジェクトでの新しい単体テストを信頼するよりも欠点があります。

プロジェクトのリンクされたサイトを簡単に読むと、セルフテストライブラリが完全なソリューションであることを宣伝しているよりも、テストシナリオやテストできるターゲットについて特別なケースは何もないことを指摘しているように聞こえます。


-1

ソフトウェアをそれ自体でテストすることはできません。少なくとも、監査状況で許容できる方法でテストすることはできません。2つの異なるX(人、フレームワーク、ツール)が両方とも同じ間違いをしたり、同じバグを抱えたりする可能性がはるかに低いため、独立した検証は確立された規範となっています。これは、テストが実際に正しいことを保証するものではありませんが、テストに不合格になる可能性が低くなることを意味します。それ自体で何かをテストしても、実際にそれが正しく機能するという確信を高めることはできませんが、フィードバックを受け取るまでにかかる時間を短縮するための迅速でダーティなチェックとして役立ちます。


テストで成功と失敗の両方のケースをテストする必要があることをご存知ですか?また、通常、それ自体でテストフレームワークをテストする場合は、フレームワークの「既知の良好な」バージョンを使用する必要があります。私は、リリースする前の最終的な受け入れテストとして、テストフレームワークの「開発」バージョンのみを使用します。
Binarycleric 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.