Retour sur la JFTL 2014

la JFTL est une conférence organisée par le CFTL, association qui propose des certifications de tests logiciels. Cette année, pour la 6e édition, il y avait 500 personnes inscrites pour la journée. Dans les diapos d’introduction on nous informe que la population des visiteurs est bien ventilée entre management et opérationnel. Voici un rapide retour sur les sessions que j’ai pu voir.

Présentation intéressante de la gestion des tests de performance sur un projet RATP. Le SUT est une web app à destination des conducteurs de bus. Méthodologie classique teintée d’Agile. Les présentateurs ont partagé leur souhaits de faire des tests de perf en continu, mais ont avoué avoir eu beaucoup de mal à le faire (pour pouvoir faire les tests de perf, il faut déjà que le SUT soit fonctionnellement correct, d’ou besoin d’attendre la fin des sprints ou le sprint suivant). Côté outil: Gatling pour les développeurs et NeoLoad pour les testeurs.

SmartTesting a présenté sa solution Zest. Il s’agit d’un outil d’écriture de tests fonctionnels en ligne. Avec cet outil, on va pouvoir créer progressivement un DSL (ensemble de mots d’actions) que l’on veut utiliser dans des scénarios de tests. La plate-forme aide à l’écriture (suggestion d’actions lors de la frappe) et au refactoring (renommer des actions, créer des actions pour des motifs récurrents). Si l’on veut automatiser ces tests, on peut récupérer les tests en XML que l’on n’aura “plus qu’à” traduire dans le langage/framework de tests automatique de son choix. Je reste assez perplexe devant ce choix de ne pas proposer en natif une solution qui permette directement l’execution des tests comme il est possible de le faire avec des Cucumber, Fitness et Robot Framework.

Pages Jaunes a fait un retour d’experience sur l’utilisation de MaTeLo (de All4Tec) pour tester quelques features du site pagesjaunes.fr. L’outil MaTeLo propose du Model Based Testing. On peut importer ses exigences, décrire les états de son applis et générer des diagramme/flux en utilisant divers algorithme. Une fois les scénarios de tests générés, on peut les automatiser en Selenium. Là encore, je n’accroche pas trop sur l’outil. Pas de commentaire sur le côté mapping exigence/test case qui me semble un peu lourd (mais compréhensible dans de grosses organisations avec MOA, MOE et autres prestataires…). Par contre, générer automatiquement des dizaines/centaines de scénarios de tests qu’on va “automatiquement” exporter en Java/Selenium est contraire aux bonnes pratique d’automatisation qui commande plutôt d’automatiser autant que possible les comportement business “sous la UI” (voir cet article par exemple)

Enfin, présentation un peu poussive sur la génération de données de tests. Sujet intéressant à priori, mais quand je commence à entendre parler de “cellule de génération de tests”, ça sent l’ultra fragmentations et spécialisation des équipes. J’aurais aimé une présentation moins magistrale, plus concrète.

Globalement une conférence peu technique sur un sujet très technique. De ce point de vue, la présentation par HP de la nouvelle version de HP ALM/QC qui promet d’automatiser tous les tests et de trouver tous les bugs (ainsi que de résoudre la faim de la monde) a semblé captiver l’auditoire alors qu’elle aurait pu pas mal prêter aux sarcasmes :-)

A noter aussi la grande place occupée par les SSII dans beaucoup de présentation. Les clients finaux ne faisaient jamais de présentations seuls, mais toujours accompagnée de leur SSII. D’ou un dialogue très poli entre client qui a une vision métier du problème et la SSI qui a un discours “on va résoudre tout vos problèmes”. Grosse absence des testeurs qui mettent les mains de cambouis. Peut être car ils étaient retenus en Inde…

Journée intéressante malgré ces quelques bémols. Merci aux organisateurs et aux présentateurs !

Live-coding session of Robot Framework on Mac

Back in november, I hosted a talk at SoftShake. Like mentioned in my feedback post, I included some live-coding during the session. For the record, I’d like to share the set of tools I used to be comfortable doing this Robot Framework live-coding on my Mac.

