Community Thoughts: ​​99 Things You Can Do To Become A Better Software Tester v2.0

By Rosie Sherry

There’s nothing like a new year to focus in on how we can improve ourselves as individuals, software testers and a community as a whole.

A few years ago, back in the good old days, we asked the community to help us produce a list of ideas of what would help testers become better versions of themselves. The original ideas are still very relevant, it’s worth a look!

We thought it would be nice to revisit this idea to see if the ideas had changed. The list below is the result. It is an edited list. There were many more submissions and you are still welcome to continue contributing ideas on the original Club forum post.

Team

Look for how to bring the best out of those you are working with, rather than focusing on whatever you don’t like. Help those around you to discover what they can contribute. - barrow_rider (Joe) Remember that security is your responsibility, it’s everyone's responsibility. - screamingjoypad (Mike) Learn the business. What’s your organization’s mission? How does the organization contribute value? How does it earn revenue, and how does it keep customers happy? It doesn’t matter if your org writes apps, behind the scenes biz-to-biz, or creates security frameworks. Understand what the mission is and how your software delivery team impacts that. - Jim Holmes Facilitation skills - for example, being able to bring the team together to brainstorm testing ideas. - ob (Janet Gregory) Be nice to people and treat everyone with respect. - dnlknott (Daniel Knott) Sometimes there can be some pressure (not intentional) to do a lot of extracurricular activities but please Remember it’s OK if the best source of medicine is to stay at home and recharge. - ejaykay (Emma Keavney) Stop treating developers as the enemy. I still see this mentality, and it’s unproductive, causes unnecessary conflict, and just outright needs to stop. We all work together on modern teams to make the product shine. - Alex Langshall If you can’t do it, drive it, champion it, and make it happen! Learn about different frameworks/methodologies and help the team deliver. Understand that you have just as much value to the team as any member - you’re all captains here. - thatresolves (Ashley) Remember that you are working with humans first, machine second. Be nice, empathic and precise. Focus on problems in the system, not whom made them. It’s many times easier to spot the problems early by communication. The more people you talk to the bigger chance you might find discrepancies in what they describe or expect. Many bugs and problems in software isn’t because of coding errors, but by the code trying to solve another problem. - jsandell (Johan Sandell) Be an awesome person to other people that you work with. Applicable testing is purely social. You will achieve nothing unless people listen to you and think that your ideas are credible. This is based mainly on your reputation, the language you use and how you conduct yourself. You need to understand the needs of others and how that affects how you’re going to be able to get your job done. - kinofrost (Chris Simms) Build good relationships with your developers. Ask them what they would test if they were in testing the system. - Butch Mayhew Be aware of your responsibilities, your order and your limits. - Janet Albrecht-Zölch Provide valid and valuable feedback promptly - Joe DeMeyer Increase information transparency: Look for ways to make people know more about all aspects of the project without having to wait for date/milestones, big delivers, or having to ask people directly. Thus, you will enable others to detect risks and problems earlier and more often. (Sounds almost like a manager job, but I think a tester should pay as much attention as a manager in the team’s dynamics) - joaofarias (João Farias) But most importantly be generous and kind - two qualities that will take you further than learning any technical tool or language - kimberley (Kim) Quick Cynefin tip: Your go-to response might not be the most appropriate for the situation. What does the information tell you?

We know this situation. We know how to handle it

Sense -> Categorise -> Respond

We can ask someone who knows about this (or we can do some analysis and find out)

Sense -> Analyse -> Respond

We’re in unfamiliar territory. There’s no way to know until we’ve tried some stuff.

Probe -> Sense -> Respond

Stuff is on fire and we have to put it out

Act -> Sense -> Respond

See how deep the Cynefin rabbit hole goes - ben.kelly (Ben Kelly) Everything everyone’s already said about relationships with other folks on the team - devs, BAs, PMs, support, DevOps, etc. You can learn so much from all of these other roles, and do your job better too! - g33klady (Hilary Weaver) Take responsibility if you see something go wrong, act! Avoiding mistakes improves quality. - jesperjeeninga (Jesper)

Software & Tech

