テスト道場の実施方法





そのようなことがあります-Dojoのテスト。 これは、参加者がアプリケーションのバグを探しているコンテストです。 もっと見つけた人は誰でも-彼は勝ちました。 通常、チームで競います。 手動でバグを探す必要がある場合は、テスターのみが関与します。 自動テストが戦闘に入ると、開発者はつながります。



2GISテストでは、Dojoは長い間良い伝統になっています。3年連続で使用しています。 この間、私たちはより良い方法について多くを理解しました。 猫の下で、私たちの経験を共有します:突然、あなたはあなたのテスト道場を作りたいと思うでしょう。



ルール



N人のチームが2〜3人います。 各チームはコンピューターの前に座ります。1つのコードと、アドバイスを提供するもう1つのコードです。 すべての参加者は、セルフテストを使用して同じアプリケーションをテストします。



コンテストは30分の6つのセッションに分かれています。 各「セッション」は、アプリケーションのリリースをシミュレートします。 各リリースには、新しい機能と新しいバグや古いバグがあります。すべてが実際の製品のようです。



コマンドテストは、Continous統合サーバーでセッションの最後に実行されます。 テスト結果に従って、ju審員はポイントを計算します。 チームが発見したバグごとに、審査員はポイントを獲得します。 逃したごとに-減算します。 勝者は、6つのセッションすべてのポイントの合計によって選択されます。



これらのルールにより、私たちは「遊び」ます。 Testing Dojoの場合、ルールを好きなように変更します。 主なことは、誰もがそれらを理解し、できればそれらに同意するということです。



準備するもの



  1. テストアプリケーション。
  2. テストを作成して実行するソフトウェアを使用する参加者の職場。
  3. チームリポジトリ。
  4. 自動アセンブリ用のCIサーバー。


では、 6月6日に開催したTesting Dojoを使用して、すべてを順番に話し、例を示しましょう。



テストアプリケーション



テストアプリケーションを選択したとき、いくつかの原則に導かれました。



  1. アプリケーションは簡単です。

    複雑すぎると、テストの開発が大幅に遅くなります。参加者は、機能の理解に多くの時間を費やします。 したがって、テストDojoの場合、「2GIS製品を使用してバグを追加する」オプションは適切ではありませんでした。
  2. アプリケーションの機能は、個々の機能にうまく分割されています。

    各機能を非常に短い仕様の形式で説明します。
  3. 一部のバグは1つのセッションでのみ検出されますが、他のバグは繰り返されます。

    したがって、事前に作成されたテストは、後続のセッションでポイントをもたらします。
  4. 必要な機能を備えたアプリケーションは、迅速にアセンブルおよび更新されます。

    機能はリリース番号に対応しています。


前回のテスト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を作成します。 きっと成功するでしょう!



All Articles