1) Screen resolution: once plugged to the projector, the resolution available suddenly become very low. So it is important to rehearse the session using this low resolution, otherwise it will be very disturbing on the actual day. Choosing the largest display in Preference should get a resolution close to the projector if we don’t have access to one.

resolution

2) Window manager: I use Spectacle to quickly change windows arrangement setup. There are keyboard shortcuts to display windows on full, half or quarter of the screen. Once you get used to it, you can very quickly set 4 different windows in a couple of seconds on the screen.

spectacle

3) Terminal  : I use iTerm2. In order to quickly get 4 small shell windows, I place them on the screen using Spectacle and save the window arrangement in iTerm2. Then I can associate a keyboard shortcut to this arrangement to get it very quickly during the presentation.

iterm2 restore windows arrangment

iterm2

4) Text Editor. I use Textmate 2 (pre-built version here) with the Robot Framework Bundle. The bundle offers some keyboard shortcuts like *s⇥ which insert the *** settings *** header and nice color highlighting . There is no keyword completion though…

textmate

 

5) Live execution of the test. I wanted to obtain an effect similar to infinitest plugin with which each time a change is made on the source code, Infinitest runs the tests in the IDE. So I installed fswatch to run a script every time a directory content would be modified (i.e. every time my test would be updated) and created a small launch_robot.sh script that would be launch in such an event (script does clear + launch Robot).

fswatch

 

So, I chosed to display 4 windows during the live-coding:
1) top-left: live-execution of Robot Framework
2) top-right: source code of the Test modified live
3) bottom-left: Software Under Test. Jenkins for this session (either file structure or the UI)
4) bottom-right: web browser with Robot Framework Library documentations to show the keywords I used in my code.

live

 

During the session, the test regularly went from green to red when I added a not-yet-created keyword or used a keyword in a library I forgot to import. So the idea was to save the file as often as possible to see the result change color at the same time.

An idea for a future session could be to do the full BDD-TDD test-code-refactor cycle:
– show a spec of dev to do
– write the failing functional test with Robot
– write the failing unit test in Java with any unit test framework
– write the minimal code to get the unit test green
– refactor the code and the test
– launch the functional test and update the code to make it green if it is still red

This could even be performed by 2 people: one QA and one dev… Will see if I ever try this!

Agile Grenoble 2013

Last week I went to Agile Grenoble Conference. The whole day was of very good quality. I was lucky with my choice of sessions and shared my day between good discussions and great talks.

My menu was:
Kanban by Romain Couturier
Testing and refactoring legacy code by Sandro Mancuso
 Functional Programming by Neil Ford
 TDD by Michael Borde
 Angular + Jersey by Laurent Leseigneur and Olivier Cuenot

All of them were very interesting but I was really bluffed by Sandro’s performance.
His slides can be seen here (with video at the very last slide):

That is really the kind of session I am looking for:
1) just a couple of main messages (“testing from shortest branch, refactoring from deepest one) during 5 minutes
2) live coding with some best practices, tips and personal opinions
And this was also very motivating to become more fluent with an IDE as part of the performance was the advanced usage of Eclipse, which for a Java developer is a real add-on.

Before the keynote of the afternoon, organizers found a great way to read the whole 12 principles of the Agile manifesto to the full audience of the conference. Strangely enough, I think it was the first time I heard the 12 principles read totally during the conference after 5 editions. The idea was that every person in the room had received a cup with 3 sentences from the manifesto. When our sentences were read, we got to sit. After the 12, a group of 10 people remained standing and they had to go on stage to read the sentence they had on their cup. Those were fake sentences like “company result is the primary measure of progress”. Very clever game!

This year I was a full visitor: I was neither organizing nor presenting. So thanks to all the contributors of this great day and I hope to give a help one way or another next year!

Automation of Functional Tests with Robot Framework at SoftShake 2013

Last 24-25th october I went to SoftShake conference in Geneva. The conference was very interesting and was happy to see a lot of source code and live coding/demos. I was given the chance to make a presentation about automations of functional tests with Robot Framework. Here follows some feedback on it.

The slides can be found bellow though it misses what I consider being the most interesting part: live coding.  To show practical examples of code, I wrote some tests with Jenkins as a SUT. Those are very simple tests but that helped people to get a better idea of what kind of test can be written with Robot. Those little tests can be found in Github. I used fswatch to have the tests be executed every time I would save the tests. So with a split screen code+robot it was looking like an infinitest setup.

