The document describes an approach for training manual testers to write automated tests. It discusses components of successful training including the teacher, material, students, and structure. The ideal training involves a knowledgeable teacher, modular coding fundamentals and testing material, hands-on practice, and mentorship after to reinforce skills. With the right components, the training produces junior developers able to write automated tests.
2. www.cohesion.com | 877.774.3001
Who I Am
● Worked two years as a developer
● Was ready to leave QA when introduced to Ruby
● Love it
● Really love it
● Love talking about it
● Love talking in general, really
● Which led to doing a lot of teaching
3. www.cohesion.com | 877.774.3001
What is this training?
● Take a bunch of people with little to no technical skills
● Put them in a classroom
● Teach them how to write code, specifically Ruby
● Teach them how to write automated tests
4. www.cohesion.com | 877.774.3001
Why Train People?
● Hard to find automated testers
● Understand your way of doing things
● Books and online tutorials are great, but don't provide a linear flow of
information
● In-person instruction provides instant, relevant feedback
● Some people just learn better in a formal setting
● Increases flexibility of team members
– Moves you closer to being truly agile
● Helps testers better understand what to test
5. www.cohesion.com | 877.774.3001
Misconceptions
● Two things I often hear about learning automated testing:
● It's easy! Read a book, attend a presentation, and you're an expert!
– Well, no.
– The theory is easy. The basics are easy. But underneath everything is code.
– How do you build a sustainable framework?
● It's impossible! Manual testers can't be automated testers.
– Well, no.
– Everyone has to learn how to program at some point.
– Manual testers lack education, but not necessarily ability.
6. www.cohesion.com | 877.774.3001
First Attempts
● Not long enough
– 3 days is not enough time
– Too much time between sessions
● Too many people
– Difficult to provide individual attention
– People were easy to lose early on, which meant they couldn't catch up later
● No follow-up
– No mentorship afterward
– People were not placed where they could immediately use those skills
● Low level of success
7. www.cohesion.com | 877.774.3001
My Dream Training
● Asked for two weeks
● Had a mentorship program ready to go after those two weeks
● Small class size, only four people
● Immediately placed on the floor, working on automation
– Some of it was busy work, but it still reinforced their training
● High level of success
9. www.cohesion.com | 877.774.3001
Teacher
● Knowledgeable about the subject material
– Not just Gherkin, not just testing, but also development
– Can answer most questions on the fly, or be able to find out the answers
● Tolerant of mistakes
● Able to approach material from multiple angles
– Not all explanations work for all people
● Flexible
– Able to rework material according to class direction
– This is where being knowledgeable becomes essential
10. www.cohesion.com | 877.774.3001
Material
● One week for fundamentals
– No mention of testing, purely code concepts
● One week for Gherkin/Cucumber/testing
– Did not have to use entire week because the foundations were already in place
● Start with objects
– Some tutorials start with variables, I've found it more helpful to start with objects
– Since everything in Ruby is an object, this gets people into the right mindset from the start
● Spend some time on high-level design concepts
– Many times these aren't taught formally
– Get people using good coding practices from the start
11. www.cohesion.com | 877.774.3001
Material
● Select what is necessary from a day-to-day basis
● Modularize the material ● actions
● arrays
● atdd
● case
● classes
● code reviews
● conditionals
● dom
● dry
● env
● features
● gems
● gherkin
● hashes
● hooks
● inheritance
● instances
● loops
● methods
● modules
● outlines
● page-object
● parameters
● regular expressions
● require
● scenarios
● scoping
● selenium
● self
● step_defs
● tables
● validation
● variables
● watir
● yield
● yml
12. www.cohesion.com | 877.774.3001
Material
● Lecture → Example → Hands-on
– Explain the concept
– Demonstrate the concept
– Practice the concept
● Allow for interruptions
– Don't simply slog through the material, allow students to interact with the class
● Allow students to guide the material
– Take input on how to proceed with examples
● Create a narrative
– Create a scenario that brings all the material together
– Ex: library
13. www.cohesion.com | 877.774.3001
Material
● For the web testing portion of the training, we used the Watir example
webpage
– Has most html elements present to practice with
14. www.cohesion.com | 877.774.3001
Material
● Review session
– Conducted at the end of each week
– First week consisted of a code review by a senior QA developer of the library project
– Second week consisted of building a new project, complete with gherkin tests
– Helped reinforce everything the students just learned
15. www.cohesion.com | 877.774.3001
Mentorship
● This is a critical part of the process
– Do not simply toss people in cold, these skills are too new to them
– Place them with people that can provide guidance on what comes next
● Pair program
– Two people working on one task
– Allow the student to code, avoid just working while the student watches
– Guide them to solutions, don't just tell them the answer
● Rotate students among different people
– Give the student an opportunity to learn from many sources
16. www.cohesion.com | 877.774.3001
Mentorship
● Divide cards according to difficulty
– Start with easy cards, migrate to increasingly difficult ones
● For example:
– Beginner task – write a new script with existing steps
– Intermediate – write a new script with new steps
– Advanced – write a new page-object
– REALLY advanced – debug that one test that's been failing for five months and no one
knows why
17. www.cohesion.com | 877.774.3001
Structure
● Set the computers up in advance
– Administrator privileges
– Railsinstaller
– Keep the same machines
– Get them Rubymine
● Dedicate a room with a projector and whiteboard
● Plan mentors out in advance
● Find easy projects to start students out on
18. www.cohesion.com | 877.774.3001
Students
● What makes a good programmer?
– If only we knew...
● Self-motivated
– Willing to work on their own, in their own time
● Persistent
– This is hard to learn. People will struggle.
● Can learn independently
– Google university
19. www.cohesion.com | 877.774.3001
What you have at the end of this:
● Reusable training material
● Reference notes for the students
● Junior automated test developers