Der Weg zur kontinuierlichen Integration. Selen + TeamCity

Eintrag


Ziehen Sie in Betracht, Selenium IDE-Benchmarks mithilfe von TeamCity in einen kontinuierlichen Integrationsprozess zu integrieren. Ich habe es an vielen Stellen gesehen, als QA Tests erstellt (bestenfalls passiert es oft, wenn Klicker einfach auf ein Projekt klicken und Berichte erstellen) und diese regelmäßig ausführen. In der Regel geschieht dies alles lokal auf seinem Computer. Für mich ist es absolut kein systematischer Ansatz, der (jetzt im Jahr 2014) durch eine Million Lösungen zur vollständigen Automatisierung des Prozesses gelöst wird.
Nun, da Continuous Integration eine so beliebte Praxis ist, warum nicht Funktionstests in den Prozess der kontinuierlichen Integration einführen, den Testern das Leben erleichtern und das Qualitätsniveau des gesamten Produkts erhöhen?

Was wollen wir und was wollen wir


Was gibt es?
  • CI-Server (TeamCity) zum Erstellen und Bereitstellen von Projekten
  • Qualitätssicherung mit einer Reihe von Tests, die in Selenium IDE erstellt wurden
  • Begeisterung

Was brauchst du?
  • Fügen Sie dem kontinuierlichen Integrationsprozess Selenium IDE-Tests hinzu


Wie man den ersten Build installiert, konfiguriert und mehr als nötig auf Freiflächen erstellt, werde ich daher nicht beschreiben, und darum geht es hier nicht.
Ich bitte um katze

Vorbereitung und Konfiguration des Agent Builds


Als Taktgeber für den Build Agent wurde ein Windows-Computer installiert, auf dem TeamCity Agent installiert und auf dem TeamCity-Server abgerufen wurde.
Wir nehmen die folgenden Schritte vor, um zwischen für die Ausführung zu konfigurieren:

Alle Manipulationen finden in "C: \ Selenium" statt, daher erstellen wir dort das gleichnamige Verzeichnis.
Auf diesem Computer sollte der Standalone-Selenium-Server aktiviert werden, der aus Gründen der Bequemlichkeit als Dienst in Windows installiert werden kann, da das manuelle Aufrufen nicht ganz unproblematisch ist. Sie können dies mit dem Dienstprogramm nssm („Non-Sucking Service Manager“) tun .
Downloaden, entpacken und in "C: \ Selenium" einfügen.
Laden Sie selenium-server-standalone herunter und legen Sie es dort ab (letzteres kann zum Zeitpunkt des Schreibens von hier heruntergeladen werden ).
Selenium Server als Dienst installieren

C:\Selenium\nssm-2.16\win64\nssm.exe install Selenium-Server "C:\Program Files (x86)\Java\jre7\bin\java.exe" "-jar C:\Selenium\selenium-server-standalone-2.42.2.jar"


Wir verwenden NUnit als "Executor" des Build-Schritts (wir exportieren die Tests von Selenium IDE nach .cs und kompilieren sie dann in DLL-Bibliotheken), daher installieren wir auch .NET Framework 4 auf dem Computer (falls nicht, können Sie es hier herunterladen ).
Suchen Sie nach der Installation nach dem Pfad zu csc.exe, der sich in befindet
"C:\Windows\Microsoft.NET\Framework\v4.0.<еще пара циферок с версией>"
und schreiben Sie es in Variablen unter für die Möglichkeit eines globalen Aufrufs.
Installieren Sie Mozilla Firefox so, wie es von den Einstellungen der Verbindung verwendet wird.
Damit csc den Export der Tests kompilieren kann, müssen Sie eine bestimmte Anzahl zusätzlicher Bibliotheken herunterladen und in „C: \ Selenium“ einfügen (der Kompilierungsvorgang wird automatisch aus diesem Verzeichnis ausgeführt). Hier dann können wir sie nehmen.
Downloaden und entpacken Sie in "C: \ Selenium".

Damit ist die Vorbereitung des Agenten-Builds abgeschlossen. Sie können mit der Build-Konfiguration fortfahren, um die Tests auszuführen.

TeamCity konfigurieren


Gehen Sie auf die Admin - Panel TimSiti und zhmakaem erstellen Sie ein Projekt, geben Sie den Namen, id, deskripshn und «Erstellen» ,

Bild

sich an einem neuen Projekt Konfigurationsseite finden, und klicken Sie auf «Erstellen Build - Konfiguration», fill in den bekannten drei Felder, und wieder blaue Taste

Bild

Nach dem Erstellen Konfiguration bauen uns Klicken Sie auf den Bildschirm zum Auswählen eines vorhandenen Repositorys oder, wie in unserem Fall, auf das Erstellen eines neuen Repositorys, da keine verbundenen Repositorys vorhanden sind. Es hat sich bewährt, das Repository mit einem Live-Projekt "aufzunehmen" (Tests daraus zu machen und es dann zu kompilieren und auszuführen), um Änderungen im Repository zu überwachen und Codeänderungen auszulösen (kontinuierliche Integration), aber da ich hier eine Demo zeige Dann verbinden wir das "linke" Repository und checken es nicht aus. Unser Ziel ist es, Tests durchzuführen und einen Bericht zu erhalten.