Learn technology. If your product has an API then you should know about APIs. You should be able to see behind the UI and model the flow of a system. You should know something about programming - not how to do it, necessarily, but how objects work and what a procedural language does is a good start. The more general knowledge you have about systems design and technology the more valuable you will be and the better your internal models will be for testing. - kinofrost (Chris Simms) Understand what your application is doing, and why it is doing it - use (or create!) process flow diagrams, user flow diagrams, architecture diagrams etc to really master your domain - g33klady(Hilary Weaver) Learn general systems thinking. Without this you will struggle to be able to model a system in various, useful ways, and your thinking will be stilted and overly “vertical”. - kinofrost (ChrisSimms) Understand the architecture of the application, what it’s made of, how it’s put together. It can help you to identify risks and test more deeply. - Claire Reckless Sit down next to someone and ask in your best curious 'I'm just interested and wanna learn' voice: 'whatya doing?’ - Alex Schladebeck Try to fix a bug yourself, even if it’s been around for years. You gain a new understanding of not only the process to code something, you also get to experience exit and entrance amigos from a new perspective and you get to learn how to write tests as a developer would, allowing an in to see what tests are covered. Also, it allows you to get in the code review process, something that would be awesome if all testers could be involved with. - clymerrm (Rick) Build strong relationships with the programming team. It can be hard on the developer when you keep sending their ticket back and telling them that it still isn’t good enough, but if you have a good working relationship, you are less likely to create any tensions. Also, they can be really useful when you are trying to understand error messages and you can learn from each other. They will only help you if you are on good terms to begin with. - Faith Read Git commits. As someone who comes from the ‘manual’ side of the coin, there is importance in knowing what goes into the code when a product is tested. Git commits are snippets demonstrating how the code is changed for the purpose of bug fixing, new features or refactoring, all of which are useful as a tester to figure out where the risks might be.

They also tell you more how a developer works and where they might be focused. This is especially useful if your teams work with code reviews and so you might catch on to possible mistakes or how other developer’s insight might catch bugs before you even have a line of code to test.

Finally, they tell you how to prepare for the tests you will be running in your evaluation as a tester of their code. Sometimes there might be something else that wasn’t on the Jira ticket that might allude to either a potential bug or feature… - William Ellis Learn the Command Line - it will aid you greatly in your testing - screamingjoypad (Mike) Learn to read code. - Joe DeMeyer Always dig deeper and find the root cause. - ayaa.akl (Aya) Attend security conferences (eg. BSides, Defcon, AtlSecCon). There are great opportunities for us to learn from them, and vice versa.- Matt Middleton

Software Testing

Dive into the technical domain you are working in. - dnlknott (Daniel Knott) Empathise. With your customers, and your colleagues. - Claire Reckless Seek to understand your customers and how they use the system. This should help you identify ‘critical areas’ that should never fail. - Butch Mayhew Advocate Usability - software is (usually) going to be used by a fellow human being so chances are that the text being in two different fonts is going to annoy them just as much as it’s annoying you right now. - screamingjoypad (Mike) Join a testing community and start writing. - powercoder (John Dorlus) Don’t accept dogma because there isn’t just one way to do things. That means don’t rely on others to feed you everything you need to learn. Instead, go out and explore and figure out where you want to be and what you need to know to get there. Take all the help you can get but don’t rely on it. Make your own path. - Marc Muller Attend a developer conference. - powercoder (John Dorlus) Join in on Dev stand-ups. (You will find actionable nuggets on how you can help the team.) - powercoder (John Dorlus) Try different tools (not just testing related). It will give you ideas to explore more and differently. - ayaa.akl (Aya) Fix some low hanging bugs and add tests (devs will love you for life). - powercoder (John Dorlus) Find the answers to the questions you have that have remained unanswered. - a_miller (AlaineMiller) Make friends with people in every department at your company. To become a star tester, you need to be the go to person. It’s not about knowing the answer to every question, it’s about knowing the person that will know the answer when someone asks you something. Before you know it, people will be coming to you for everything and your work environment is a much more welcoming one! With people in every department on your side, you will also have a much easier time when you try to bring change to your company. It really works! - Matthew Record Recognise that Testing is so much more than just executing test scripts and finding defects. Learn that Testing starts at day 0 of a project. The whole purpose is for you learn the system which will enable you to then improve the testing and the feedback on the system - sjprior (Simon Prior) Beware of over-familiarity in your testing and knowledge it can lead to discounting genuine issues. - a_miller (Alaine Miller) Ask questions when you think they are needed. Don’t overdo it with them, people can get annoyed. - dnlknott (Daniel Knott) Use some static analysis tool or your bug history to find areas of the product that can be improved - ask people what is the root of the problem and create task forces to tackle the issue. - João Farias Discuss practices that are bottlenecks and create experimentS (plural!) to find out how to mitigate the problem - make people go out of their comfort zone with the clear goal of improving, in a safe manner, due the fact experiment are meant to fail more that succeed. - João Farias Gain an understanding of accessibility as it relates to testing. More countries are bringing in stronger laws to ensure websites are accessible and most refer to the Web Content Accessibility Guidelines WCAG 2.1 (Europe) or Section 508 of the Rehabilitation Act (US) in terms of compliance.

