Journée Française des Tests Logiciels

April 10, 2012

I’m sharing with you a few feedbacks about the conference I had the chance to attend at the begining of March 2012 in Paris. This “journée” is organized every year by the CFTL (Comité Français des Test Logiciels) and gathered all the actors of software testing in France. After this small introduction in english I will present you more specific informations in French…because it is the French Day of Software Testing: JFTL meaning “Journée Française des Test Logiciels”.

I attended three conferences:

  • the first one was about static analysis of code and how to optimize strategy of tests. Very interesting to see how a “good” code can lead to less bugs, less code and easier to maintain code, which means to a better software, the dream of every QA team.
  • the second one propose to introduce a well known practice in the OBM team: scrum, and specifically what are the main advantages to have a tester in the scrum team.
  • the third one details a workflow of bug management using open source tools

And now in french…

Je vous présente ici mes retours sur la Journée Française des Test Logiciels (JFTL organisé par le CFTL) qui a eu lieu le mardi 03/04/2012 au Cap 15 à Paris.

1ère conférence: Contribution de l’analyse statique à l’optimisation de la stratégie de test

On y a parlé de l’intérêt de l’analyse de code et du retour sur investissement évident : sur la qualité du code bien sûr et par conséquent sur le coût du logiciel. Mais si on va au-delà, améliorer son code en respectant des règles strictes produit :

  • moins de défauts (fiabilité)
  • moins de code (meilleure maintenabilité)
  • un code plus lisible (donc plus facile à faire évoluer, à débugger…etc)
  • ….et donc moins de revue et test, moins de rework, et donc une productivité accrue

Suite à une étude du CNES, on voit une relation entre la complexité du code et le nombre de défaillances. Cette étude montre, par exemple, que pour une complexité de 50 chemins, on a de l’ordre de 8 bugs après livraison. Alors que pour une complexité de 25 chemins, on en a plus que 2 après livraison. Soit 4 fois plus de bugs pour seulement 2 fois plus de complexité.
=> D’où la nécessité de définir une complexité maximale, et de tout faire pour éradiquer tous les bouts de code qui la dépassent.

Pour continuer avec les chiffres, le speaker considère que grâce à l’analyse statique, on réduit le coût total d’un projet :

  • de l’ordre de 20 à 40% avec un code bien structuré
  • de l’ordre de 5 à 10% grâce à la détection précoce des défauts
  • on respecte les délais
  • et on a des équipes bien plus motivées

Techniques d’analyse statistiques :

  • détection de constructions erronées (exigence de fiabilité) : absence de break dans switch/case…
  • complexité des composants (exigence de maintenabilité)
  • analyse des flots de contrôles (exigence de maintenabilité), permettant de détecter d’éventuelles constructions à risque, du code mort, de la duplication de code
  • analyse de couplage / des dépendances (exigence de portabilité) : saut de niveau, interdépendance

Gestion des priorités :
Avec de bons outils d’analyse, on se retrouve avec des tonnes de retour, certains plus importants que d’autres. Les priorités sont à réfléchir selon:

  • la criticité
  • l’utilisation fonctionnelle
  • la localisation connue des défauts précédents
  • la complexité

Avec ces 4 facteurs combinés, on en déduit là où les premières actions d’amélioration devront être prises.

2ème Conférence: Tester en Scrum, ça bouge

Cette présentation montrait les bases de la méthodologie Scrum que tout le monde connaît déjà. Quel est l’intérêt pour l’équipe Scrum d’avoir un testeur dédié. Le test en Scrum est:

  • Motivant: grace aux cycles courts, les retours arrivent quand c’est encore chaud
  • Intégré: il peut influer sur l’implémentation en cours
  • Gratifiant: on a rapidement l’assurance de la qualité de son travail
  • Encadré: au sein du scrum planning et des cycles courts associés
  • Animé

3ème Conférence: Workflow et gestion des anomalies en environnement open source

Description d’un projet d’Orange Portails avec utilisation d’outils open source (alors que je pensais que le sujet concernait de développement d’un projet open source, et pas la simple utilisation d’outils open source) customisés. Utilisation dans leur cas de FusionForge, Testlink, Selenium, JMeter et HP QTP pour l’automatisation. Je passe…

 

