このブログは「CERN using Squish for Multi-Platform SCADA GUI Regression Testing」を翻訳・一部加筆したものです。
10年前、CERNは産業用制御システム開発のためのJCOP(Joint Controls Projects)フレームワークと呼ばれるツールキットを開発しました。このフレームワークは、実験、粒子加速器、CERNの技術インフラを制御するシステムの構築をサポートするために設計されています。
JCOPフレームワークは、WinCC-OAで構築されたSCADA(Supervisory Control and Data Acquisition)技術へのアクセスを簡素化し、統一するために設計されたソフトウェアレイヤーです。JCOP フレームワークは、コードライブラリと相当量の GUI ソフトウェアから構成されています。このフレームワークはCERN全体で広く使用されているため、信頼性と安定性を確保するために、正式な自動品質保証プロセスを構築する必要がありました。これには、WindowsとLinuxの両方で日々の回帰テストを確実にサポートするツールが必要でした。
さまざまなGUIテストツールを評価した後、CERNのテストエンジニアであるPaul Burkimsher氏、Manuel Gonzalez-Berges氏、Stefan Klikovits氏はSquishを使用することを選択し、CERNは最初のSquishライセンスを取得しました。
CERNのテストエンジニアの最初のアプローチは、Squishのテスト記録機能を広範囲に利用することでした(彼らの場合、テストをPythonで記録することにしました)。残念ながら、複雑なソフトウェアスタック(Qt、WinCC-OA、JCOP自体)の変更やSquishの新バージョンの改良が、Squishの再生の信頼性に影響を与えることがあったため、これは必ずしも彼らが期待していたほど堅牢ではありませんでした。
この課題に対処するため、CERNのテストエンジニアは記録されたSquishテストを分析し、これをベースに独自の高レベルオブジェクト指向テストライブラリを作成しました。このライブラリには、テストするすべてのGUIウィジェット用のクラスが含まれています。ライブラリを持つことで、単にテストを記録することで生成される重複コードを大幅に削減し、GUIインタラクションをライブラリへの呼び出しに抽象化することができるようになりました。その結果、テストエンジニアはすべての定義済み機能をベースに開発を進めることができるため、テスト開発がより迅速かつ容易になりました。もちろん、この作業によって、すべてのテストケースのロバスト性も格段に向上しています。テストに影響を与えるような基本的なソフトウェアスタックへの変更は、大規模なテストケースをチェックして変更するのではなく、単一のライブラリを更新することで対応できるようになったからです。
CERNのテストエンジニアにとってもう一つ重要なことは、WindowsとLinuxの両方でテストできることである。彼らはさまざまなソリューションを試したが、最終的にはHudsonツール(Squishとの統合も可能)を使ったCI(継続的インテグレーション)アプローチを採用しました。当初はすべてのテストを異なる物理マシンで実行していたが、現在はCERNコンピュータセンターでホストされている仮想マシンの使用に切り替えています。
CERNのテストエンジニアは、Squishの使用方法、発生した課題、そして発見した解決策について記述した簡単な技術論文を発表しました。この論文は、第13回加速器・大実験物理学制御システム国際会議で発表されました:
Multi-platform SCADA GUI Regression Testing at CERN
Multi-platform SCADA GUI Regression Testing at CERN (Slides)