But there’s more to accessibility than just compliance. I believe the four pillars of accessibility are Compliance, Readability, Inclusive Language and Usability. Your sight is not accessible to everyone if it discriminates or excludes someone because of their gender, ethnicity or sexuality. If it is difficult to understand the content or use it also restricts people. Lets not just think about the perfect made up user who has the latest phone, a high IQ, is totally familiar with everything we do and binary. Let’s think of everyone. - Ady Stokes Don’t forget the importance of coordination when collaborating:

1. Kick-off session - align the goals, objectives (and sometimes scope)

2. Schedule regular Coordination sessions - for issues, for planning, for reviewing, for deployment

3. Change control board - never forget the impact on testing to determine if a change should be accepted or not - wendy.tonks (Wendy) Understand that not all bugs will get fixed, and that’s completely valid and ok.As testers we can develop tunnel vision and feel like every bug is a hill worth dying on, but in reality some bugs are worth fixing, and some just aren’t. Log every bug with equal passion, but don’t take it personally when some are sent to icebox purgatory. - antonia (Antonia Landi) Every once in a while you should apply the same critical mindset you use when testing to evaluate your own test approach. - ronnie (Ronnie Mears Østgaard) For 2019 - ask the people on your delivery team who are knowledgeable about the CI (continuous integration) pipeline (and CD if the team is doing continuous delivery or deployment) to explain it to you with visuals - drawing on the whiteboard or using sticky notes or cards on a table or wall. Learn what has to happen in between developers committing a code change until that change is seen by production users. This can take a lot of courage. You will have a better understanding of your product, process and risks. And as you ask questions, you may help your teammates think of ways to shorten feedback loops! - lisa.crispin (Lisa Crispin) Believe that your work goal is to release a better software not to prove that you’re right. - motareksamir (Mohamed) Trust your instincts. If something doesn’t feel right, record it. - lisa_jc (Lisa) Be a champion for the user. Escalate issues to the Product Manager if needed. Putting requirements into code requires interpretation. Developers may not completely understand how the user will interact with the application, dismissing your test results without understanding the impact. Your Product Manager will appreciate that you took the time to ensure things worked as intended and not just as designed. - miranda.michalski (Miranda) Advocate for testability - Joe DeMeyer Brainstorm your ideas (Mindmaps are awesome) - ayaa.akl (Aya) Apply testing to itself to become a better tester: Test your testing methods. Test your tools, your team, yourself (but never other people - they notice). Test your test code and your automation (if any). Test your bug reporting and your other communication. Test everything. - florian_schmidt (Florian) Don’t get hung up on terminology, just say it as you see it. Be the ultimate advocate for the customer. - lisa_jc (Lisa) Say yes - be willing to work on value-add tasks that weren’t on your job spec if you know they support the quality of the deliverables and there’s noone already in place to do them e.g. delivering training, conducting user research, knowledge transfer to new team members, getting requirements into TFS/Jira. This will help develop your quality mindset as well as cementing yourself into a team. - bethtestleadleeds (Elizabeth) Learn about, understand and know the nature of epistemology. Understand subjective reality and the many failures our heuristic brains create when making sense of a complex system with a brain designed to keep us alive in a jungle. From here you can learn how to learn facts despite our rudimentary primate brains - how we know anything to be true or false, despite ourselves (or“science”, as it’s known). This links into scientific thinking, the design of experiments, the role of falsificationism, critical thinking, tacit and explicit knowledge, mental modelling and much more. YOU NEED THIS TO HAVE THE SCIENTIFIC HUMILITY (and why you need that humility) TO DO GOOD TESTING. - kinofrost (Chris Simms) Understand that we form inferences based on our observations and that models sit between the two. You will know when to broaden or narrow your observations, how to branch and backtrack, when to simplify or complicate your tests, when to be exacting and when to be chaotic. This will form a solid basis of exploratory testing. Exploratory testing is the most basic building block of all testing, from where you can learn tools and “automation” and so on. YOU NEED THIS TO BE ABLE TO EXPLORE A PRODUCT EFFECTIVELY. - kinofrost (Chris Simms) Don’t let go of your Exploratory Testing Skills. - ayaa.akl (Aya)