Mes conclusions:

  • De plus en plus de monde à ce genre d’évènement. Le métier est en constante croissance, et les chiffres l’attestent puisque la tendance est clairement à augmenter les budgets QA (en pourcentage) dans les projets.
  • Même si le sujet principal est le test et la qualité logicielle, on se rend compte qu’on y parle beaucoup de méthode agile et notamment de Scrum. L’agilité logicielle serait-elle devenue clairement un synonyme de qualité logicielle ?
  • Au milieu des offres commerciales qu’on trouve dans les stands (des outils qui en font toujours plus), on trouve des choses potentiellement intéressantes. Je pense notamment à l’outil d’un éditeur qui permet de mieux analyser la couverture de test en faisant tourner des agents qui tracent le code qui a été utilisé pendant que les testeurs jouent leurs tests: l’outil (qu’il va me falloir essayer) permet ainsi d’éviter les redondances de test, de mettre le doigt là où on ne va jamais, etc.
  • Il faut faire de l’analyse statique de code
  • J’ai à ma disposition les slides de ces conférences mais aussi d’autres auxquelles je n’ai pas assisté: Amélioration continue application Web, Améliorer les processus avec CTP, Le mythe du ROI, Le pilotage par les tests, Les tests dans le contexte SOA, Méthodologie participative MOA MOE, Qui a tué ma prod ?, Test de sécurité DGA Smartesting (accès restreint à Linagora).
0

You’re doing it wrong! Or how to grow a community (Main Track Sunday 15:00)

February 15, 2012

Language of feedback : english

By Stephen

Making the most of communities, have an effective community management are both so consequent that one can create
a book about it.

This conference was lead by Bryan Stergaard who is in charge of the Exherbo project since 2008.
It is mostly a give and take job.

First, you have to answer (more like a brainstorming) some very important questions like :

  • What do I want from the community ? More developpers, contributions about documentations or translations, help desk ?
  • What are the needs of the community ? A better project ?
  • How important the community is for the project ? Easy tasks or impacting tasks ?
  • How much time do you want to spend for the community ?

The better way to create a good community is to help its people reach their goals, and at the same time, help for your needs.

A good start is to provide some trivial bug to help people enter into the project. You should absolutely reward and let the credit to any contributors who provide any sort of contribution. Note that every reference about the current contributor
(simply a name in the git log or in the web sites) is fundamental to keep a good relationship between him and the project.

Respect is indeed very important, show interest about every people ideas but during any discussion don’t forget to steer them to the direction you want.

As an example, Bryan was proud to talk about the Exherbo project with a several hundred contributors community in which 80% are regular.

0

Debian Packaging for beginners (CrossDistibution Devroom Saturday 15:00)

February 15, 2012

Language of feedback : english

By Stephen

Become a debian packager is very easy ! Create just a debian directory in your source directory, run dpkg-buildpackage
in a shell then follow every displayed errors. This is how i learn debian packaging in this conference with Lior Kaplan,
a debian packager since 2006. After resolving all those errors, you would create a debian/control file (what package for
which architecture), a debian/rules (what tasks and tools are needed to build the deb file) and finally a debian/compat
(specifies the “compatibility level” for the debhelper tool).

Some important ideas and tools to remember :

  • dch is a cool tool to manage debian/changelog creation, maintainability and versionning.
  • lintian check the validity of your packages for policy compliance.
  • apt-get source <any-project> will provides a lot of templates and file examples.
0

Project Builder (CrossDistibution Devroom Saturday 14:00)

February 15, 2012

Language of feedback : english

By Stephen

Package early, package always” is the concept behind Project Builder.This GPL continuous packaging solution,
created few years ago by Bruno Cornec, currently one of the IT Architect of HP, offers an all-in-on packaging project.
The very first goal is to be completely agnostic to CMS, OS and build environment.

It also provides a lot of useful tools and perl scripts :

  • VM and VE Management (rpmbootstrap, depbootstrap, KVM or GEMU iso installation)
  • Scripts and Skeleton generation to help starting.
  • Validity checking of packages (lintian, rpmlint).
  • Delivery management and integration tests in the process.
  • Versionning management (patches and announces).

