mardi 8 janvier 2013

[Définition] Responsable qualité méthodes informatique

Finalité du métier

Le responsable qualité / méthodes est chargé de définir des normes, méthodes et procédures en vue d'améliorer les phases d'études, de développement et de déploiement des projets. Il veille également à leur bonne application par les équipes informatiques.

Autres intitulés
  • Ingénieur méthode informatique
  • Expert qualité/méthodes
  • Ingénieur qualité logiciel

Réalisation d'audits dans le domaine de la qualité logicielle et des méthodes
  • Réaliser des audits des organisations et des méthodes de gestion de projets.
  • Analyser les dysfonctionnements, les problèmes de traçabilité, les marges d'amélioration des prestations ou des processus dans une optique de réduction des coûts et des délais tout en garantissant la satisfaction des clients internes ou externes.
  • Assurer une veille technologique dans l'environnement des normes et procédures.

Définition et mise en place de normes et de procédures qualité
  • En cohérence avec la stratégie de l'entreprise, définir un schéma d'organisation, des méthodes de travail, des normes et des procédures qualité adéquates.
  • Tester et mettre en place les normes et méthodes adoptées.
  • Rédiger les référentiels ou supports documentaires correspondants (méthodes de développement, procédures de test, etc.) et les diffuser auprès des utilisateurs. Dans ce cadre, le responsable qualité et méthodes peut assurer des formations.
  • Évaluer la rentabilité des techniques mises en place.

Mise en application et adaptation des procédures
  • Sensibiliser et convaincre les utilisateurs de la nécessité d'appliquer et de respecter les procédures qualité.
  • Réaliser des programmes de test pour vérifier que les procédures sont bien appliquées.
  • Entretenir une relation permanente avec les utilisateurs.
  • Définir, mettre en place et suivre le tableau de bord qualité.
  • Suivre les méthodes mises en place et les adapter si nécessaire aux réalités et aux évolutions de l'entreprise.

Activités éventuelles

Le responsable qualité méthodes peut avoir un rôle de représentation auprès de l'environnement externe (associations professionnelles, syndicats professionnels...) par rapport à l'établissement de normes dans un secteur d'activité.

Dans certaines grandes entreprises, il assure des fonctions managériales auprès d'une équipe d'experts qualité.

Il peut enfin prendre en charge des problématiques de sécurité informatique, notamment en l'absence de responsable.

Variabilité des activités

Selon l'organisation et la taille des entreprises :
  • dans les petites et moyennes entreprises, le poste de responsable qualité/méthodes n'existe pas en tant que tel et cette fonction est prise en charge, parmi d'autres prérogatives, par un chef de projet, le directeur des études ou le DSI.
  • dans les entreprises de taille plus importante, cette fonction est occupée par un responsable qui exerce aussi bien dans le domaine des méthodes que dans celui de la qualité.
  • dans des entreprises de taille très importante ou pour lesquelles le développement logiciel est une fonction clé (par exemple les éditeurs de logiciels), une distinction existe entre les fonctions d'expert qualité logiciel (centrées sur les phases de conception et de développement) et de responsable méthodes (qui concerne toutes les phases du projet, la production et l'exploitation informatique).

Le métier de responsable qualité/méthodes informatique est exercé dans des conditions assez proches chez le prestataire et chez l'utilisateur :
  • chez l'utilisateur, les activités du responsable qualité/ méthodes peuvent s'étendre à l'analyse de la qualité de la prestation rendue par les sociétés de service.
  • chez le prestataire, le responsable qualité/méthodes se concentre avant tout sur la qualité logiciel et travaille donc en étroite collaboration avec l'équipe de développement.

  • Cadre confirmé : entre 45 et 60 k€

Des compétences techniques. Il maîtrise les méthodes et normes de développement et les techniques de conduite de projet. Il possède de bonnes connaissances du domaine du génie logiciel (composants objets réutilisables en développement rapide), des langages de développement les plus courants, en particulier de développement objet (type J2EE, ASP, .net, etc.), des certifications qualité (ISO 9000), des principaux systèmes d'exploitation et des architectures de systèmes d'information. L'environnement, les clients de la DSI, la stratégie et la politique de qualité de l'entreprise lui sont familiers. Il sait rédiger avec aisance des documents à diffusion interne. Un bon niveau d'anglais est requis.

