1

私のチームは、クライアント サーバー セットアップで使用されるデスクトップ アプリケーション (混合 C++/Tcl) を開発しています。現在は Windows 専用ですが、すぐに Linux に移植する必要があります。CruiseControl.NET は毎晩 SVN のソース コードからビルドし、NSIS インストーラーにパッケージ化しますが、実行する自動テストはありません。
単体テストを追加することはほとんど不可能ですが、アプリケーションの統合テストは簡単です。これは、アプリケーションが既にスクリプト ベースでかなりの部分を占めているためです。
主なタスクは、アプリを 3 台の PC にインストールし、構成 (いくつかのファイルをコピーすることを含む)、実行、クラッシュの可能性を監視、統合テストが完了するまで待機、概要を収集、電子メールを送信することです。一連のカスタム PowerShell スクリプトを使用して実行できますが、

  • 将来的には、より多くの機能を追加し、より多くのテストを行いたいと考えており、以前は単純なスクリプトであったものはすぐに爆発します (いつものように)。そのため、カスタム スクリプトを最小限に抑えたいと考えています。また、何かスクリプトを作成する必要がある場合は、bash/cygwin を好みます。 (私は Python や Ruby に詳しくありません)。
  • 現在の進行状況を報告し、何かが失敗した場合はログを表示する Web ダッシュボードが必要です
  • テスト中のアプリを監視し、ハングまたはクラッシュした場合に報告するスーパーバイザーが必要です
  • Linuxでもテストする必要があります
  • 理想的には、PC 間でいくつかのテスト手順を調整したいと考えています (たとえば、PC1 でテスト X を実行し、PC2 でテスト Y を並行して実行し、両方が終了するまで待ってから、PC2 で何もクラッシュしないことを監視しながら、PC1 でテスト Z を実行します)。

それで、私はそれを行うのに役立ち、急な学習曲線を持たないCOTSツール/ツールセットを探しています. 理想的には無料ですが、それが本当に優れていて適正な価格設定であれば、私の会社はライセンスを購入するかもしれません。
NSIS インストーラーの準備ができたら、CruiseControl.NET からプロセスをトリガーし、上記のすべてを実行する必要があります。基本的に、少なくともソフトウェアのリモート インストール、カスタム スクリプトの実行、および Web ダッシュボードを許可する必要があります。
どうやら、Chef のような SCCM ツールを使用できるようですが、今のところどちらも Windows サーバーをサポートしておらず、ノードのみをサポートしています。そのためだけに Linux VM をセットアップすることは避けたいと思いますが、他に選択肢がない場合はセットアップできます。また、Chef は少しやり過ぎのようです。1 万台のマシンには適していますが、私は 3 台しか持っていません。将来的には 5 台になるかもしれません。そして、分散テストを組織化する可能性について特に興味があります。
ここ StackOverflow とインターネットでの同様の質問のほとんどは、Web アプリ、Java コンテナー、Maven などに関するものであり、これらのツールを評価するためのツールとプラグインが非常に多くあります。
前もって感謝します。

4

2 に答える 2

1

テスト マシンに ccnet をインストールします。それらの ccnet プロジェクトに、新しいインストーラーの準備ができたときに編集されるファイルをリッスンさせます。テスト マシンにその新しいインストーラーをインストールさせ、テストを実行します。ほらね。ccnet は電子メールを送信するので、基本的なレポートがあります。

テスト結果は、gSOAP を使用して Web サービス経由でデータベースに報告されます (これが私たちが行ったことです)。Linux の場合、必要に応じて Java CruiseControl を実行できます。gSOAP 対応のテスト コントローラー プログラムを作成して、テスト マシンからのテスト結果をレポートします。ちょっとした C++ アプリで十分です。次に、Web サイト (ASP.NET を使用) を作成して、データベース (Postgresql) にクエリを実行し、結果を表示します。テスト マシンを SVN 経由で自動更新して、構成に対する最新の変更を取得します。ナントを使用。Nant は、ccnet を使用してタスクを実行するよりもはるかに優れています。Nant は ccnet を通じて動作します。ccnet で XML、XSL、および CSS を使用して、必要な情報 (新しいパス、新しい失敗、コード ベースに対する SVN の違いなど) がテスト メールに含まれるようにします。

私たちの最新の開発では、キッチンに大きなテレビを置き、テスト結果の要約を表示して、人々がどこを壊したかをより簡単に知ることができるようにしています!

私が最初に作業するのは、新しいインストーラーをリッスンしてインストールし、いくつかの基本的なテストを実行し、結果を電子メールで返信するテスト マシンです。ccnet と nant の構成をバージョン管理に入れ、テスト マシンでその自動更新を取得すると、変更を行うたびにすべてのテスト マシンにログインして更新を行う必要がなくなります。

于 2014-12-10T17:04:52.547 に答える
0

これは非常に広く、意見に基づいたものにかなり近いものです。Chef は、アプリケーションをテスト マシンにデプロイするなどの手順を処理できますが、GUI テスト フレームワークではないため、それを処理するには別のものが必要になります。Jenkins は Windows ホストへのテストの配布をサポートしているため、その点では良い選択のように思えますが、マルチノード テストやそれらの間のオーケストレーションにはあまり適していません。要件を考えると、これのほとんどを自分で書く必要があると思います。

于 2014-12-04T00:06:52.007 に答える