The solution is indeed very helpful and promising. But it also seems too young to be fully implemented into a
enterprise production as there seems to be no other use case reference but the one from HP project in which
Bruno works.

Nevertheless, it is really a project to follow because it provides an easy and centralized way (scripts and rules)
to package any project for dozens of different distributions (including Fedora, Debian, Mandriva, CentOS, Solaris, …).

0

Linux Containers and OpenVZ

February 15, 2012

Speaker : Kir Kolyshkin

Language of feedback : english

By Emmanuel

OpenVZ: container technology – like VM, but keeps the current kernel (so no Windows, etc)
No virtual hardware, single kernel, many instances due to high perf (almost no  overhead). Of course, performance issues with hypervisors mitigated by hardware
Has its own files, /proc, devices, network
It can be given access to real hardware
OpenVZ can be snapshotted and restored (including on a different computer)
Example:

vzctl create 101 –ostemplate fedora-15
vzctl set 101 –ipadd 20.21.22.23/24 –save
vzctl start 101
vzctl exect ps
vzctl enter 101

Very good performance compared to VMWare
Virtual swap -> no IO performed unless shortage of RAM (slows down container to emulate actual swap)
Can store the container to single file
CRIU: check/restore in userspace
Lots of users in production
LXC is another solution (in the kernel) but not the same level of maturity and features as OpenVZ, still very young
Historically developped off-the-mainline, being merged (currently requires a patched kernel)
Can run xvnc server inside container to sandbox X apps (see page on OpenVZ site)
Can’t nest OpenVZ
Will work with systemd in the future

0

Multi-CPU performance in PostgreSQL 9.2

February 15, 2012

Speaker :  Heikki Linnakangas

Language of feedback : english

By Emmanuel

Purpose:

testing CPU bottlenecks in Postgres on serious hardware (Itanium machine with 384GB RAM, 32 logical CPUs) and patching it to make it faster
DB fits entirely in RAM
PG scales well for complex SELECTs into large transactions. But concurrent inserts don’t scale.
PG is bad at parallelising bulk loading with COPY (transaction
log is the bottleneck) – unless you create the table in the same transaction in
which case it isn’t WAL-logged
Heikki wrote a patch to improve the logging mechanism by writing pages of logs to the WAL log, instead of one for each insert (accelerates bulk INSERTs but not regular INSERTs)
The patch also makes for a smaller WAL log
SELECT in PG already fast, but can be made faster by changing the locks.
The result of the patch is 100k transaction per seconds (simple SELECT statements in a transaction) with 50 clients – benchmark made with pgbench
Another patch (not yet commited) multiplies by 2 thirds the speed of INSERTs
Conclusion: PG 9.2 is going to be FAST (at least as long as the CPU is the bottleneck)

0

XMPP

February 15, 2012

Language of feedback : english

By Michael

The basics

XMPP is a commmunication system, originally targeted for real-time chat (under the “Jabber” name). It started in 1999 as Jabber, and has been standardized as XMPP in 2003 (see RFC 3920, RFC 3921, RFC 3922, RFC 3923).
XMPP requires each client to be connected to a server, and servers can be linked to achieve inter-server communication. XMPP is conqequently a decentralized system.

Each user got a unique identifier, known as the Jabber ID or JID, that has the same form as an email address (eg. mbailly@xmpp.linagora.com). Additionnally, a resource can be appended to a jabber ID, thus providing a full jabberID or full JID (eg. mbailly@xmpp.linagora.com/smartphone).

The communication protocol is based on XML and got three main entities (known as stanzas): message, presence and iq. One of the main strength in the XMPP protocol is extensibility: by defining custom namespaces, one can use the XMPP protocol to send custom communication data. A number of extensions are already standardized through the very open XMPP Standards Foundation, such as the one to achieve multi-user chat (chatrooms), or file transfert through XMPP.

XMPP architecture follows this simple rule: all the hard part of the work should be handled by the server, the clients focusing on the User Experience.

XMPP is now a mainstream protocol, and has been adopted by giants such as Google in their Google Voice offering, Cisco and Oracle. More recently, Microsoft and Skype added XMPP support to their Instant Messenging products.