Questions I got after the presentations are worth noting as they give some information about what people care/think when they discuss tests automation:

1) Is it possible to have variables in the middle of a Robot Framework keyword? Question arose because in the Robot code I showed and wrote, I always write :

keyword argument1 argument2
ex/ file should exist in folder    file name    directory name

where in fact I should use the facility offered by Robot to put argument inside keywords like described in the documentation. This helps ending up with tests that are easier to read. Here is a simple example:

*** test cases ***
Embedding arguments into keyword name
number 2 and 2 should be equal

*** Keywords ***
number ${x} and ${y} should be equal
should be equal ${x} ${y}

2) “With a tool like Robot Framework, are QA supposed to commit the tests in the SCM?”. Answer is yes as the tool makes the more sense when integrated in a continuous integration environment that will retrieve the tests in an SCM. But the question is worth asking because in my previous company, having QA using the SCM was not an obvious step to make. With some non-technical rather-functional QA we might have a group that is more at ease with Office documents and filesystems than with developer tools. Personally, I consider using the same tool is also a very good opportunity to make the QA and Dev team be closer. (further reading on this topic: “Technical artifacts including test automation and manual regression test scripts (if any) belong in the Source Control System versioned with the associated code” by Elisabeth Hendrickson)

3) is it possible to write keywords in Java rather than Python. Answer is yes, although I consider Python to be a good choice and more homogenous with the syntax used in Robot DSL.

4) finally, there were several questions about what “component tests” are and what entry points could be used in the SUT to write such tests. My definition of component tests is rather shallow: everything that is between unit tests and end-2-end tests! That’s enough an explanation for developer-type people who can envision a REST API for example. That is more complicated to grasp for non-technical QA or managers. I was, once more, surprised to see that for many people they were 2 obvious way to test a product: unit tests written by developers (white box testing) and gui-driven-tests written by QA (black box testing)… Some more evangelism to do for gray box testing I guess!

So this was good opportunity to share my experience of Robot and to be challenged with unexpected questions is a very good way to progress. So I might be back with other sessions in the future…

 

Fall 2013 Conferences

A couple of conferences are coming up this fall.

First one is SoftShake in Geneva where I will be presenting a session on Tests Automation with Robot Framework. The program is very appealing and I expect to come back with some take aways. Looking forward for the cucumber session and also to meet some french people I have a chance to see only during conferences.

Second one is Agile Grenoble where the main problem will be to choose some sessions among the 9 tracks and the multiple interesting speakers that are lining up! But this is will be more relaxed for me as I won’t have my own session.

Hope to see you in one of these events!

Retour sur Mix-IT 2013

Le 25 avril dernier, j’ai assisté à la première journée (sur 2) de Mix-IT à Lyon organisée par le Lyon-JUG et le Club Agile Rhône-Alpes. Comme l’année dernière, l’organisation était excellente et globalement les sessions ont été de très bonnes qualité. Cela a aussi été l’occasion de retrouver et rencontrer (grâce à Ludo entre autre !) des agilistes et javaistes de toute la France.

