
そのようなことがあります-Dojoのテスト。 これは、参加者がアプリケーションのバグを探しているコンテストです。 もっと見つけた人は誰でも-彼は勝ちました。 通常、チームで競います。 手動でバグを探す必要がある場合は、テスターのみが関与します。 自動テストが戦闘に入ると、開発者はつながります。
2GISテストでは、Dojoは長い間良い伝統になっています。3年連続で使用しています。 この間、私たちはより良い方法について多くを理解しました。 猫の下で、私たちの経験を共有します:突然、あなたはあなたのテスト道場を作りたいと思うでしょう。
ルール
N人のチームが2〜3人います。 各チームはコンピューターの前に座ります。1つのコードと、アドバイスを提供するもう1つのコードです。 すべての参加者は、セルフテストを使用して同じアプリケーションをテストします。
コンテストは30分の6つのセッションに分かれています。 各「セッション」は、アプリケーションのリリースをシミュレートします。 各リリースには、新しい機能と新しいバグや古いバグがあります。すべてが実際の製品のようです。
コマンドテストは、Continous統合サーバーでセッションの最後に実行されます。 テスト結果に従って、ju審員はポイントを計算します。 チームが発見したバグごとに、審査員はポイントを獲得します。 逃したごとに-減算します。 勝者は、6つのセッションすべてのポイントの合計によって選択されます。
これらのルールにより、私たちは「遊び」ます。 Testing Dojoの場合、ルールを好きなように変更します。 主なことは、誰もがそれらを理解し、できればそれらに同意するということです。
準備するもの
- テストアプリケーション。
- テストを作成して実行するソフトウェアを使用する参加者の職場。
- チームリポジトリ。
- 自動アセンブリ用のCIサーバー。
では、 6月6日に開催したTesting Dojoを使用して、すべてを順番に話し、例を示しましょう。
テストアプリケーション
テストアプリケーションを選択したとき、いくつかの原則に導かれました。
- アプリケーションは簡単です。
複雑すぎると、テストの開発が大幅に遅くなります。参加者は、機能の理解に多くの時間を費やします。 したがって、テストDojoの場合、「2GIS製品を使用してバグを追加する」オプションは適切ではありませんでした。 - アプリケーションの機能は、個々の機能にうまく分割されています。
各機能を非常に短い仕様の形式で説明します。 - 一部のバグは1つのセッションでのみ検出されますが、他のバグは繰り返されます。
したがって、事前に作成されたテストは、後続のセッションでポイントをもたらします。 - 必要な機能を備えたアプリケーションは、迅速にアセンブルおよび更新されます。
機能はリリース番号に対応しています。
前回のテストDojoでは、かなり原始的な製品カタログを作成しました。 最初のバージョンでは、名前の部分での厳密な検索のみがありました。 後者では、商品管理。
アプリケーションの実際のバージョンが収集され、各セッションの終わりにJenkinsサーバーのテストノードに展開されました。 次のセッションの開始時に、参加者はアプリケーションを最新のリリースバージョンに更新しました。
更新するスクリプト:
$appLink = 'http://opensource-ci.2gis.ru/view/Testing%20Dojo/job/td-tested-application/lastSuccessfulBuild/artifact/TestingDojo2015.exe' $outFolder = $env:UITestApps if ($outFolder -eq $null) { $outFolder = 'C:\app' } $outFile = (Join-Path $outFolder 'TestingDojo2015.exe') if (Test-Path $outFolder) { Remove-Item $outFile -Force } else { New-Item -ItemType directory -Path $outFolder | Out-Null } try { Invoke-WebRequest $appLink -OutFile $outFile Write-Host 'Update successful!' } catch { Write-Error $_.Exception.ToString() Write-Host 'Update failed!' } Write-Host "Press any key to exit.." $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp") > $null
現在のバージョンの機能に関する情報(イベントページに掲載):
バージョン5.機能
複数のレコードを同時に削除する機能が追加されました。 CtrlキーまたはShiftキーを押しながら、複数のレコードを同時に選択できます。 削除は、複数のアイテムが同時に選択されたときに表示される「複数削除」ボタンを押すことで行われます。
レコードを識別子または名前でソートできます。 目的のソートフィールドをドロップダウンリストから選択できます。 ソート順はスイッチを使用して変更されます。
新規および修正されたバグに関する審査員向け情報:
バージョン5.バグ
並べ替えのバグを修正
検索を修正
Ctrlで複数のレコードを選択すると、最後を除くすべてが削除されます
競争のために明確な機能を備えたシンプルなアプリケーションを選択してください。 ほとんどの場合、参加者はドキュメントを読むのではなく、バグを探して自動テストを作成してください。
職場
ジョブを適切に配置した場合-すでに半分は良いイベントを行っていると考えてください。 ハードウェアまたはソフトウェアに問題があると、競技の開始が遅れ、参加者が緊張します。
前回のテスト道場では、10人のジョブのオーディエンスを準備しました。 ノボシビルスクのさまざまな企業の20人のテスターと開発者に頼りました。
Windows用のデスクトップアプリケーションのテストに競争を捧げたので、参加者はSeleniumベースのWinium.Desktopドライバーで書くことを提案しました。 これはオープンソースツールCruciatusのラッパーであり、別の記事で説明します。
Winium.Desktopのおかげで、さまざまなプログラミング言語でテストを作成できます。 Dojoのテストでは、C#とPython 3.xを選択し、それらの環境を準備しました。 Windows 8がインストールされている各コンピューターにVisual Studio(+ Resharper)およびPyCharmがインストールされている。
特別な注意を払ってシステムユーザープロファイルを調整しました。 デスクトップとスタートページには、IDEへのショートカット、テスト対象のアプリケーション、アプリケーションを自動的に更新するスクリプト、デスクトップアプリケーションのユーザーインターフェイスを分析するためのツールが配置されています。 ブラウザーは、開始ページを最も必要なリソースに移動しました。
ユーザーはスクリプトで作成されました:
# Set-ExecutionPolicy -ExecutionPolicy Unrestricted $hostName = [System.Net.Dns]::GetHostName() $cultureLCID = (Get-Culture).LCID $userName = "testingdojo" $userPassword = "2gisTD2015" # 1033 - English, 1049 - Russian # https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx?f=255&MSPPError=-2147217396 if ($cultureLCID -eq 1049) { $rdpGroupName = " " } elseif ($cultureLCID -eq 1033) { $rdpGroupName = "Remote Desktop Users" } else { Write-Host "Unknown LCID:"$cultureLCID; return } # add user # http://blogs.technet.com/b/heyscriptingguy/archive/2014/10/01/use-powershell-to-create-local-users.aspx # https://msdn.microsoft.com/en-us/library/aa772300%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396 $comp = [ADSI] "WinNT://$hostName" $user = $comp.Create("user", $userName) $user.SetPassword($userPassword) $user.UserFlags = 64 + 65536 # ADS_UF_PASSWD_CANT_CHANGE + ADS_UF_DONT_EXPIRE_PASSWD $user.SetInfo() # add user to Remote Desktop Users group # http://blogs.technet.com/b/heyscriptingguy/archive/2014/10/03/adding-local-users-to-local-groups.aspx $group = [ADSI] "WinNT://$hostName/$rdpGroupName,group" $group.Add("WinNT://$hostName/$userName, user")
各職場にはチーム名が割り当てられています。 コンピューターの作業環境を迅速に準備し、参加者の生活を楽にするために、チーム名は自分で考案されました。
これを行うために、彼らはイケアの棚を見て、「デュケン」、「コクバナン」、「リスダル」、「モルビク」という面白い、無意味な(うまくいけば)言葉を見つけました...
そのため、参加者の仕事を追跡します。 必要なソフトウェアをインストールし、Wi-Fiパスワードを入力して、テストアプリケーションをインストールしてください。
チームリポジトリ
チームリポジトリについては、プロジェクトテンプレートと、すべてのリポジトリに自動的にプッシュするPowerShellスクリプトを準備しました。 チームがどちらの言語を選択するかわからなかったため、両方のテンプレートがリポジトリに格納されました。
リポジトリーは、対応するチームをコンピューターに複製し、グローバル構成をセットアップし、プッシュする権限があることを確認しました。
興味がある場合は、 Githubのチームリポジトリをご覧ください 。
自動ビルド
チームごとに、 Jenkinsでビルドをセットアップします。

テスト対象のアプリケーションのアセンブリはすぐに実行されました。 必要に応じて、チームはテストを実行し、自分の状態を確認しました。 しかし、テストの状態に関係なく、セッションの最後にアセンブリを開始し、ポイントをカウントしました。
結果は何ですか
Testing Dojoの実施を計画している場合は、イベントのテーマを決定します。 その後、参加者がテストするアプリケーションとツールを決定します。 機能が明確なシンプルなアプリケーションを選択してください。
参加者のために職場を準備します。コンピューター上のユーザーのアクセス権を構成し、必要なソフトウェアをインストールし、デスクトップにショートカットを配置し、バージョン管理システムへのアクセスを許可します。
人的要因を排除するには、手動操作を自動化します。テスト用のリポジトリの準備、テストサーバーへのアプリケーションの構築と展開、各セッションでのアプリケーションの更新。
これらのルールは、良いイベントの良い基盤です。 それらを使用して、Testing Dojoを作成します。 きっと成功するでしょう!