HelpIM presentation

The developper behind HelpIM have a simple goal: connect a user to a mentor. The user comes using a web browser. So it’s a typical use of XMPP over HTTP.
The first implementation of his website used a custom webserver, linked to a XMPP server and an Apache server, and a database handling user accounts and other things. The mentor used an XMPP native client. The XMPP over HTTP part was achieved through a push mechanism. This first version used to have lots of problems: push is fragile, he met race conditions between the custom server, apache and XMPP server.
Using iterative enhancements, he finally came to a more simplistic yet rock solid setup: the web browser communicate through BOSH directly to the XMPP server. Bosh is a transport protocol, emulating a bi-directionnal stream using multiple synchronous HTTP requests. Aside some specific conditions, where the client got a network hang and doesn’t reconnect fast enough, its final setup works really good.

Webinos presentation

Webinos is a research project sponsored by the european union. It basically tries to enable inter-devices communication using XMPP. For example, what if your TV was linked to your laptop, so that you could buy tickets when seeing a documentary on, say, the show Beyonce gives in your city tonight ? What if your laptop can send to your car the map from your house to the concert room ?

Using a concept of perconnal zones, regrouping SSO, sync across devices, storage, and devices discovery (among others), Webinos defines API allowing entities to securely work together and exchange informations.

Plastique presentation

The plastique developper take the following route: don’t try to do with HTTP waht HTTP is not built for. Plastique is a web browser experiment, combining HTML (Javascript & CSS) with XMPP to reach new levels of applications and social networking. Using a stack of Python, Qtwebkit, and SleekXMPP, he integrates XMPP into the core of a web browser. XMPP could then be used to provide unique ID (see the Mozilla BrowserID initiative), Publish-Subscribe system, browser push, offline notifications (see the Mozilla offline notifications proposal), web presence, and more.
While still at an early stage of development, he made it clear that the (web)applications developpers will have decupled power with those two big technologies at their disposal.

Feelings of the XMPP devroom

XMPP is here to stay. After 13 years, it proved to be a robust and capable protocol. Its extensibility allows for never-ending enhancements, both for the public use or for more specific needs. Applications built on top of it seems rock-solid, resilient to network outages (minus the realtime parts of course) and not so hard to setup. When building a collaborative system, its a technology worth to look at.

0

A real Skype alternative using standards compliant FLOSS

February 15, 2012

Speaker : Emil Ivov

Language of feedback : french

By Matthieu