Communication

Be a storyteller. Practice explaining technical systems to people who have no idea about it. - dnlknott (Daniel Knott) Never let anyone say ‘You don’t need to know’ or ‘It’s too technical for you’. - kimberley (Kim) Communication is the must have core skill for a tester. Writing and speaking are great ways to learn more about this skill. Writing is involved in everything testers do, daily. From exploratory testing, to automation, to documentation, having developed writing and speaking skills paves the way for so much of the day-to-day interactions with other technologists. Get feedback. Write often. Learn about your audience. Mentor others on the skills of writing and speaking. Your career will thank you for it. - melthetester (Melissa Eaden) Train your communication skills: train to listen, to ask constructive questions, train to discuss and argue in a positive manner. - Janet Albrecht-Zölch

Learning

Be an active reader of blogs and books. - dnlknott (Daniel Knott) Take every “mistake” that happens as a good opportunity to learn. We aren’t machines, mistakes will happen, Lord knows I have made a good few, but as long as there is some good learning from it, what does it matter?! - ejaykay (Emma Keavney) Think about your (learning) goals

Why do you like to achieve this?

What do you need to achieve this goal?

Who can help you and how?

Find someone to help you reflect on your goals and achievements.

Failing is totally ok - just reflect and try again - verageba (Vera) Get involved with having a Testing Community of Practice at your workplace.

They’re a great way for testers to share what they do, how they do it, and why they do it, letting experiences be shared between one another. Got a shiny new tool others might be interested in? Share it in the CoP! Been to a conference cough TestBash cough and want to talk about what the presentations? Share it in the CoP!

Unsure how to test X? Ask about it in the CoP! There's a great video about them, and their benefits, by Emily Webber - nufenix (Lee Marshall) Do a recap of your work at the end of the project - put everything on paper and look at what you did well and what you could have done better. Each new project brings unique new challenges that provide useful new knowledge that may expose flaws in your testing process, and thus help further improve it. Also, if possible, ask other team members for their feedback about your work. They have different perspective and will likely have different experience from which you can learn something as well. - milos (Miloš) Share your knowledge with others - it’s great to absorb all of this information, and you may feel like you don’t have anything to contribute since there are so many people already contributing. That’s not true! Everyone’s experiences are unique and we all have stuff to learn. Even after 11 years in testing, I learn something new from newer folks every day! - g33klady (Hilary Weaver) Never stop learning. At the end of every day I ask myself the question: “what have I learned today?” No matter how small, every day there is something you’ve come across that you didn’t know the day before. All these little (and big things for that matter) “learnings” will make you a better tester. - pmichielsen (Peet) Push yourself out of your comfort zone every now and then - it’s the only way you’ll truly grow - screamingjoypad (Mike) Be a continuous learner. There are lots of meetups, events, blogs, forums (The Club !), videos (The Dojo / YouTube) for us to keep learning and also giving back to help build the awesome testing community. - vivrichards (Viv Richards) Be willing to learn. Adapt. Listen. - Ken Riley Learn and practice your craft: read books, blogs, magazines; attend trainings, courses, conferences; talk with colleagues, join tester’s networks and so on. - Janet Albrecht-Zölch Reflect your activities, your results, your role, your skills, your behavior. - Janet Albrecht-Zölch Attend conferences and meetups. Even when you’re socially anxious (like me) it’s invaluable to your career to network! A great way to attend for free is to speak! Another amazing boost to your career - g33klady (Hilary Weaver)

Automation

In automation, always look for the lowest possible level of checking. “End-to-end to rule them all” strategy is doomed to create slow and difficult to maintain suites that don’t provide precise feedback. - joaofarias (João Farias) Test in the middle! The APIs between the frontend and backend are doing a LOT of stuff, often surfaced by the UI but not always. Learn about and use the APIs, and test them of course! But really using them will find issues, too - g33klady (Hilary Weaver) If there is a need to write test automation, use the same stack as the application under test. - powercoder (John Dorlus) Test automation is a software development project in and of itself. It takes a considerable amount of time and skill to do it successfully. If you treat it as a side task that people only contribute to whenever they have time, IT WILL FAIL! - techgirl1908 (Angie Jones) Dive into the code review process. - powercoder (John Dorlus) Add coverage to the API testing suite. (Often neglected or just has happy path cases) - powercoder (John Dorlus)

Personal Development

Stop, breath and step away. That thing can wait until you’re ready to come back with a fresh head. Give your mind regular breaks. - simon_tomes (Simon Tomes) Close the knowledge gap for things you need for your job. - dnlknott (Daniel Knott) Don’t get overwhelmed! Don’t be afraid to specialize in a particular area. There are SO MANY facets to testing, that it can feel terrifying sometimes with so many things to learn. Focus on one area. Bored of that area? Look for something else! There’s way too much variety to be a bored tester! - g33klady (Hilary Weaver) Focus - dnlknott (Daniel Knott) Be kind to yourself, you have this job because you can do this job. You got this. - screamingjoypad (Mike) Apply the same rigor to your mental and physical health that you do to your professional life. There are so many career paths you can take. Don’t listen to people who say you have to code or coach, or anything else. Listen actively to others and yourself. Don’t beat yourself up too much, no one’s perfect. Use your words, but think before you speak. - gemma.hil1987 (Gem Hill) Keep learning skills you’re interested in and not what people tell you is important - but do it sustainably. Listen to yourself. Quite often it’s more valuable to have nights relaxing rather than continually pushing yourself to learn new skills. - Ali Hill and Gem Hill Try to enjoy what you do. I love what I do and therefore never think its work, but I am a wee bit weird…lol - ejaykay (Emma Keavney) Testing is one of the most unbounded roles in Tech. You can explore in any direction that appeals to you and is useful in your role and your skills will be relevant. For me over the last 13 years its included:

Product Knowledge. Domain Knowledge. Data Setup. Environment Management. Test Techniques. Testing Types. Testing Levels. Test Strategy. Build Management.

Version Control. E2E System Knowledge. Development Methodologies. Analysis.

Estimation. Coaching. Mentoring. Training. Collaboration. Tools. Programming Languages. Automation. Devops. Metrics. Release Management. People Management. Troubleshooting. And so many more that will be specific to your role. Dive into the areas you enjoy. - a_miller(Alaine Miller) Focus - dnlknott (Daniel Knott) Physical and mental health are key to effectiveness - whether it’s just going for a brisk walk at lunchtime to stretch your legs. Mental health issues can go unseen and ignored for ages - my advice is don’t. Seek help if you feel able, from anyone. A colleague, a friend, a healthcare professional. - Daniel Billing Empathy - for yourself, others, customers, clients and colleagues. Without that, we are unable to see beyond the technical issues, and not see the human problems with the work we do. - Daniel Billing Embrace your inner grump, and trust your gut.

If it looks like s@*t, smells like s%!t, it probably is 💩.

Don’t be afraid to call stuff out and trust your feelings. - Del Dewar

Author Bio:

Rosie Sherry is Founder of Ministry of Testing. When she's not with running recklessly, with her husband or with one of her five unschooling children she is helping build up the community of Ministry of Testing.