5

Je viens de rejoindre une équipe travaillant sur une application Web Java existante. J'ai été chargé de créer une suite de tests d'intégration automatisée qui doit être exécutée lorsque les développeurs s'engagent sur notre serveur d'intégration continue (TeamCity), qui se déploie automatiquement sur notre serveur de transfert.Intégration Test d'une application * existante * complète (avec exécution automatique de la suite de tests)

J'ai lu beaucoup de choses sur les tests d'intégration automatisés avec des frameworks tels que Watir, Selenium et RWebSpec. J'ai créé des tests dans tous ces domaines et même si je préfère Watir, je suis ouvert à tout. Ce qui n'est pas clair pour moi, c'est comment créer une suite de tests complète pour une application, et comment faire exécuter cette suite dans son intégralité lors de l'exécution de certains scripts. Je peux heureusement créer des tests individuels de complexité variable, mais il y a une lacune dans mes connaissances sur la façon de lier tout ensemble en quelque chose d'utile.

Est-ce que quelqu'un a des conseils sur la façon de créer une suite de tests complète et de la faire exécuter automatiquement?

Merci!

Répondre

2

Typiquement, vous allez utiliser Rake pour automatiser l'exécution du test. En supposant que vous utilisez Test :: Unit pour votre test, vous feriez configurer votre Rakefile Avec le contenu suivant:

require 'rubygems' 
require 'rake' 
require 'rake/testtask' 

Rake::TestTask.new do |t| 
    t.libs << "test" 
    t.test_files = FileList.new 'test/**/ts_*.rb'.sort 
    t.loader = :rake 
    t.verbose = true 
end 

Cette configure tous les fichiers de la suite de tests dans votre dossier de projet « test » par défaut. Vous pouvez ensuite les exécuter avec la commande ci-dessous:

rake test 

et il exécutera alors toutes vos suites de test pour l'ensemble de votre projet. Vous pouvez lui dire d'exécuter un test spécifique en utilisant la syntaxe suivante:

rake TEST=path/under/test/folder/tc_filename.rb test 

Puisque vous utilisez TeamCity, vous pouvez alors créer une version et d'utiliser le coureur de Rake pour exécuter vos suites de tests. TeamCity tirera toutes les informations de test (sortie, traces de pile, etc.) dans l'interface utilisateur comme avec JUnit. C'est une très bonne intégration.

Pour référence, vos suites de test ressemblerait à quelque chose comme ceci:

require 'test/unit' 
require 'path/relative/to/your/tests/tc_some_test1.rb' 
require 'path/relative/to/your/tests/tc_some_test2.rb' 

De cette façon, vous pouvez séquencer vos cas de test dans chaque suite de tests comme on le souhaite.

0

Pour exécuter un test Watir qui est dans un fichier, il suffit d'exécuter le fichier:

$ ruby tests_1.rb 

Pour exécuter des tests dans plusieurs fichiers exécuter tous les fichiers. Vous pouvez créer un fichier qui les exécuter tous (par exemple all_tests.rb):

load "tests_1.rb" 
load "tests_2.rb" 

puis il suffit d'exécuter le fichier:

$ rubis all_tests.rb

Je ne suis pas au courant TeamCity, mais vous devriez pouvoir lancer all_tests.rb.

1

J'ai fini par écrire les tests en utilisant Rspec pour faire des assertions contre des objets Watir (Celerity, pour être précis). Cela m'a permis d'utiliser Rake pour automatiser le déroulement des tests. Il y a quelques bons articles sur l'utilisation de Rspec et Rake ensemble. Notre serveur de construction (teamcity) a des hooks pour les tâches Rake, donc cela fonctionne bien. Il m'a fallu un certain temps pour tout rassembler dans mon esprit, alors j'ai pensé que je posterais la solution éventuelle ici.

+0

Avez-vous écrit sur la solution quelque part? –

Questions connexes