Présentation d’un projet de migration de l’université de strasbourg vers une alternative libre à Skype. (Whitepaper : http://bluejimp.com/whitepapers/jres2011-complete-fr.pdf )

1/ Première étape, identifier les points fort de skype dans le contexte universitaire :
- qualité audio & vidéo
- gratuit
- conferences
- sécurisé
- grande communauté d’utilisateur
- facile

2/ Utilisation de JITSI pour répondre aux exigences

Comment traiter le problème des communications P2P pour la vidéo et le son :
- utilisation de ICE
- utilisation de relais à l’aide d’openfire dans le cas où les connexions P2P ne peuvent pas fonctionner

Routage sur de la téléphonie :
- mise en place d’un serveur freeswitch qui fait la transition entre XMPP & SIP
- Une fois la connexion établie, le RTP ne passe pas par le server openfire

Sécurisation à l’aide de ZRTP.

Support des conférences grâce au protocole jingle.

Enfin, relation avec le reste du monde via la capacité d’interaction des domaines XMPP : support de  gtalk, gmail, etc

0

JBoss Forge / Arquillian: Two Missing Links in Enterprise Java Development

February 15, 2012

Speaker : Koen Aers

Language of feedback : french

By : Matthieu

1/ Promotion de JEE 6 par rapport à JEE < 6

- moins de code inutile
- ratio signal/bruit plus important
- de nombreux mécanismes très puissants
- applications et connaissances portables d’une plateforme d’exécution à une autre

Les différences qui permettent d’arriver à ce résultat sont :
- l’usage de POJO
- l’usage d’Annotations
- la normalisation des EJB Lite qui ne nécessite pas un serveur JEE complet
- le packaging simplifié
- le profiles de serveur JEE

2/ Publicité pour JBoss AS 7

Démarre en moins de 3 secondes

3/ Point négatif :

Le marche à franchir pour commencer un projet est assez haute, ce qui rend la démarche plus lourde que nécessaire.

4/ La solution : JBoss Forge

Il s’agit d’un outil de type ligne de commande avec complétion, etc, qui permet la création d’un projet, l’activation de fonctionnalité JEE, la génération de pages web de CRUD, la définition d’entités de base de données, etc.

L’outil est extensible avec des plugins, une démonstration a été faite, un plugin utile à été créé en 15 minutes au cours de cette conférence.

5/ Le test : Arquillian

Tester du code JEE est assez compliqué car un grand nombre de services sont rendus par la plateforme d’exécution, ce qui rend le test de composant isolé compliqué.

Arquillian a été développé dans le but d’exécuter des tests unitaires dans des serveurs JEE

Il prend en charge le déploiement des tests dans un très grand nombre de serveur d’application.

Pour faciliter sa mise en oeuvre, un plugin JBoss Forge a été développé.

6/ Exemples d’utilisation

$new-project
create a project with a command line tool into eclipse : it creates a maven project and import it into eclipse

$persistence setup –provider HIBERNATE –container
adds hibernate persistence to the eclipse project

$scaffold setup
change to packing target to war

$entity –name Article
create the JPA persisted POJO

$field int –name stocklevel
add field to Article

$rest setup
$rest endpoint-to-entity

$ forge find-plugin arquillian
$ forge git-plugin …
$arquillian setup –container JBOSS_AS_REMOTE …
$arquillian create-test –class

0

Infinispan: where open source, Java and in-memory data grids converge

February 15, 2012

Speaker : Manik Surtani

Language of feedback : French

By Matthieu

1/ Standardisation

Java ne contient pas encore d’API de cache.
Une très ancienne JSR (début en 2001), la JSR 107 devrait être intégrée à JEE 7.
Il existe de nombreuses librairies qui offre des fonctionnalités de caching, mais il s’agit ici de normaliser cette API.

En l’occurrence, on la majeure partie de cette API se trouve dans le namespace javax.cache.Cache.
L’interface est très proche de l’interface d’un Map, mais la sémantique n’est pas la même.

Cette spécification décrit en plus de cette interface, une compatibilité optionnelle avec JPA, pour la persistance des fonctions de write-through et write-behind, de listeners, et une intégration CDI.

En supplément de cette JSR, qui arrivera de manière un peu tardive, une autre API a été développée pour les data grids : la  JSR 347.
Le but set d’intégrer cette JSR dans JEE 8.

Cette JSR étend ce qu’on trouve dans la JSR 107 :

  • async, non-blocking API
  • grouping API to control co-location
  • distributed code execution and Map/Reduce API
  • eventually consistent API

Il y aura probablement d’autres fonctionnalités, cette JSR étant en cours d’écriture.

2/ Les data grids

Ce sont des caches distribués, le but étant de récupérer des informations à un coup moindre que le calcul ou l’accès à la source de données qu’elle remplace et avec une latence plus faible.

Les data gris peuvent être vues comme des boites à outils pour le clustering : elles fournissent des fonction de HA et de failover, les framework peuvent s’appuyer sur les datagrids pour la gestion de l’état des applications, le framework devenant par ailleurs stateless et donc scalable.

Les data grids font par ailleurs bien plus que des caches :

  • capacité d’effectuer des requêtes
  • capacité d’exécuter du Map/Reduce
  • permet de contrôler la localisation des données

De fait, les data grids sont d’excellent candidats au stockage dans le cloud : élasticité, HA, et les fonctionnalisées converge avec les base NoSQL

3/ Infinispan

C’est une datagrid  transactionelle
Il est possible de la déployer embarqué dans les applications avec un mode P2P pour le passage à l’échelle
Il est également possible de le déployer en mode Client/Serveur et utiliser une API tel que REST, Memcached ou Hot Rod

4/ Hot Rod

Hot Rod est un protocole de communication client/serveur qui supporte le failover, le load balancing et le smart routing, c’est la solution la plus efficace pour mettre en oeuvre une datagrid infinispan.

0