qa best practices v1.png

Introduction

Is your current testing process allowing you to catch every bug before each new release?

Do you feel that testing is slowing you down?

These best QA practices are going to change the way you incorporate testing into your development process. Let’s take a closer look at agile methodology to help you improve speed, scale, and coverage. 

 

Introduction

Is your current testing process allowing you to catch every bug before each new release?

Do you feel that testing is slowing you down?

The following best QA practices will change the way you incorporate testing into your development process. Let’s take a closer look at strategies like automation, crowdsourcing, and the agile methodology to help you improve speed, scale, and coverage.

QA Testing in numbers

$1.7 Trillion

Estimated worldwide losses from software fails in 2017

45%

Of DevOps practitioners deploy on demand, therefore requiring constant testing.

$200,000

Bug bounty paid by Apple for finding a firmware security bug.

Combining test automation and manual testing

Your quality assurance (QA) testing methodology should ideally combine automated tests and manual testing. The key is to determine which type of test is most relevant for each aspect and stage of the product.

Manual testing allows you to cover a wide range of conditions and scenarios. The feedback of the testers regarding the experience and feel of the app will prove invaluable. Manual tests are preferable for exploratory testing, usability testing and ad hoc testing. Ideally, manual tests should be performed by highly skilled and experienced testers who represent different user profiles and use a wide range of devices and operating systems.

To save time whilst testing, manual testing can be supplemented with frequent automated tests. Automation is the most appropriate solution when performing regression tests, load tests and other performance-related tests.

Any test that needs to be performed repeatedly should be automated. Automated tests are practical and reliable and will help you to make sure the app performs adequately from a technical standpoint.

Automation won’t be a good fit for all your testing needs. You can supplement the manual testing performed in-house with crowdsourcing. With this approach, your product can be tested on a much larger scale in a time-efficient manner.

Incorporating agile methodologies

Adopting a methodology that incorporates testing into a series of short development cycles is another best QA practice worth considering.

Agile methodologies make sense in the context of developing mobile apps, given that these products typically have short development cycles and mobile users have extremely high expectations regarding quality and frequent updates.

Blog_Header_re-create_agile_loop

With agile methodologies, QA testing is part of the design and development processes, rather than being a separate phase. Test results are directly incorporated into the design and development processes, and quality becomes a guiding principle.

This is a collaborative approach that requires designers, developers, testers and sometimes even users to communicate or work together. In order to facilitate collaboration, you can use a single repository for the app code. 

Your teams will go through a short design or development cycle, followed by a targeted testing phase for the new feature that was just added - with additional regression testing as needed. The outcome of the testing phase will determine what happens during the next design or development cycle.

 

Leveraging automation will keep things moving once you adopt this approach. Test automation speeds up the targeted testing phases and helps you to move onto the next development cycle in a matter of hours or days. You will need to schedule manual tests after some key design or development cycles to incorporate feedback regarding the user experience and other key aspects of the app.

You will need to create a framework for reviewing and using the data generated during the short testing phases. Incorporate feedback into the design and development process as early as possible – even at the point where you're mocking up wireframes for the app. 

 

 

Writing good test cases

Should developers write tests? On one hand, the agile approach is about ownership. Involving developers in the test case writing process will make QA one of their responsibilities.

On the other hand, developers who create tests might become biased and write code that will pass the test without meeting other quality standards, or unconsciously create a test with limited coverage.

Even though each test case should have a narrow focus, there should be cohesion in your test case suite. Your test case suite should have a scope that is adapted to the scale of your project.

Customise and execute test cases in an environment that is different to the one used for development. Each test should be based on clear expectations and result in a measurable outcome.

Break down each test case into a series of concise steps. Taking these steps will tell you whether or not a feature works. You can think of writing a test case as a series of actions associated with a question. When an action is taken, the automated test or human testers should answer a simple question to measure the success of the action.

The instructions written for each test case should give testers a clear understanding of what they are expected to do. You can save time and get better results by providing test cases and instructions that aren’t liable to misinterpretation.

 

 

Continuous integration and continuous delivery

Continuous integration (CI) and continuous delivery (CD) are strategies that complement the agile methodology. You can incorporate a continuous testing strategy to CI and CD.

CICD graphic

 

Without CI and CD, developers split up their work and assemble different segments of the code late in the development cycle. This often results in a lack of cohesion, redundancy, and issues with how the different segments of the code interact.

With continuous integration, the code is kept in a central repository. Developers work on making small changes to the code and upload small sections of code to the central repository regularly. You can incorporate QA into this methodology by having a series of tests performed every time the code is updated.The new segments need to be tested, but you should also conduct regression testing to see how changes affect the main features of the product.

Continuous delivery allows you to release new iterations of your product on a regular basis. This is a quick and efficient approach to addressing bugs and issues that affect the user experience.

The key is to incorporate user feedback into your CI and CD processes, so that issues can be quickly addressed and a new and improved version of your product can be released.

Again, you will have to incorporate testing in your process, for instance by having crowdsourced testers perform some usability tests before a new major version of your product is made available to users.

 

 

Developing your own QA testing strategies

The right QA testing methodology will provide the information needed by your design and development teams to produce a quality app. Remember that quality doesn't depend on testing, but on the outcome of your QA tests and how you use this data.

Your approach to QA testing needs to be adapted to the product you are developing. Here are some key points to keep in mind when developing your own QA best practices:

  • Test one thing at a time: tests should have clear objectives. Each test should focus on a feature or look at things like user interface or security. 
  • Use regression tests: testing a main feature once isn’t enough. New additions to the code repository can interfere with features that previously passed tests.
  • Report and track bugs: determine how bugs will be reported and what kind of data is needed. Choose a bug tracking tool adapted to your workflow and determine which QA metrics will be tracked.
  • Leverage analytics: keep records of every test conducted and use this data to determine where bugs are likely to occur. This data will help you to develop new tests that address problem areas.
  • Choose the right environment for tests: try covering a wide range of scenarios, including different devices, OS and user profiles.
  • Use unit and integration tests: unit tests will isolate each component of your app, while integration tests will assess how well each subsystem works. Run unit tests in parallel to save time, but don't move onto integration tests until you have ensured that individual components work like they should.
  • Don’t neglect the UI: use functional tests performed by human testers to perform end-to-end scenarios and get a feel for the UI of the app. It might be best to wait until you have fixed issues detected during unit and integration tests.

 

 

Achieving high quality and speed

High quality and speed should be key objectives when developing your QA testing process. Keep in mind that this is a process you will have to regularly review for efficiency and improve as you move through the different cycles of your project.

You can achieve high quality by creating a framework and best practices for writing and implementing tests.

The code used for automated tests should be tested, and the written tests sent to human testers should be carefully reviewed. Make it easy for everyone involved with your project to report bugs and share feedback.

You also need to focus on efficiency. Using an off-the-shelf bug tracker like Jira is the best way to keep track of quality issues and to make sure they are addressed in a satisfactory and timely manner.

Maintaining a list of clear quality objectives is crucial for achieving speed and high quality. Align your quality objectives with users’ expectations and use these objectives when writing test cases.

Working with a clear set of quality objectives will help developers, testers, and designers to get a better understanding of what is expected of them and foster an environment where everyone owns quality.

Crowdsourced Testing

Crowdsourcing is another element of the QA puzzle. This approach helps you to save a considerable amount of time and will unlock new possibilities if you have been limited in the depth and scope of your testing.

Crowdsourcing allows you to conduct tests on a much larger scale. You can have thousands of testers on a wide range of devices, operating systems, countries and networks cover different scenarios, find more bugs, and complete tests within a matter of hours.

Start by rethinking the way team members work, for instance by adopting the agile methodology or making CI and CD the core elements of your workflow.You should also combine different testing methods, including in-house testing, automated tests, and crowdsourced tests.

 

❝ These three testing methods will help you to save time and cover a much wider scope.❞

 

The tests themselves should be improved, such as by narrowing the focus of each test and having a set of clear objectives.You can improve your QA testing process and achieve speed and high quality by adopting a few key strategies.

Lastly, your QA strategy should be unique to the product you are developing and should be aligned with the scope of the project, your definition of quality and users’ expectations.

create-a-crowd-group-of-people-using-the-attached-individual-people02-cropped

Download our Facebook Case Study & find out how we tested 5,000 Facebook apps in 4 weeks

Schedule a Demo