Perforce SoftwareにおけるSquishの成功事例

Perforce Logo

 

この記事はSquish Success at Perforce Softwareの抄訳です。

Perforce Software(英語)は、1995年に創業され、高速に動作するソフトウェア構成管理(SCM)システム「Perforce」の販売とサポートを専門としています。Perforceは、ソースコードや様々なデジタル資産のバージョン管理と管理に使用され、数々の賞に輝いているSCMシステムとして知られています。Perforce SCMは、分散開発やマルチプラットフォーム環境へのシームレスな対応が可能で、世界中で33万人以上の開発者から支持を受けています。

最近、PerforceはSCMシステムの主要なグラフィカルユーザーインターフェイスであるPerforce Visual Client(P4V)のGUIパフォーマンステストに、Squishを導入しました。Perforceパフォーマンス・ラボのエンジニアであるティム・ブラジル氏に、PerforceのSquishの採用についてお話を伺いました。

なぜSquishなのか?

2009年の半ばに、ティム・ブラジル氏は、P4Vに新機能やバグ修正が加えられた際にも、高いパフォーマンスを維持するために、テストツールとしてSquishを採用しました。C++で開発され、Qt GUIライブラリを使用するP4Vは、Windows、Mac OS X、Linux、Solaris、FreeBSD上でグラフィカル・インターフェイスを提供します。

ティム氏が特に気に入ったのは、Squishが複数の標準スクリプト言語をサポートしている点でした。標準的なスクリプト言語を使用することで、テスターは曖昧な独自のテスト言語を学ぶ必要がなく、標準的なスクリプト言語で利用可能な多くのサードパーティモジュールの利点を享受できます。

Squishは、GUIテストの記録と再生ができる完全なGUIベースのテストIDEを提供していますが、ティム氏にとって特に魅力的だったのは、Squishがコマンドラインでの使用もサポートしていることでした。

「私は、スクリプト言語を使いやすいコマンドライン環境で仕事をするのが好きなんです。」「froglogic(現在はQt Group傘下)のアプローチは、私のようなエンジニアを考慮して設計されていると感じます。例えば、envarsファイル、suite.confファイル、squishserver、squishrunnerなどの機能によって、比較的少ない手間で、かなり複雑なテスト環境を構築することができます。」


ティム氏はテスト分野で長い経験を有しており、自動テストと手動テストの両方を強く信奉しています。

「私は、自動化ツールと手動ツールをうまく組み合わせて使うことが、最良のソフトウェアテスティングソリューションだと考えています」


とティム氏は語ります。

「両者の長所を活かすことで、優れた製品を生み出すことができるんです。自動テストの利点には、信頼性、再現性、包括性、速度があります」


さらにティム氏は続けます。

 

「さらに、自動テストはテストシナリオを迅速かつ確実にナビゲートできるため、微細なタイミングの問題を発見する可能性が高まります」

 

また、ティム氏は包括的なテストプランがあっても、正確なテストアクションと環境を確実に再現することは容易ではないことを指摘しています。

PerforceでのSquish使用方法

ティム氏はSquishを使用して、特にWindows Professional、Mac OS X、SLED(SUSE Linux Enterprise Desktop)上でのP4Vのパフォーマンスをテストしています。Squishは、ナイトリービルドと過去3回のP4Vリリースのテストに使用され、毎日のパフォーマンスレポートが作成されます。これにより、パフォーマンスの傾向を特定し、P4Vの継続的な進化に伴う懸念される可能性のある領域を特定します。

ティム氏が使用する各テストは独立して動作するように設計されており、1つのテストが失敗しても後続のテストに影響はありません。サードパーティのツールは使用せず、カスタムPerlスクリプト(runner.pl)でSquishテストを実行します。このスクリプトは、各クライアントマシンでP4VのバージョンごとにSquish P4Vテストの各セットを実行し、結果をXMLファイルに保存します(以下のスクリーンショットを参照)。テストが完了すると、XML結果ファイルは自動的に解析され、テストチームが毎朝レビューするためのHTMLレポートに変換されます。

Perforce - Squish in Practice

Squishの良い点

私たちはティム氏に、彼がすでに述べた複数のスクリプト言語とコマンドラインツールのサポートを除いて、Squishのどの機能が最も気に入ったのかを尋ねました。

彼の答えは、Squishのオブジェクトマップでした:

 

「以前の会社では、座標を使ってオブジェクトを特定するグラフィカルなテストツールを使っていましたが、これはメンテナンスの悪夢でした。Squishのオブジェクトマップの概念はユニークで、テストの可読性、堅牢性、保守性を大幅に向上させるものです」

 

Squishは、ウィジェットなどのアプリケーションオブジェクトを、プロパティの値を使用して一意に識別します。識別されたオブジェクトごとに、Squishは対応するシンボリック名も生成します。このシンボリック名は、テストスクリプト内で通常使用される名前で、開発者がオブジェクトのプロパティの1つを変更した場合、テストエンジニアはオブジェクトマップで対応するオブジェクトのプロパティを1回更新するだけで変更を反映できます。オブジェクトに使用されているシンボリック名は、それが使用されているすべてのテストで機能し続けます。

アプリケーションを実行するプラットフォームによって、オブジェクトプロパティの値が異なる場合があることもあります。しかし、Squishのオブジェクトマップは、オブジェクトを識別するために使用されるプロパティのマッチングだけでなく、ワイルドカードや正規表現のマッチングも使用できるため、このような課題にも対応可能です。

 

「自動GUIテストで直面した最大の課題の一つは、時間の経過とともに製品が変更され進化していく中で、堅牢なテストを維持できるかどうかです。GUIアプリケーションのパフォーマンスはオペレーティングシステムによって異なるため、これは問題となります。特に問題になるのは、ウェブページやGUIアプリケーションオブジェクトのロード時間が異なるため、いつテストする準備ができたかを特定することです。Squishが提供するwait*()関数は、さまざまなプラットフォームで実行したときに一貫した動作が得られるようにテストを調整する上で非常に役立ちました」

 

Squishの文書化された機能に加えて、ティム氏はSquishのテクニカルサポートチームが非常に役立つと感じていると述べています:

 

「Squishの評価を始めたときから、froglogic(現在はQt Group傘下)のサポートには感心していました。ドキュメントに記載がないからといって、それができないわけではないのです。Squishのテクニカルサポートチームは、迅速かつ効率的に機能するソリューションを提供してくれました」

 

結論

Perforceのパフォーマンスラボは、Squishテストの信頼性と再現性に依存して、複数のプラットフォームにわたってアプリケーションのパフォーマンスと動作をチェックしています。Squishの有用性と柔軟性により、Perforceはパフォーマンス品質監視プロセスの不可欠な部分としてSquishを迅速に採用することができました。これにより、以前の手作業によるテストと比較して、時間とコストの節約につながると同時に、テストが自動的かつ確実に繰り返され、製品の品質が保証されるようになりました。

サードパーティツールをP4Vのテストプロセスに不可欠なものにすることは重要なコミットメントですが、PerforceはSquishを選択しました。

froglogic(現在はQt Group傘下)のチームは、時間を割いてSquishとPerforceの経験を共有してくれたティム氏に感謝します。

 

お問い合わせ

SquishをはじめとするQtのQA(品質保証)ツールにご興味のおありの方は、Qt JapanのEメールアドレス:japan@qt.ioまでお気軽にご連絡ください。概要のご説明から詳細な技術的相談、またツールトライアルのご案内もいたしております。


Blog Topics:

Comments