Q & A with James Bach

I had the pleasure of speaking with  James Bach when he visited Vietnam last summer. He is a father and a teacher who enlightens people about metacognition in software testing. His knowledge covers many areas of software testing, from context-driven testing, heuristics and tester careers, to the secret life of testers. If you have an opportunity to learn from him, you will absolutely agree with me on how talented he is.

  1.     How do you ensure the  quality of a Co-located Agile Project?

James: You are going to need a lot of planned communication, because communication will not happen naturally when people are far away. I suggest daily conference calls. Distributed projects take strong leadership to get people to come together. I also suggest that key people should periodically visit each other, instead of relying only on electronic communication.

(“Co-located Agile project means Agile team members are located in different locations or multiple agile teams are working on different parts of the product from different locations.”)

We all know that in an Agile environment, high speed and high quality are the priority. People tend to work without taking a break, but since quality is measured based on the project and  team characteristics, the human factor is key in ensuring project quality. This means that effective communication and sharp minds could influence the success of the project.  James’s opinion brought about some ideas about enhanced communication in co-located Agile projects.

First, effective communication is determined by the language, product, tool/technology, and process knowledge of the team, which all have to be synced. In order to communicate effectively across distance and time zones, distributed teams need to speak the same “language”. Language not only refers to speaking terms such as English, German, or French, but also to product terms and tool/technology features or processes, which each team will have to be at a similar level of understanding in order to speak and understand each other.

In order to synchronize, extra steps need to be taken. Teams need to ask concise and valid questions in order to clarify requirements or requests and to review the outputs before it is released. The equality of knowledge between each distributed team should allow them to make decisions on internal matters, implementing the ‘self-management principle’. One team should not have tell other teams what and/or how to complete a task.

Secondly, applying suitable communication tools and methods also played an important role in the success of team communication. There are plenty of options to choose from such as direct communication (Face-to-face or Video calls) or indirect formats (Email, Forum, or Text chat). There are other popular and useful communication tools to consider, including: Skype, Slack, Confluence, GoToMeeting, or Google Drive, which easily support communication and collaboration between onshore and offshore teams. Those methods and apps can help eliminate the distance in time zone and location.

Additionally, for better communication effectiveness, scope of work needs to be reasonably arranged to fully support clients properly and provide a smooth connection. It is advised to schedule regular onshore/offshore visits to build relationships with team members and instantly respond to release, milestone, or technology changes.

  1. How would you define testable code? What are your criteria?

James: All code is testable. Some code is more testable than others.  Testability in code just means how easily you can test it. Code is more testable when it is observable and controllable. Ask for function-level logging and scriptable interfaces. Also, code is more testable when it is simple and when it is decomposable. Decomposability is the ability to separate the components and test them in relative isolation.

To specify, there are many simple ways to define testable code, such as: code logic, code naming conventions,  and project structure/architecture. Testable code always includes the ability of extension, easy maintenance, re-usability, and upgradability. Burak Guzel of EnvatoTuts lists 15 best practices for writing readable code.  

  1.     What type of skills does a tester need to move into the DEVOPS world?

James: I don’t know that much about the DEVOPS world. But that world doesn’t welcome testers. It welcomes developers. So the first required skill is programming. Then you have to look for the tools to support your testing work.

There are some tactics that testers need to pick up in order to move into DEVOPS:

  • Live site testing: Testers have to test the product in production, after it is released.
  • Collect and analyze feedback from users in the field. React quickly to any emerging concerns among the users.
  • Advocate for testability. It’s critical that the product be built with testing in mind.

James makes valid points.  Testers need to improve the ability to understand coding, scripting, build-production, tools, and operation systems such as Linux and Windows.

  1. How do you decide what type of information should be included in a final report to the client? What type of information is useful and what is not?

James: There is no perfect report.  There is only the report that gives values to clients.

Here is some advice:

  • Build credibility (by being credible).
  • Know the context of your tests (test framing).
  • Never use a number that is out of context (e.g. no test case counts).
  • Highlight general test activities (put test in the right context).
  • Highlight product risk (put bugs in the right context).

We can build the final report with three levels:

+ Level 1: Facts and truth about bugs and observations

+ Level 2: How do you get those facts? How to test those facts?

+ Level 3: How do you know if the test is good? Why is the test good enough or not?

  1. How do you estimate the effort of testing in a project?

James: There is no magic spreadsheet that tells you how long testing will take, but good estimation starts with visualization. Can you picture the testing process in your mind? Many testers have trouble doing that. But if they are not clear what testing will look like and feel like, they also won’t have any idea how long it will take.

Along with that comes a list of other questions that with answers, could help  estimate the effort of testing in a project:

  • How much time is really needed for testing?
  • How long would it take to finish testing?
  • What is the least amount of time we could allocate to testing?
  • How much testing is needed to assure a high quality solution?
  • How many test cases will be needed?
  • How many testers are required?
  • What testing skills are required?
  • How much will testing cost?
  • Do we need to test them all?

We thank James for taking the time to answer our questions. His depth of knowledge and experience broadened our knowledge of testing and it was a great opportunity to learn from him.

Thank you very much James!

Just Starting As a Tester? Seven Key Skills to Perfect

There are many difficulties and challenges when beginning any career. However, the limitations and challenges depend on our mindset. To excel at anything, we must learn, research, practice, and never give up. Repeat, repeat, repeat. But what sets apart a good tester and a great tester? As you grow in your career, it is important to remember the following:

Looking for some seriously great testers to amp up your test strategy? Check out our testing services. 

SEND US A NOTE
 

1. Testing = Mission Critical

Eat, sleep, and breathe testing. The quality of a product is determined by the quality of its testing phase and can have disastrous outcomes if rushed or skipped. In critical fields such as air traffic control, the presence of bugs in a software application can cause irreparable losses. Testers must be aware that the quality of product is utmost importance, and be the advocate for the testing process.

2. Be Passionate

The key to success in any work is having true passion. Why is passion so important for testers? It gives you inspiration to find creative ways to overcome challenges in your work. That passion is what helps a sometimes repetitive process stay exciting, day after day.

3. Be a Team Player

Professional testers must be team players. They need to be able to work together with other members to gain the best quality for product, both within their own team and across departments. Teamwork also means sharing experiences and learning from other testers.

4. Communicate

Often, testers are responsible for communicating quality problems directly to an executive team, and must be able to speak in both technical and non-technical terms depending on the audience. As you interact with management, developers, and other project stakeholders, it helps to be clear and concise in your communication. As a company grows, you must also be able to communicate with other team members across the globe. Strong written and verbal skills are necessary to compete in today’s job market.

5. Adapt and Learn

Technology changes at a break-neck pace, making it imperative that testers can adapt to constantly changing requirements. A great tester learns new technologies quickly and applies them to projects to meet customer needs.

6. Understand Multiple Testing Methodologies

In testing, there are many methodologies and techniques including manual testing, automated testing, security testing, and performance testing. Every company and project might use a different methodology, so its critical that a great tester understands how to apply these techniques.

7. Analyze and Critique

Great analytical skills help break up a complicated system into smaller units to create corresponding test cases. A tester should be able to think outside of the box to see a bug differently or from a new perspective. Finally, they have to be highly critical to identify potential problem areas.

Remember, a successful tester never stops growing as our industry is constantly changing. Becoming a great tester takes time, but if you are willing to identify the areas you need to grow, and the skills you need to nurture, you will find yourself among the best.

GET IN TOUCH WITH KMS