Des qualités personnelles. Sa rigueur et sa méthodologie sont ses meilleurs atouts pour faire appliquer les règles aux utilisateurs. Fin analyste de l'existant, il trouve des pistes d'amélioration pertinentes qu'il met en œuvre avec persévérance et opiniâtreté. La clarté de son discours, ses qualités pédagogiques et son sens de la persuasion lui donnent les moyens d'expliquer aux collaborateurs de la DSI les procédures mises en place et les convaincre de les utiliser. Il remplit cet objectif en alternant souplesse et fermeté.

Diplômes
  • Écoles d'ingénieurs (informatique, télécoms, généraliste).
  • DESS/DEA informatique.
  • Diplôme de type bac+4 en informatique : MIAGE, IUP informatique, maîtrise informatique, ingénieur maître...

Expérience
Pour accéder à ce poste, une expérience d'au moins cinq ans est requise.

Postes précédents
  • Ingénieur d'étude et développement
  • Chef de projet
  • Consultant technique

  • SSII de taille significative (plus de 300 personnes)
  • DSI de grandes entreprises utilisatrices (DSI comptant au minimum une centaine de collaborateurs)
  • Éditeurs de logiciels
  • Constructeurs

  • Directeur des systèmes d'information
  • Directeur des études
  • Directeur technique
  • Directeur de projet

  • Directeur de projet
  • Chef de projet
  • Directeur technique

  • Directeur de projet
  • Responsable de la sécurité informatique
  • Directeur technique 
__________________________________________________________________________________
Sources :  APEC

vendredi 27 janvier 2012

Tests fonctionnels avec Selenium (Introduction)

L'automatisation des tests fonctionnels est rarement mis en place en utilisant tout son potentiel, donc on arrive souvent à des résultats médiocres et inadaptés.Et cela finit en général par un abandon pur et simple.
Pourtant ces tests peuvent jouer un rôle très important dans le développement d'un logiciel. Ils peuvent ainsi améliorer significativement la qualité et le temps des cycles de développement.

Tous les experts logiciels vous le diront, les tests sont essentiels pour la qualité d'un logiciel ou d'une application. Et de la même façon que l'organisation des développements est toujours différentes en fonction de l'entreprise et du logiciel, la stratégie de mise en place de la qualité qui va autour varie également. Il est alors indispensables de se poser la question et de savoir autour de quelle stratégie de qualité l'on veut s'orienter :
  • Quel niveau de test sur l'application est approprié? Doit on se concentrer sur les tests unitaires, les tests fonctionnels, les tests de la GUI ou les tests d'intégration?
  • Comment déterminer que les tests sont terminés? Comment décide-t-on que l'on peut livrer sans problème le logiciel?
  • Avec quelle périodicité doit-t-on effectuer les tests ?  A chaque livraison, chaque mois, chaque semaine, chaque jour, a chaque changement du code source?
  • Quel outil utiliser?
  • Quelle méthodologie utiliser?
  • Quelle pourcentage des tests doit-on automatiser?
  • Qui améliore et effectue la maintenance de ces tests?
 L'automatisation des tests ne résout pas toutes les questions posées ci-dessus, mais ces questions doivent quand même être posées dans la mise en place de votre stratégie de tests de qualité.

Le plus gros bénéfice que vous pourrez tirer de la mise en place de l'automatisation des tests est qu'une fois qu'ils seront faits et opérationnels, vous pourrez les exécuter autant de fois que vous voudrez, sur autant de plateformes similaires que vous voudrez sans aucun coût supplémentaire.
Mais il faut aussi prendre en compte que l'automatisation des tests est un projet à par entière, qu'il a un coût de développement assez élevé lors de sa mise en place, et qu'il doit être maintenu en continu pour etre efficace.

