Learning For Agile Testers, Part 2
Learning For Agile Testers, Part 2
In part one of our Learning for Agile Testers series, we addressed general "thinking" skills that go beyond technical competence and how learning these enhances the value you contribute. In part two, we discuss some specific technical skills that benefit testers and how to acquire them.
Automation Skills
For automation to succeed, we need to apply good design practices. For example, we strive to keep each automated test to a single, clear purpose and extract duplication into macros and modules. Our goal is to make it easy to diagnose test failures and change the tests in only one place when the code changes. When testers collaborate with programmers and other team members, this is much easier to accomplish.
New-and-improved tools are available to help agile teams improve software development.
Lisa’s Story: Back in 2003, my team had zero test automation and no automated build process, but we knew it had to be our number-one priority. Our system administrator researched build tools, and we decided to use CruiseControl. Meanwhile, I was evaluating GUI test tools, and we decided to use Canoo WebTest, partly because it integrated seamlessly with CruiseControl. My previous teams had continuous integration (CI), but I wanted to learn more, so I read the CI article on Martin Fowler's website [1] and we used his guidelines to set up our own. As a team, we have worked to keep up with the latest CI practices and tools, and our build process continues to evolve and improve.
Learn how to evaluate and choose the right tools, so you can help your team create maintainable automated regression tests. You can free up time for essential testing activities such as exploratory testing.
Acceptance Test-driven Development
Communication skills and good domain understanding enable testers to help business experts give good examples of both desired and undesired system behavior. We can turn these examples into tests that help the programmers understand what code to write. This is called acceptance test-driven development, and it is a major step toward building quality into the code and preventing defects. When we automate the acceptance and story tests during coding using a collaborative test automation tool, such as FitNesse, the tests can immediately be added to the regression suite. This helps testing "keep up" with programming.
Learning Styles
Some of us are auditory learners—we learn by listening. Some of us are visual learners—we need to see pictures. And then there are those of us who need to do—we call that kinaesthetic learning. Many times we need to take in information in more than one way. For example, Janet is an auditory learner, but she needs to practice skills to "set" them. When she tries to get a concept across, Janet needs to draw it out to help explain. Understand your style so you can get the best out of each learning experience.
Emotional aspects of learning have a big impact. We all have blind spots that may prevent us from learning or triggers where we shut down and don't hear the message anymore. To learn and question, we need a safe environment. Keep your emotional "hot buttons" in mind and focus on what you can learn from instructors, material, or teammates to enhance your abilities.
A good mentor can give you guidance when you don't even realize you need it. Mentors with different backgrounds or from other industries besides testing and software development might work best with your learning style. Don't limit yourself to coaches, mentors, and instructors who work specifically in software testing.
Janet's Story: When Lisa and I started developing and teaching our agile testing course, I began to read about teaching strategies. I picked up a few tips from the books and applied them. I also watched other instructors and tried to find the style that suited me. However, one of the people I turned to the most to mentor me was my sister. She is a first grade teacher with her master's degree in early childhood learning. She opened my eyes to new ways to approach teaching and working with my classes.
Learning Resources
Keep your learning style in mind as you seek out places to hone your skills. We're fortunate to have many good software and testing books and plenty of free material on the Internet. Communities of practice are another good place to find mentors and learn together with your fellow testing professionals. Take advantage of the resources your peers can provide. "Lunch and Learns" and book groups within an organization are another effective learning mechanism.
Conferences are an obvious way to get a lot of new ideas in a very short period of time. Most importantly, you'll meet practitioners and thought leaders with whom you can form a lasting network—a constant source of inspiration and ideas. Testing conferences are an obvious choice for testers, but consider other conferences, such as those that help you work on specific skills like scripting languages.
Mailing lists and social networks such as Twitter can introduce you to articles and blog posts on topics that interest you. Testing communities, such as Weekend Testers [2], give you the opportunity to learn in real time from other testers. Podcasts and online videos simulate the experience of actually attending a conference session or course.
Local testing user groups can be a great source of free training and information. Sharing your own experience is a great way to learn. Consider presenting an experience report or facilitating a workshop for your local user group.
Your best learning opportunities might be right where you are. Do you work with some smart programmers, database or system administrators, and testers? What can they teach you? Pair with your fellow team members: There's a lot you can learn from your coworkers, and a lot you can teach them.
Lisa's Story: I was part of a team that decided we would pair on every coding and testing task. When I paired with a Developmentprogrammer to write tests with FitNesse and SWAT, I noticed how naturally the programmer would notice duplication in the test code and immediately extract it out into our library of macros. I sharpened my test design skills considerably as a result.
Time for Learning
Set one learning goal for the next three months. Get out of your comfort zone. Take control of your own professional development. You'll have a more fun and rewarding career.
References
[1] Martin Fowler’s CI article on his website
[2] Weekend Testers
Further reading
- Learning for Agile Testers, Part One Lisa Crispin and Janet Gregory
- Agile Testing: A Practical Guide for Testers and Agile Teams, Lisa Crispin, Janet Gregory, Addison-Wesley, 2009
- Agile Testing and Process Thoughts with Janet Gregory
- Agile Testing with Lisa Crispin
- Agile Testing Matrix, as originally described by Brian Marick
- “Writing Maintainable Automated Tests”, Dale Emery, 2009,
- Continuous Integration and Testing Conference
- Google's '20 percent time' in action, Alex K.
- Atlassian's "Fedex Day"
- Exploratory testing articles and blog posts, Jonathan Kohl
- Blog: Exploratory Testing and Review
- Beginner's Mind—An Approach to Listening
- Everyday Scripting with Ruby: For Teams, Testers and You , Brian Marick, Pragmatic Bookshelf, 2007
- Agile-testing Yahoo group
- Agile user groups
- Software Testing Club
- Weekend Testers
- Virtual Hudson Build Environments
- TestifyWizard start-up wizard for test-driven projects



