信じられないほどのマシンまたは私の最高のテスト

こんにちは 学生についてのあるエピソードで、彼らはコンピュータから自分の手の届く範囲でステレオシステムを運転し、インターネットを介して地球全体に信号を送信していたことを覚えています。 彼らが驚くことを望んだ賢明な少女は感動しませんでした、なぜなら彼女は通常のリモコンが安くて簡単だと信じていたからです。



画像






それにもかかわらず、良いニュースがあります:信じられないほどのマシンがまだ有用である可能性があります。 たとえば、ソフトウェアシステムのテスト用。



さまざまな規格やプロパティのバーコード画像を表示できるはずの大規模なOpenPapyrus ERPシステムに取り組んでいる間に、バーコードレンダリング用の人気のあるzintライブラリを接続しました。 ライブラリは統合され、獲得されました。 ただし、結果をテストする必要があります。



テストに最も適したオプションは、逆関数によるテストです。



画像






ランダムデータが入力され、関数によって変換されます f 、関数は結果に適用されます f1 逆に f 出力を元のデータと比較します。 2つの機能は、正しく動作することを証明するアーマーピアスですぐにテストされます(もちろん、アルゴリズムではなく実装です)。



バーコードレンダリングの逆は、明らかにバーコード画像認識です。 すぐに言ってやった。 彼らは別のオープンソースのzbarライブラリを取りました。 統合-獲得。



画像






これでテストスキームが非常に明確になりました。入力はバーコードとその標準(ean-13、ean-8、upc-a、code-39、qrなど)のテキスト表現です。 この表現は画像に変換され、すぐに認識され、その結果、再びテキスト表現と標準が得られます。



したがって、次のコンポーネントをテストしました。





もう1つのステップがあります。zintはベクターsvg形式でバーコードを出力できますが、zbarは独自の手段でこの形式を理解しませんが、svg画像を読み取り、レンダリングするための独自のインフラストラクチャがあります。 回路にもう1つノットを追加し、テストに含めます。 すべてが機能します。



画像






これで、テスト済みコンポーネントのリストに追加できます。





短い合計



説明されたテストは、互いに独立して実装されたさまざまな目的でかなりの数のモジュールを使用するという点で注目に値します。 別の価値ある特性は、質的に異なるフォーム間でのデータの変換です(テキスト-ベクター画像-ラスター画像-テキスト)。



そして、軟膏のハエ:優れた実証性を備えたこのようなテストは十分ではありません。 彼は、各コンポーネントの定義の非常に狭い範囲でコンポーネントの機能を検証します。 つまり、信じられないほどのマシンメソッドを使用したテストの完全性に依存している(興味深いことに、この文脈でこの用語を使用したことがある人はいますか?)、悲しいかな、それは不可能です。 彼は個々の機能の詳細なテストをキャンセルしません。



ご清聴ありがとうございました。



All Articles