Le diagramme suivant vous montre le flux d'informations typique du développement d'un logiciel pour un service orienté vers l'industrie :



Ce diagramme donne un aperçu du flux d'informations entre les différentes équipes à l'intérieur d'une entreprise.
  • L'équipe technique fournit les services comme les logiciels de développement, les systèmes opérationnels et gère le support.
  • Le service commercial comprend le marché dans lequel l'entreprise opère et doit définir la stratégie de développement des produits. Les personnes de ce service sont donc les "domain experts" ou experts du domaine de développement de l'entreprise. Ils travaillent très souvent avec les analystes du service de développement technique. Il se peut aussi que certains analystes expérimentés fassent partis des "domain experts".
  • Les analystes recueillent les besoins exprimés par les commerciaux pour ensuite les spécifier et les développer. Le services "technical development" dans lequel ils travaillent doivent réaliser les test unitaires de leurs développement, mais en aucun cas valider les tests fonctionnels. Le problème que je veux soulever est que les testeurs sont souvent focalisés sur l'impact de leurs développements sans avoir les connaissances de l’environnement de ce développement et impacte ainsi l'objectivité des tests.
  • Les analystes testeurs doivent ainsi être mis à l’écart des commerciaux pour ne pas avoir de jugement ciblé sur une fonctionnalité ou un type de connaissance de l'application. Ils basent leurs tests sur la documentation des cas d'utilisation et sur les spécifications écrites par les analystes en lien avec les commerciaux. Cela sous-entend que les test spécifiques ne peuvent pas être réalisés si non documentés. Cela signifie également que vous devez améliorer l'écriture des tests par les "domain experts".
Les tests automatisés ont un énorme potentiel mais en général ils ne délivrent pas tout leur potentiel à cause de la difficulté de les maintenir et de décrire les connaissances spécifiques à certains domaines.
Si cela est fait proprement, un test fonctionnel automatisé doit :
  • réduire le coût et le temps dépensé sur les tests de non régression.
  • Améliorer la qualité en libérant des testeurs pour qu'ils puissent se concentrer sur d'autres activités ou sur l'analyse ou la maintenance des tests.
  • Améliorer la qualité en ayant des retours plus rapides vers les développeurs.
  • Décrire et implémenter des tests spécifiques à certains domaines sans avoir à monopoliser la personne experte sur le sujet.
  • Définir des exigences spécifiques en donnant aux développeurs des exécutables de tests d'acceptabilité.

A suivre : Domain Specific Languages (DSL) à la rescousse

D'après : http://www.testing-software.org/webapp-testing/webapp_testing_dsl.html

jeudi 29 décembre 2011

60 solutions de test open source en java comparées


Le site java-source.net  propose un récapitulatif des différentes solutions open source de test en java avec un petit descriptif de chaque outils. Vous pourrez ainsi vous faire une idée rapide de ce qui existe sur le marché :

http://java-source.net/open-source/testing-tools

Ci-dessous la liste des solutions étudiées par le site :

Comparatif solutions de test

Dans le cadre d'un stage en 2009 j’avais déjà eut l'occasion de faire des recherches sur les différentes solutions de tests pour des applications web.

Le résumé de mes recherches se résumait alors au tableau ci-dessous. Je ne sais pas s'il est toujours d'actualité, mais je pense qu'il donne déjà bien les grandes lignes des fonctionnalités des différents outils.


JMeter de Apache :
  • Prise en main  un peu plus longue que la moyenne mais facile d'utilisation.
  • puissant
  • gratuit
  • scripts pouvant être enregistrés et facilement adaptables
  • wrapper ANT, permettant d'exécuter des séries de tests et de générer des rapports HTML
  • autant d'users que l'on veut en fonction de ce que la machine supporte
  • key monitors donne de fausses informations ou ne marche pas.

OpenSTA :
  • pas mal de bugs
  • pas de module d'analyse des résultats
  • langage pas très instructif
  • il faut pas mal de macro excel pour s'en sortir.
  • pour des tests relativement "simples" il a un très bon rapport qualité/prix
  • fonctionne pas sur des applications fonctionnant en https
  • tout à fait utilisable pour des tests "classiques" en HTTP

