Showing posts with label agile testing. Show all posts
Showing posts with label agile testing. Show all posts

Thursday, January 19, 2012

No More Automated Test Engineers


As I reviewed several candidates’ resumes recently, something bothered me.  The open position is for an Automated Test Engineer for Agile Teams.  I am looking for an automated test engineer, but I find that I am bothered by the automated test engineer role.  After I thought about this for a while, I realized that I am still thinking about the “Whole-team” Test Automation post.  If everyone is an automator, then there is no need for an automator.

The common thing about the automation engineers I have met with and interviewed is that their current career path depends on the ignorance of their testing colleagues.

Even though it may seem to be disingenuous (I grew my career as an automation engineer), but I see no place for it anymore.  The presence of an automation engineer at a company is a sign of a problem.  In all likelihood, it means that a two-tiered system exists in the company’s test team.  In a proper agile test team, all members of the team have the skills of automated test engineers and are ready to use them whenever they are needed.

BTW:  I recruit for automation engineers because the industry has not caught up with us yet. I look forward to a day when the base expectations of a software tester include high levels of technical proficiency and mad testing skills.

Sunday, December 4, 2011

The Role of Reputation in Agile Testing


In Agile development teams, your reputation is more important than ever.

In traditional development teams, your peers certainly had opinions about you  They might love you or hate you or have no idea who you are.  The formal process of traditional development protected you, and it limited the impact that your reputation had on your professional work product.  For example, people from other groups may have approve test scripts you write.  Or you might execute test scripts written by someone else.  Your personal responsibility for your work was limited.  As long as you mechanically performed your tasks, you were covered.  

All that changes in agile.  In the most agile of shops, agile teams are self organizing, and the agile tester has a lot of discretion.  You are no longer protected by process. You can succeed or fail on your own.  

The roles on agile teams are not clearly defined in a traditional sense -- everyone should work together to complete the task, regardless of a person’s formal role.  Agile teams should be self organizing and figure out the best way to do things on their own.  What is best depends on a lot of things:  time, skills, interests, and trust.  Trust is based on reputation, and reputation is based on the sum of your past work.

At my company, we adhere strongly to the principles of agile, and development teams make a lot of their own decisions.  For example,  the amount of coding that happens during a sprint ultimately depends on the feeling of the team.  Of course, our teams are committed to delivering the most functionality they can each sprint, but the code has to be clean and the team has to have confidence in the work product.  

We deliver develop and deliver code in a two-week sprints.  In two weeks, there are only ten business days, and all our code is delivered into production at the end of the sprint.  Whether programmers feel comfortable creating new code for seven days or nine days during a sprint depends on things like testing confidence.  From the testing perspective, we need to provide good regression coverage (and share our results regularly with the team), and we must make everyone feel good about the sprint-level work we are doing.  It is, of course, essential to keep up to date with testing (immediate feedback), but the perception of success is greatly influenced by our reputation.  In this sense, a tester’s reputation has a real impact on the output of the development team.  

Wednesday, April 13, 2011

Checklist for Agile Testing

During a recent test team discussion, we reviewed the key features of agile software testing.  As a team, we all have a good idea of what is important with agile testing and how it is different from conventional testing.  We worked on the checklist to give us a tool for keeping our agile test mindset fresh.

Use the checklist to question your own agile test performance.  It is good for a self examination or a discussion with your project team.  For example, you can use it to share your vision of agile testing with a team that is new to agile development.

For most of the questions, "yes" is the best answer.  It is doubtful that you will answer "yes" (or whatever the best answer is ) for all the questions -- use the questions and answers to provoke thought.

Leadership
o       Am I taking items off the mental shelf space for the lead programmer, scrum master, and/or business user?
o       Am I the scrum master for the project? If not, could or should I have been?
o       Did I help the scrum team understand risks?
o       Do I organize work for the project?
o       Have I made decisions in the best interest of the project?  Did I give up ownership and did I take on ownership of right things to make the project successful?
o       Did I help new team members learn the project?
Analysis
o       Am I documenting the project, opening tickets and describing requirements?
o       Am I writing user stories?
o       Did I come up with any of the requirements for the project?  This is an indication that you are actively participating in the project.
o       Did I define and/or develop tests at the beginning of the sprint? Early work is good work.
Collaboration
o       Are other members of the scrum team helping with testing?  In agile, any member of the team should be able to test.
o       Do I feel like I am up to date with programmers and business users throughout the sprint?  A catch-up period later in the sprint is a bad sign.
o       During meetings, do I write on the white board?  This is an indication that you are actively thinking, communicating, and  participating in the project.
o       Have I sat with a programmer while he or she wrote code for the project?
o       Have I sat with the business users? 
o       Have I tested on the programmer’s workstation recently?  This is key to providing really immediate feedback.
o       Is there a lot of scrum team chatter?  Teams that talk to each other are more agile than those that don’t.
Testing
o       Am I giving really fast feedback to programmers on the most important things?
o       Am I known as “Fast Feedback [your name]” or “Quick Test [your name]?”
o       Are the programmers comfortable coding for the full sprint? Good agile testing can directly increase the productivity of the programmers.
o       Did I add value as a testing expert?  For example, did I help business users perform good test analysis?
o       Did I build any tools to help verify the project?
o       Did I update existing automated tests that changed because of my project work?
o       Did I use the simplest solutions for the problems I worked on?
o       Did we get user acceptance feedback very early and very often in the sprint?
o       Have I built regression tests for new functionality before or while it is being built?
o       How long are issues sitting with me before I turn them around?  Issues should sit no longer than a day or two.
o       How old are the bugs we are finding on the project?  The only good bug is a dead bug, and the best dead bug is one that didn't live long.
o       Is a lot of testing taking place at the end of the sprint?  Best answer is "very little."  Make an effort to test early and regularly throughout the sprint.  If you are testing a lot at the end, you are probably not being very agile.
o       Was more than one person involved in user acceptance sessions?  Do the users I worked with represent the user community well?