Wir schließen ein beliebiges Repository an (als Option zum Öffnen des Repositorys mit github / bitbucket), testen die Verbindung und klicken erneut auf "Erstellen":

Bild

Wir gelangen zum Fenster mit der Konfiguration der Build-Repositorys (ich habe den VCS-Auscheckmodus eingestellt: als Dateien nicht automatisch auschecken, um nicht unnötig zu überwachen Repository):

Bild

Kommen Sie zum lustigen Teil. Hier werde ich zwei Schritte ausführen: Der erste führt die Kompilierung von Tests aus dem Quellcode (.cs) in Bibliotheken für NUnit aus, und der zweite führt bereits Tests mit NUnit aus.

Wechseln Sie zur nächsten Registerkarte der Build-Einstellungen für Build-Schritte, und schließen Sie den ersten Schritt mit der Schaltfläche Build-Schritt hinzufügen ab. Suchen Sie in der Liste Runner-Typ nach der Befehlszeile, und wählen Sie sie aus. Geben Sie den Namen des Schritts ein und fügen Sie Folgendes in das Skriptfeld ein:

csc /t:library /r:WebDriver.Support.dll /r:WebDriver.dll /r:ThoughtWorks.Selenium.Core.dll /r:Selenium.WebDriverBackedSelenium.dll /r:nunit.framework.dll /r:System.Data.dll /r:System.Data.Services.Client.dll /out:"C:\Selenium\compiled_test.dll" "C:\Selenium\reg.cs"

Klicken Sie auf "Speichern".

Das Skript startet den Compiler, kompiliert den exportierten Test mit der Selenium IDE, die sich auf dem Pfad "C: \ Selenium \ reg.cs" befindet, und legt die kompilierte Bibliothek in der Datei "C: \ Selenium \ compiled_test.dll" ab, die wir verwenden Im nächsten Schritt werden wir zu NUnit übergehen.

Bild

Wir fügen einen weiteren Build-Schritt hinzu, nur als Runner wählen wir bereits NUnit.
Wir füllen sowohl den Screenshot als auch den Test ausführen aus: Registrieren Sie den Pfad, entlang dessen der kompilierte Test den ersten Schritt ausführen wird, in unserem Fall "C: \ Selenium \ compiled_test.dll" - und speichern Sie.

Als Ergebnis erhalten wir Folgendes:

Bild

Herzlichen Glückwunsch, die Mindestkonfiguration ist abgeschlossen, es bleibt nur, den ersten Test zu schreiben und dessen Ausführung auszuführen.

Erstellen Sie den ersten Test


Wir bitten QA, einen einfachen Test in Selenium IDE zu speichern und ihn nach „C # / NUnit / Remote Control“ zu exportieren.



Das einzige, was behoben werden musste, waren die Einstellungen für die Verbindung zum Webbrowser.

Ich gebe ein Beispiel für einen Test.

using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using Selenium;
namespace SeleniumTests
{
	[TestFixture]
	public class open_page
	{
		private IWebDriver driver;
		private ISelenium selenium;
		private StringBuilder verificationErrors;
		[SetUp]
		public void SetupTest()
		{
			verificationErrors = new StringBuilder();
			//driver = new FirefoxDriver(); - что подсунул сгенерированный тест
			driver = new FirefoxDriver(new FirefoxBinary(@"C:\Program Files (x86)\Mozilla Firefox\firefox.exe"), new FirefoxProfile(), TimeSpan.FromMinutes(10)); // прохардкожений путь к существующему firefox
			selenium = new WebDriverBackedSelenium(driver,  "http://habrahabr.ru/");
			selenium.Start();
		}
		[TearDown]
		public void TeardownTest()
		{
			try
			{
				driver.Close();
			}
			catch (Exception)
			{
				// Ignore errors if unable to close the browser
			}
			Assert.AreEqual(string.Empty, verificationErrors.ToString());
		}
		[Test]
		public void TheOpen_pageTest()
		{
			selenium.Open("/");
			selenium.Click("link=О сайте");
			selenium.WaitForPageToLoad("30000");
		}
	}
}


Wir schauen uns das Ergebnis an


Wir gehen zu TimCity, klicken neben unserem Build auf Ausführen, warten, bis der Test abgeschlossen ist, und genießen das Ergebnis. Grün bauen, 1 Test bestanden.

Bild

PS Wie oben erwähnt, schreiben wir Tests, stellen sie in das Projekt-Repository, lösen die Projektassembly für jedes Commit aus, führen nach der Erstellung die Tests aus, kompilieren und führen sie aus, und führen bei Erfolg einen Post-Comit-Hook aus, der auf das Repository angewendet und möglicherweise sogar in der Staging-Umgebung bereitgestellt wird. Und das alles vollautomatisch.

Jetzt auch beliebt: