In this episode Matthew and Federico sit to talk about some of the changes that are happening in the ASP.NET QA team. We have talked about the evolution of our team, and today we go over the idea of dividing the test team into functional disciplines and how it has worked so far.

News

Organization of the QA team

  • What was the problem that we identified?
    • Lack of specialization.
    • Lack of resources to deal with test debt.
    • Lack of resources to improve our efficacy.
    • 100% of tester's time was dictated by a feature crew.
  • The 3 pillars of the team
    • Product Presence - test presence during product design and prototypes.
    • Product Development - core testing of new features as they are incorporated into the product.
    • Engineering Services - automation strategy, tools/infrastructure and regression testing.
  • Work flow of a feature crew
    • As a new feature is designed PP is engaged during early prototypes, verifying scenarios with customer expectations, first exploratory sessions.
    • When the feature is mature enough, PP hands of testing to PD group. These group of testers are normally assigned to cross discipline feature crews and perform the bulk of exploratory testing and any other test activities.
    • As the feature stabilized, ES comes in to help automate regression tests, making sure tests are robust and maintainable. At the end this group continues to run regression tests of the whole product.
  • Take away
    • Still an experimental model.
    • So far the gains seem to indicate that the overall capacity of the team is increased.
    • A potential next step is to recognize the value of "on-demand" testing and "constant" testing, and to focus a group of testers on each.

 

Direct download: CodingQAEpisode33.mp3
Category: podcasts -- posted at: 1:35 PM
Comments[0]

In this episode Matthew and Federico again take from there experience of working on the MVC project and this time talk about last minute changes.

  • Why last minute changes happen?
    • High priority bug found late in the cycle.
    • Design change from customer feedback.
    • Stake holders disagree with a design decision.
  • How to tackle it?
    • Extend the date
    • Cut corners
    • Cut features
    • More resources
    • Be creative with the resources you have.
  • How to prevent them?
    • Build buffer into your planning.
    • Reach out to as many people as you can early and often.
    • Figure out the requirements and processes of your dependencies.
    • Build trust within your team.

 

 

Direct download: CodingQAEpisode32.mp3
Category: podcasts -- posted at: 3:29 AM
Comments[0]

In this episode Federico and Matthew narrate their experience of how having unclear expectations can lead down a path that can eventually create a culture of treating QA as a burden. It is a series of event that we call the vicious cycle of QA. Federico has been on the team for almost eight years and today shares his observations of how the team got itself into an undesired place, what were the symptoms, and what our decisions created. Look for a future podcast to learn what actions we took to break this cycle and move forward.

News

Vicious cycle of QA

  • In a nutshell: unclear expectations leads to blame which leads to more process which leads to bottle necks which leads to more unmet expectations.
  • Step 1: Unclear expectations
    • QA, PM and Dev do not have a clear understanding of what is the role of the testers. What can they expect from them, and more importantly, what are the limits of their responsibility.
    • Having unclear expectations means that every person on the team has a different idea of what are testers supposed to do. Even higher level managers.
  • Step 2: Fail and get blamed
    • Without having clear conditions of success, what may turn out is that each miss is considered a failure.
    • Since the responsibility is not clearly defined, it is easy to have the QA team be the focus of blame.
  • Step 3: Cover your back with processes.
    • The QA team may turn to create processes as a means to cover their backs and transfer responsibility to the rest of the team.
    • Many processes are created that gives security that as long as they are followed, the QA team can shield behind them.
  • Step 4: Push back when process doesn't fit the plan.
    • With so many processes and checklist across the board, the QA team may become the bottle neck of the development cycle.
    • Since processes have to be guarded, QA team starts to push back on new features due to lack of time to properly do testing.
    • Turf wars may begin between the several disciplines.
  • Repeat:
    • Push and pull eventually settles into a set of constraints that QA is unable to meet given the high cost of test process.
    • More unmet expectations ensue.
  • Culture of QA as a burden
    • Since the processes where created to cover ones back instead of doing smarter testing, the perceived value of QA is still low.
    • Eventually the perception and reputation of the QA team is that of a high cost and low value.
  • How do we break out of this cycle? How do we turn around the team and perception? This and more questions will be addressed in a future podcast

 

Direct download: CodingQAEpisode31.mp3
Category: podcasts -- posted at: 4:35 PM
Comments[1]

