Rappels d'ordre général sur les tests automatisés (unitaires, fonctionnels, de comportement), suivis d'une introduction à l'écriture de tests unitaires avec PHPUnit. Orienté PHP.
Ce cours présente ce qu'est l'internet des objets (IoT), un réseau parallèle au web connectant entre eux des dispositifs physiques. Les différences majeures entre l'IoT et le web sont mises en avant, ainsi que les grands défis auxquels le monde de l'IoT est confronté. Le cours présente ensuite brièvement comment on peut gérer un système embarqué à distance, notamment pour la maintenance, le monitoring, le disaster recovery, notamment à l'aide d'un watchdog. Enfin, pour conclure, plusieurs architectures réseaux possibles sont présentées, pour inter-connecter des systèmes embarqués et les relier au web.
Code source disponible ici : http://www.mediafire.com/download/cuk14ead1zd6xj6/e-learning%20php.zip
Une plateforme e-learning qui offre aux étudiants la possibilité de passer des séries de questionnaires déposer par les professeurs d'un établissement en passent par le cloud enligne. cette plateforme offre une interface d'administration qui gère l'ensemble des enseignants et étudiants facilement
Création de projets de commerce électronique
Khabbab HADHRI
Chargé du développement du commerce électronique
Ministère du Commerce et de l’Artisanat-Tunisie
Direction du développement du commerce électronique et de l’économie immatérielle
Dans ce cours, nous revenons sur une révolution en marche, un marché en devenir : l'Internet des objets (le web 3.0). Selon General Electrics, l'Internet des objets devrait représenter 50% du PIB mondial en 2025
Cette présentation, destinée aux étudiants de l’AIAC dans le cadre du club électronique « AIAC Electronics CLUB », s’assigne les objectifs suivants:
Sensibiliser les participants sur l’industrie 4.0 ( état de la l’art)
Présenter les bénéfices de l’industrie 4.0
Montrer comment la digitalisation constitue un levier de l’industrie 4.0
Présenter la transformation managériale et organisationnelle accompagnant l’industrie 4.0
Mener une réflexion sur comment transformer notre industrie au Maroc en l’industrie 4.0
Pattern de référence pour les applications WPF, Silverlight et Windows Phone, MVVM est de plus en plus utilisé. Cette session d’introduction vous permettra de découvrir les différents éléments qui le compose, leur mise en place et surtout de bien comprendre quand, comment et pourquoi utiliser ce pattern ne peut que vous être profitable !
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flexmichael.labriola
This document discusses automated testing in Flex. It begins by explaining why automated testing is important, such as reducing costs from software errors and allowing developers to change code without fear of breaking other parts of the project. It then covers topics like writing unit tests, using theories and data points to test over multiple values, and writing integration tests. The document emphasizes that writing testable code is key, and provides some principles for doing so, such as separating construction from application logic and using interfaces. It also discusses using fakes, stubs and mocks to isolate units for testing.
Ce cours présente ce qu'est l'internet des objets (IoT), un réseau parallèle au web connectant entre eux des dispositifs physiques. Les différences majeures entre l'IoT et le web sont mises en avant, ainsi que les grands défis auxquels le monde de l'IoT est confronté. Le cours présente ensuite brièvement comment on peut gérer un système embarqué à distance, notamment pour la maintenance, le monitoring, le disaster recovery, notamment à l'aide d'un watchdog. Enfin, pour conclure, plusieurs architectures réseaux possibles sont présentées, pour inter-connecter des systèmes embarqués et les relier au web.
Code source disponible ici : http://www.mediafire.com/download/cuk14ead1zd6xj6/e-learning%20php.zip
Une plateforme e-learning qui offre aux étudiants la possibilité de passer des séries de questionnaires déposer par les professeurs d'un établissement en passent par le cloud enligne. cette plateforme offre une interface d'administration qui gère l'ensemble des enseignants et étudiants facilement
Création de projets de commerce électronique
Khabbab HADHRI
Chargé du développement du commerce électronique
Ministère du Commerce et de l’Artisanat-Tunisie
Direction du développement du commerce électronique et de l’économie immatérielle
Dans ce cours, nous revenons sur une révolution en marche, un marché en devenir : l'Internet des objets (le web 3.0). Selon General Electrics, l'Internet des objets devrait représenter 50% du PIB mondial en 2025
Cette présentation, destinée aux étudiants de l’AIAC dans le cadre du club électronique « AIAC Electronics CLUB », s’assigne les objectifs suivants:
Sensibiliser les participants sur l’industrie 4.0 ( état de la l’art)
Présenter les bénéfices de l’industrie 4.0
Montrer comment la digitalisation constitue un levier de l’industrie 4.0
Présenter la transformation managériale et organisationnelle accompagnant l’industrie 4.0
Mener une réflexion sur comment transformer notre industrie au Maroc en l’industrie 4.0
Pattern de référence pour les applications WPF, Silverlight et Windows Phone, MVVM est de plus en plus utilisé. Cette session d’introduction vous permettra de découvrir les différents éléments qui le compose, leur mise en place et surtout de bien comprendre quand, comment et pourquoi utiliser ce pattern ne peut que vous être profitable !
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flexmichael.labriola
This document discusses automated testing in Flex. It begins by explaining why automated testing is important, such as reducing costs from software errors and allowing developers to change code without fear of breaking other parts of the project. It then covers topics like writing unit tests, using theories and data points to test over multiple values, and writing integration tests. The document emphasizes that writing testable code is key, and provides some principles for doing so, such as separating construction from application logic and using interfaces. It also discusses using fakes, stubs and mocks to isolate units for testing.
Les outils d’automatisation de tests (scripting) : Adoption et enjeux (comple...AQT-presentations
Les essais logiciels sont de plus en plus longs et complexes, les délais de plus en plus courts et les impacts d’une anomalie critiques. Les technologies de l’information sont partout, la qualité doit y être aussi. Cette présentation traite des bonnes pratiques à implémenter afin de réduire et d'éliminer ces enjeux présents dans vos processus d'entreprise. Vous en saurez plus sur l'importance d'automatiser, les défis du passage du manuel à l’automatisation et pourquoi les outils actuels n’offrent pas le ROI escompté. Une nouvelle démarche pour simplifier l’adoption et assurer le ROI vous sera aussi présentée.
The document discusses test-driven development (TDD) and behavior-driven development (BDD). It clarifies that TDD is a design activity, not just about testing, and explains the benefits of TDD such as reducing speculative code and improving quality. It then covers BDD concepts like outside-in development, interaction-based testing, and using mock objects. The document provides examples of testing frameworks like RSpec and practices for writing better tests and mocks.
This document discusses Test Driven Development (TDD). It defines TDD, outlines the TDD process which involves writing tests first and then code to pass the tests, and emphasizes refactoring. Benefits of TDD include improved code quality, reduced bugs, and serving as documentation. Key TDD terms and libraries like JUnit and Mockito are explained. Continuous Integration (CI) is also discussed as it automates testing and builds when code is committed.
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...Zohirul Alam Tiemoon
The document discusses Test-Driven Development (TDD) and Acceptance Test-Driven Development (ATDD). It defines TDD and ATDD, provides demos of applying each approach to building a calculator and pet shop application, and discusses how they help keep design simple. Tools for TDD/ATDD and who writes unit/acceptance tests are also covered, along with why the approaches are used.
In The Seven Habits of Highly Effective People, Stephen R. Covey names "Begin with the End in Mind" as the second of the seven habits. This habit applies not just to individuals, but to software development teams as well. In Acceptance Test Driven Development (ATDD), the Product Owner begins requirements discussions with expectations and examples, and the whole team collaborates to distill these into acceptance tests that define the essence of “Done." Modern testing frameworks enable the team to express the tests in natural language while connecting them to the software so that the tests are automated while the software is being developed. The end result is that the acceptance tests become executable requirements.
These slides explain the ATDD cycle and how it fits with other Agile development and testing practices including TDD, Continuous Integration, and Exploratory Testing.
Reveal.js is an HTML presentation framework that allows users to create beautiful presentations using HTML. It has features like vertical slides, nested slides, Markdown support, different transition styles, themes, slide backgrounds, images, video, tables, quotes, and linking between slides. Presentations can be exported to PDF and custom states and events can be triggered on each slide. The framework is touch optimized and works on devices like mobile phones and tablets.
Tester unitairement une application javaAntoine Rey
Présente les différents types de tests automatisés, les objectifs des tests unitaires, les stratégies de mise en œuvre, les bonnes pratiques, les difficultés, ce qu'est un mock, différents outils (Unitils, Mockito, DbUnit, Spring Test) et des exemples de tests (DAO et contrôleurs Spring MVC), sans oublier le test de code legacy.
Formation Gratuite Total Tests par les experts Java Ippon Ippon
Garantissez la qualité des vos applications par des tests efficaces : unitaire, d'intégration, de performance... Apprenez à mettre en oeuvre un harnais de tests complet et efficace avec Junit, AssertJ, Mockito, Spring Test, Arquillian, ... et assimilez les concepts du TDD et du BDD, illustré avec Cucumber. La formation Total Test Training ira encore plus loin en vous présentant l'utilisation de Sonar et le rôle des tests dans un système d'intégration continue. Enfin, les aspects liés à la mesure de la performance (instrumentation avec Metric et stress test avec JMeter et Gatling) et à l'optimisation ciblée vous permettront d'être en mesure de produire un code "propre", protégé des risques de regressions.
Rédigé en Mars 2013
Comment automatiser les tests ?
Les différents types de tests automatisés : TU, BDD/TDD, GUI, TDC, Test de vie …
Méthodes d’automatisation
Capture/replay
Projet de développement
Techniques d’automatisation
Data driven
Keyword driven
DSTL
Composants technique pour l’automatisation
Oracle
Bouchon
Techniques de comparaison
Reporting
Formation Extreme Programming, Tests unitaires, travail collaboratifkemenaran
Cette formation développe les méthodes de l'Extreme Programming, introduit les tests unitaires et le Test Driven Developpement sous différents frameworks (dont CakePHP), et présente différents outils de travail collaboratif : SVN, Make, Trac, etc.
Laissez-vous conter l'histoire de la princesse CI.
L'histoire se passe dans un monde peuplé de standards de code, de tests unitaires, fonctionnels et end-to-end.
Entourée de ses amis PHPCodeSniffer, PHPUnit, Behat, Eslint, Jest et Selenium, elle va se heurter à différents ennemis qui l'attendent au tournant :
- L'isolation des tests end-to-end
- Le split des tests sur CircleCI
- Les lenteurs de chargement des fixtures
- L'authentification dans les tests end-to-end
- La gestion des latences API dans les tests end-to-end
- La gestion de l'asynchrone avec l'arrivée dans le royaume de RabbitMQ et ElasticSearch
- L'optimisation de la stack Docker
Vous découvrirez comment elle va surmonter ces épreuves pour que cette histoire se termine en "happy end".
Le Test Driven Infrastructure, c'est un peu le TDD pour les projets DevOps. Il va vous permettre de tester votre infrastructure unitairement, de bout en bout et à chaque changement.
Les tests comportementaux avec aspnet coreArnaud Auroux
La bénéfice tiré des tests automatisés dans le cycle de vie d'une application n'est pas débattre. Ils peuvent se diviser en plusieurs groupes et chacun possède ses caractéristiques, avantages et inconvénients. Ils présentent néanmoins tous un point commun: l'implémentation et la maintenance de ces tests a un coût difficile à ignorer. Cette session présentera une autre approche complémentaire des tests : l'approche comportementale ou comment un seul test peut permettre de couvrir de bout en bout un scénario complet de l'application. Nous verrons un exemple d'implémentation de cette approche avec ASP.NET Core et SpecFlow.
Tester avant de déployer ; comment tester ses déploiements ARM.AZUG FR
Lorsque l’on parle d’infrastructure as Code, on imagine qu’écrire des fichiers JSON représentant une infrastructure est la seule étape. Pourtant il est nécessaire de pouvoir appliquer les mêmes principes de test que l’on trouve dans le développement logiciel à ce que l’on doit déployer sur Azure. Dans cette session nous découvrirons comment effectuer des tests sur les templates ARM et comment interpréter les résultats. Nous nous intéresserons à ARM Template Toolkit (arm-ttk) présenter à MS Ignite 19 et comment l’utiliser et l’étendre pour améliorer la qualité du code et du travail d’équipe. Pour finir nous regardons la façon d’intégrer cela dans une chaine de déploiement.
This presentation has been executed on 14th april, 2009 in Valtech Technology Consulting, Paris, France.
This is an overview of the SWTBot test framework.
Download the ppt for the comments on each slide.
2. Tests automatisés
Tests unitaires (structurels)
S’assurer de l’intégrité et du bon fonctionnement du code source.
Outils : PHPUnit / Atoum
Tests fonctionnels
Vérifier le comportement métier d’une application.
Outils : Selenium
Tests de spécifications (comportement)
Contrôler qu’une application correspond au besoin formulé par le client.
Outils : Behat / PHPSpec
3. Tests unitaires
Les tests unitaires permettent de valider que le code développé est conforme aux intentions du développeur. Une unité
représente une classe et ses méthodes.
Ces tests doivent être répétables, automatiques, indépendants et rapides.
Michaël Feathers définit dans Working Effectively With Legacy Code un test unitaire de la façon suivante :
Il ne communique pas avec la base de données
Il ne communique pas avec d’autres ressources sur le réseau
Il ne manipule pas un ou plusieurs fichiers
Il peut s’exécuter en même temps que les autres tests unitaires
On ne doit pas faire quelque chose de spécial, comme éditer un fichier de configuration, pour l’exécuter
4. Tests fonctionnels
Les tests fonctionnels permettent de tester l’intégration des différentes couches applicatives.
Ils aident également à tester qu’une nouvelle fonctionnalité n’est pas la source d’une régression fonctionnelle.
Workflow standard
Envoi d’une requête HTTP
Test de la réponse
Clic sur un lien ou envoi d’un formulaire
Test de la réponse
Nettoyer et recommencer
5. Tests de spécifications
Les tests de spécifications sont des tests fonctionnels avec un formalisme.
Cette méthodologie a pour objectif d’améliorer la compréhension et la collaboration du métier, du Product Owner, des
développeurs, des testeurs et de toute autre partie prenante.
Les tests d’acceptance sont écrits par les PO, à l’aide du langage Gherkin.
Exemple de description du comportement de la demande :
Scenario: Searching for a page that does exist
Given I am on "/wiki/Main_Page"
When I fill in "search" with "Behavior Driven Development"
And I press "searchButton"
Then I should see "agile software development"
6. PHPUnit
PHPUnit est un framework open source de tests unitaires.
https://github.com/sebastianbergmann/phpunit
Créé en 2004 par Sebastian Bergmann, il est maintenant devenu un standard :
Intégré à de nombreux frameworks
Installable en standalone avec composer
Il est possible d’effectuer des tests fonctionnels avec Symfony (Web Test Case) et d’autres frameworks PHP, comme
Laravel.
PHPUnit utilise massivement des tags PHPDoc personnalisés (de manière toujours optionnelle).
7. Écrire des tests
Assertions principales
- assertTrue()
- assertEquals()
- assertContains()
- assertCount()
- assertEmpty()
- assertInstanceOf()
- assertNull()
Annotations principales
- @expectedException : vérifier qu’une exception est
lancée.
- @dataProvider : fournir plusieurs jeux de données
afin d’éviter la duplication de méthodes de test.
<?php
use PHPUnitFrameworkTestCase;
class DataTest extends TestCase
{
/** @dataProvider additionProvider */
public function testAdd($a, $b, $expected)
{
$this->assertEquals($expected, $a + $b);
}
public function additionProvider()
{
return [
[0, 0, 0],
[0, 1, 1],
[1, 0, 1],
];
}
}
8. Le pattern Mock Object
Le pattern Mock Object permet d’isoler une ressource.
Mock : Faux objet. L’utilisation des mocks permet
également de simuler un appel de fonction plutôt que
l’exécuter. C’est par exemple utile pour simuler une
classe qui fait appel à une librairie extérieure.
Stub : Bouchon. C’est la valeur retournée lors de
l’appel à une méthode d’un objet mocké.
<?php
use PHPUnitFrameworkTestCase;
class StubTest extends TestCase
{
public function testStub()
{
// Create a stub for the SomeClass class.
$stub = $this->getMockBuilder($originalClassName)
->disableOriginalConstructor()
->getMock();
// Configure the stub.
$stub->method('doSomething')
->willReturn('foo');
// Calling $stub->doSomething() will now return 'foo'.
$this->assertEquals('foo', $stub->doSomething());
}
}
9. Base de données et fixtures
Fixtures : jeu de données contrôlées.
Dans un scénario, PHPUnit lance les méthodes dans l'ordre suivant :
1. setUpBeforeClass() : exécuté une fois en début de scénario
2. setUp() : exécuté avant chaque test du scénario : "constructeur"
d'environnement
3. assertPreConditions() : effectue des assertions sur l'état initial de
l'environnement du test à venir
4. testOne() : un premier test
5. testTwo() : un deuxième test
6. assertPostConditions() : effectue des assertions sur l'état de
l'environnement après le lancement d'un test
7. tearDown() : exécuté après chaque test du scénario : "destructeur"
d'environnement
8. tearDownAfterClass() : exécuté une fois en fin de de scénario
<?php
use PHPUnitFrameworkTestCase;
class StackTest extends TestCase {
protected $stack;
protected function setUp() {
$this->stack = [];
}
public function testEmpty() {
$this->assertTrue(empty($this->stack));
}
public function testPush() {
array_push($this->stack, 'foo');
$this->assertEquals('foo', $this->stack[count($this->stack)-1]);
$this->assertFalse(empty($this->stack));
}
public function testPop() {
array_push($this->stack, 'foo');
$this->assertEquals('foo', array_pop($this->stack));
$this->assertTrue(empty($this->stack));
}
}
10. Code coverage
La couverture de code montre le nombre de lignes de code sécurisées par des tests.
PHPunit permet de générer un rapport sur la couverture de code (nécessite l’activation de xdebug), permettant de montrer
les statistiques sur toutes les classes, méthodes et lignes couvertes par des tests.
$ bin/phpunit --coverage-html reports
11. Test Driven Development
Technique de développement logiciel au coeur des méthodes agiles telles que l'extreme programming.
Red - Green - Refactor Cycle
1. Red state : Déclarer et nommer un test, écrire l’assertion, le faire échouer
2. Green state : Faire passer le test au vert le plus tôt possible (quitte à faker)
3. Refactor state : Remanier le code (l’améliorer, le rendre plus lisible)