LoaderRunner :
  • Très puissant (sans doute le meilleur du marché)
  • très bon pour windows, moins pour unix
  • prix très puissant également.
  • nombre d'utilisateurs limité en fonction du prix qu'on y met.

HTTPUnit :
  • Fonctionne bien
  • simple mais les tests doivent être écrits par un développeur (comparé a un autre comme JMeter)
  • permet d’automatiser le test de votre code au niveau Web pour vérifier le comportement du code JavaScript et du navigateur

Qaload :
  • facile d'utilisation
  • plus pratique que la moyenne des autres outils dans ce domaine.
  • nombre d'utilisateurs possible en fonction de la licence achetée (apparemment, coté prix de licence, le bas de gamme commence avec 5 zéros -> à confirmer)

WebLoad :
  • prix modéré
  • simplicité de scripting (c'est plus ou moins du javascript avec module de capture)
  • richesse de restitution
  • open source
  • pas beaucoup plus d'informations

Selenium :
  • 3 éléments (Core : sur le même serveur que l'appli, IDE : extension firefox, remote Control : serveur)
  • enregistrement des simulations
  • exécution des simulations automatisée
  • n'est pas fait pour tester des applis non-web : client lourd, service web, etc..., et n'est pas fait pour des tests de performance.
  • soucis avec AJAX et avec des sites avec beaucoup de javascript
  • ne sait pas gérer plusieurs fenêtres d'un navigateur (pop up)

The grinder :
  • même caractéristiques que JMeter en gros
  • UI qui montre clairement ce qui se passe
  • basé sur des scripts Jython

Comparaison générale Apache JMeter / Selenium


 Dans le début de mes recherches sur les solutions d'automatisation des tests fonctionnels, je suis tombé sur deux outils en particulier : Apache JMeter et Selenium.

La question que je me suis alors posé en toute logique a été : quel est la plus adaptée à ce que je cherche ?

Et la réponse la plus courte et la plus claire que j'ai pu trouvé à été celle-ci :

Apache JMeter is definitely tool for performance testing and load/stress tests. But you can use it also for functional tests as well (in your example: fill form ->check results but with checking if results are as expected - but better don't do functional testing with him)
For functional testing on the other hand there are Selenium and also Canoo web test.
So final answer will be to combine those two. (I was using JMeter for performance tests and canoo web test for functional testing, but I guess that Selenium is much better choice now)
Source : stackoverflow.com 

Pour faire plaisir aux non-anglophones, voici en gros la traduction :


Apache JMeter est un outil de tests de performances et de tests de stress. Mais vous pouvez aussi l'utiliser pour réaliser vos tests fonctionnel, cependant ce n'est pas son fonctionnement de base donc il ne vaut mieux pas l'utiliser pour ce genre de tests.
Par contre Il existe deux autres solutions qui sont Selenium et aussi Canoo web test qui sont spécialisées dans les tests fonctionnels.
Du coup l'auteur de ce post utilisais JMeter d'un coté pour les performances et Canoo web test pour les tests fonctionnels. Mais Selenium semble aujourd'hui un meilleur choix.

Comparaison Load Runner, The Grinder, Apache JMeter


Si vous vous demandez quelle est la meilleure solution entre Load Runner, The Grinder et Apache JMeter, cet article est pour vous :

The Black Anvil: Shootout: Load Runner vs The Grinder vs Apache JMe..

L'auteur y fait une comparaison très détaillée et minutieuse des qualités et défauts de chaque outils (en anglais) et permet de se faire un premier avis avant de d'avoir à les installer pour les tester.

Les tests

Comme vous avez surement dû le voir dans les présentations précédentes ou dans votre expérience de qualiticien, une partie très importante de la qualité est la partie des tests, et encore plus pour ce qui concerne les logiciels et applications.

Plusieurs types de tests existent : tests unitaires, tests de non régression, tests de charge, etc...

Mais l'utilisation et l'importance de ceux-ci se résume au schéma ci-dessous :