In the Episode Matthew sets down with Drew Miller, a fellow tester, and they talk about the Pair testing and how they are implementing in on the QA team.

    News

    Introduction to Drew Miller

    • Drew’s work history
    • Fun facts about Drew’s interests

    Pair Programming/Testing

    • What is this pairing thing?
    • How Pair Programming fits into our team’s methodologies
    • Justifying the cost of pair programming
    • Possible Issues when your new to pairing
    • Creating a pairing environment to help
    • Is pairing the end all of coding styles?

     

    Direct download: CodingQAEpisode30.mp3
    Category: podcasts -- posted at: 1:17 AM
    Comments[0]

    In this episode, Matthew and Federico talk about how easy it is for testers to spend time in activities other than actual testing. They share their experience of being aware of the time spent not testing and how important is to keep a balance.

    News

    Managing your test time

    • What is test time?
      • Time spent designing tests
      • Time spent executing tests
      • Time spent evaluating results
      • Time spent investigating bugs
    • Other activities that take time away from testing
      • Meetings. Like sync-ups, status reporting, planning, training, triage, etc.
      • E-Mail.
      • Building relationships.
      • Hardware and software issues.
    • A day in the life of a tester. Matt's and Federico's day.
    • Some realizations
      • Building sofware is a social activity, mantaining relationships is very important.
      • There are many support activities that are crucial for the success of the project.
      • The importance is to make sure that you still have enough time to sit and test.
      • Try to balance test time and non-test time and make sure that you are happy with the ratio.
      • One easy way to increase your test results is to identify non-test time and to try to minimize it.
    • How much percentage of time are you dedicating to actual testing?
    • What do you think of managers that move away from actual testing?

       

      Direct download: CodingQAEpisode29.mp3
      Category: podcasts -- posted at: 3:09 AM
      Comments[1]

      In this episode Matthew and Federico sit down with James Bach to talk about everything to do with testing. James ideas were very influential in shaping the test methodologies that our team practices, especially around the use of exploratory testing, and he shares his views and passion about becoming a test ninja with us.

      • How did James got started in the test discipline?
      • Exploratory testing
        • Exploratory testing as an approach instead of a technique.
        • Some of the misconceptions about exploratory testing.
        • Difference between exploratory testing and ad-hoc
        • Teach exploratory testing by creating a test culture around developing mental skills
        • How to know when testing is done?
        • How to evaluate good exploratory testing notes.
        • Using a screen recorder as a supplement to note taking.
      • Scripted tests
        • Strengths and weaknesses of scripted tests.
        • Automation as simple product checks.
      • Testing as a profession
        • How to get really good at testing?
        • Study and define the test activities until they are clear and no longer intuition.
        • Example: how to know if something is a bug
      • Management
        • Work to get rid of bureaucracy that stands in the way of the tester.
        • Good leads will sit with testers to guide and evaluate them.
        • Use sessions as a way to manage a team of exploratory testers.
      • Challenges of testing in Microsoft.

      Links and Plugs

      Direct download: CodingQAEpisode28.mp3
      Category: podcasts -- posted at: 1:59 AM
      Comments[0]

      In this episode Matthew and Federico sit with fellow team member Brad Wilson to talk about Unit Testing. Brad is a developer in the ASP.NET team, he has a lot of experience developing using Test Driven Development and is one of the creators of the xUnit testing framework.

      • What is Unit Testing?
      • What is the difference between Unit Testing and Test Driven Development (TDD)?
      • Unit Testing in practice
        • How does the MVC team uses unit testing?
        • How do you arrange your tests?
        • How do you name your tests?
        • What about using internal to be able to test something?
        • What if I inherited code that didn't had unit tests?
        • How can I convince my team to adopt unit tests as a development practice
      • Addressing common concerns about Unit Testing
        • It feels like a lot of work for little value.
        • Having to rewrite a lot of tests if something in the design changes is a pain.
        • Code ends up being a lot of very small methods and I don’t like that.
      • Common pitfalls
        • Writing very big tests.
        • Testing to internal implementation.
      • Mocking
        • What does mocking mean and why is it useful?
        • What is your favorite mocking framework?
      • Resources

        Direct download: CodingQAEpisode27.mp3
        Category: podcasts -- posted at: 3:56 AM
        Comments[2]

        In this episode Federico and Matthew talk about how to apply a concept from lean manufacturing to rethink the processes of software development. Taking the real example of a “Regression Run” they discuss how to dissect the process to identify waste that the team can then drive to eliminate.

        News

        The process of a regression run and the waste associated with it

        • For our team, a regression run is the automated execution of tests that where written for features released in previous releases.
        • For every process, the question to answer is “what does the customer wants for this process”?
        • If we think of a regression run as a process, we can define that what the customer wants from it is to be able to install a new version of the product and have his/her applications continue to work as before.
        • The goal of a regression run is then to find breaking changes for the customer.
        • Waste is any activity that does not add value to the outcome of the process. In the context of a regression run it could be any activity that did not identify a breaking change for the customer.
        • Types of waste
          • Waiting. Time spent waiting for results, for a tool or for fixes.
          • Unnecessary analysis. Analyzing a failed test that was not caused by a breaking change.
          • Over analysis. Analyzing a test that ensures higher quality than necessary.
          • Time of analysis. Time spent between receiving a result and identifying the breaking change.
          • Unused creativity. Creativity of the people that could be used to improve the process.

        Instead of thinking about identifying and enhancing the value-add activities, you could work on identifying and eliminating the non-value-add activities.

        Direct download: CodingQAEpisode26.mp3
        Category: podcasts -- posted at: 1:51 AM
        Comments[0]

        On this episode Matthew and Federico talk about how our team partitions the test bed by using priorities. They discuss why having an incremental automation test bed is important and how having a standarized meaning for priorities can help.

        News:

        Test case priorities

        • Grouping tests by a common priority bar is useful when dealing with a big test bed.
        • Pri 0
          • A small number of positive tests under one configuration.
          • Constitute 10-20% of a feature's tests.
          • Regression amounts to a ship stopper.
        • Pri 1
          • Coverage for 80% of the use cases of a feature under multiple configuration.
          • Constitue 80% of a feature's tests.
        • Pri 2
          • Edge or low impact scenarios.
          • Constitute 10-20% of a feature's tests.
        • Why do we need pri 0 functional tests if we already have unit tests?
        • Your guidelines are ambiguous, how do you apply them?

        Direct download: CodingQAEpisode25.mp3
        Category: podcasts -- posted at: 11:08 PM
        Comments[0]

        In this episode Federico and Matthew share some of their personal anecdotes regarding process overhead. By examining concrete examples, they discuss pitfalls and how to remove unnecessary processes.

        News:

        Process Overhead

        • The process of keeping internal specs and documentation up to date.
        • The process of triaging bug defects for a large project.
        • The process of checking code into the repository.
        • The process of maintaining a detailed scheduled of work.
        • Processes that provide value to the business vs. process that provide value to a person.
        • Reinvent a process vs. just throw it away.

        Direct download: CodingQAEpisode24.mp3
        Category: podcasts -- posted at: 2:01 AM
        Comments[0]