Voici un rapide retour sur les sessions auxquelles j’ai pu assister.

  • “Jouez, apprenez” par Christian Martinez. De l’intérêt de (se) former par le jeu.  La session résonnait avec d’autres que j’ai pu voir sur les “innovation games” (comme celle de Grilog l’année dernière). Malheureusement, la pédagogie par le jeu n’a pas été mise au service de cette présentation que j’ai trouvé un peu poussive.
  • Introduction au NoSQL avec CouchBase” par Tugdual grall. Se voulait être un atelier mais il a plutôt s’agit d’une présentation magistrale (note pour l’orga: limiter le nombre de participant quand il s’agit d’un atelier ? 15/20 pers ?). La session aura déjà eu pour intérêt de me permettre de faire la différence entre CouchDB et CouchBase ! Tugdual a très bien vendu son histoire. Introduction claire sur le NoSQL puis premiers pas dans l’installation et la configuration de CouchDB (l’interface web pour administrer et monitorer semble d’ailleurs assez bien faite). Il a ensuite expliqué les notions de vues et d’index pour acceder aux documents stockés (JSON en général).
  • deux ans dans le flux” par Olivier Azeau . Ma session préférée de la journée. Un retour d’experience sur des constats et choix que son équipe (agile/scrum) a du faire face à l’échec d’un nouveau projet (nouveau produit, nouvelle techno). Les sujets de branche unique et d’estimations probabilistes ont eu le mérite de faire réagir la salle et d’en faire réfléchir plus d’un sur sa pratique ! Le billet d’Olivier sur la conférence mérite lui aussi une lecture.
  • “The hitchhikers guide to UXing without a UXer” par Chrissy Welsh. Introduction au monde des UX. Se voulait être un guide pour apprendre à faire de la UX sans UXer, mais a surtout été une longue présentation des outils/concepts manipulés par le monde de la UX. On a retrouvés nos amis les personas et les wireframes. Tout ça était très interessant, mais m’a laissé la même impression que si un paysagiste venait me parler de l’élaboration de mon jardin : ça serait bien de travailler avec lui mais je ne suis pas sûr que j’en aurais vraiment pour mon argent.
  • Concevoir son développement par l’API” par Éric Daspet et David Larlet. Session sur les API que les orateurs ont fait en mode discussion avec la salle sur des sujets qui ont dépilés par ordre décroissant d’intérêt pour l’audience (mesure de cet intérêt fait à l’aide d’un doodle avec la session. Bonne idée !). Points abordés interessants mas difficiles à suivre vu la configuration de la salle (grande salle, pas de micro, bruit de clim’). Il a été de nouveau question de points abordés par David lors de son lighting talk, notamment du fait de mettre des liens dans les objets retournés par les API. Ces sujets méritent effectivement discussion. A poursuivre !

La journée du jeudi s’est terminée par une soirée très sympa au Blogg (mélange entre un pub anglais et un biergarten allemand !). L’occasion de poursuivre les discussions de la journée.

Un seul regret ? Avoir manqué la deuxième journée avec la session de Johan et Remy ainsi que la keynote finale du lendemain par Audrey et Aline sur l’apprentissage de la programmation ! Ca promettait d’être interessant et animé tout ça !!

Encore merci aux organisateurs et orateurs pour ce très bon cru !

Devoxx France 2013

Quick feedback from Devoxx France 2013.
Favorite session was, no surprise, test related:
“tests, pourquoi, comment”
Valtech guys working on Mappy project made a broad presentation about the way they envision and perform their testing activities.

My take aways:

  • automated tests are a form of specification that are always up to date. When you are not sure about the expected/actual behavior of your product, automated tests are a better fit than user manual (could be obsolete)
  • testing activites can be gamified. Did not check yet : pair hero and TDGotchi
  • set some timeout to your tests (easy and convenient in Robot Framework and TestNG)
  • launch your tests in parallel. See this interesting presentation from TradeShift and their blog article about it.

Many things to try out !

GRILOG conference about software quality

On october 18th, GRILOG (Grenoble Isère Logiciel) organized a mini-conference about software testing. There were six lightning talks performed by different Grenoble area software actors.

Agility was not mentioned in the topic of the night, nevertheless, most of the presenters agreed on numerous notions that are central to Agile Testing :
– quality/tests are not handled at the end at the project (Eric Pierrel, Itris Automation)
– to have feedbacks very early in the project (Anne Pellegrin, Multicom). She explained the Wizard of Oz experiment ! Very interesting. Made me think about Pretotyping by Alberto Savoia.
– tests are driving the projects (Remy Dujardin, Hardis) and the whole project team should be involved in it.

So it is interesting to see how Agile was over-represented once we started to talk about quality in software. Agile is still a big topic in the area. A recent prove is the craze to get the tickets for Agile Grenoble 2012 conference. It sold out 2 weeks before the events. 500 tickets for a city like Grenoble is quite an indicator.

Slides and video of the presentations (all in french) are available online.

After the  presentation, I had the chance to chat a bit with a local university teacher in software engineering. He was a bit skeptical about this “whole Agile thing” and was happy to outsource this part of the program to an external presenter… a guy from a local IT department. So, academic and business do talk together sometimes….(“please, help me present Agile !”)