Key Software Testing Best Practices from 2016Cigniti Technologies
Listen on the go!
As experts say, ‘the best (Software Testing) tools are the ones everyone uses, not always the ‘industry’ best’.
The year 2016 has witnessed a lot of experimentation around technology and its adoption via various approaches. These approaches have been tried and tested across projects and community platforms to devise best practices.
Best practice is a technique or methodology acquired with experience and research that has incurred some reliable and effective results for a particular objective.
With variations in consumer demands and usage patterns, there is a massive requirement for various forms and approaches towards testing and assuring that quality is ultimately delivered. Agile and DevOps are coming up as an everyday approach for testers as well as developers. Today enterprises are more inclined towards Open Source as against Propriety tools.
2016 has been a year of budding start-ups across the globe. These start-ups come with their own challenges and growth margins. Its growth is phased out across various stages, for e.g., first funding, second funding, third funding, etc. Thus, there is a tight watch on the budgets, but there is a serious need for quality to achieve desired performance in the marketplace.
The need for testing and the relevance of testing has been defined and redefined to suit not just various functions, but also various industries and business models. For instance, choice of a testing tool is absolutely critical and while working in a lean team you would preferably use a tool that everyone knows, rather than a new tool that will consume training budgets.
Let’s look at some key software testing best practices or patterns that 2016 has taught us. Rather let’s rephrase, thanks to the challenges and innovations of 2016, development teams/testing teams/businesses have been tutored into building some great best practices for infusing efficiency in the SDLC process.
These best practices also suggest in all possible ways that testing has taken a front seat in the development cycle, where the concept of Continuous Testing and Continuous Integration are becoming essential for building resilience for the digital marketplace.
Moreover, these best practices will help make the workload manageable and ensure that the software/applications released hold highest standards of quality and continue to be viable for the marketplace.
- Break free from the QA role
While testing and QA remains the main function and core objective, every testing team must look at the bigger picture. They must hear from the client and know the overall expectations from the software/application. With the new approach, testing and QA starts way ahead in the overall development cycle.
This widens the scope of testing, where testing should get involved in design discussions, offer inputs to customers, and share experiences that will add value. Extensive code testing knowledge and experience further helps identify design flaws during the coding process. It helps reduce development cycles and effectively meet customer expectations.
- Decide on the Release criteria
It is not possible to test everything in an enterprise product and for every release. Hence, it is important to define the objective and components for each release. Focus can be on particular factors and updating the code accordingly.
So, before a new release, the team can discuss with all the stakeholders to understand the parts of the product that need to be touched/updated. This information can be used to prioritize the overall testing efforts. Ultimately, the focus can be on the parts of the code and using existing automation tests to handle the rest of the testing.
For instance, if you are confident that something worked in the earlier release and you are not focusing on it this time, then it’s best to not waste time on it. The focus here has to be on the new code that is being added.
- Prioritize the fixing of bugs
Bug fixing is a critical aspect in the new release, but how do you prioritize it? The best way is to prioritize by usage. For instance, Google Analytics can be used to check the high traffic area on the website/application. If an area of the website is rarely visited, testing can be done for it at a later stage and vice versa.
There are dual objectives to meet during a release: to ensure that bugs are fixed, and that the release is made on time. So, it is recommended to get the bugs fixed where there is high traffic, as you don’t want your users to find bugs.
- Dual approach to Test Automation
A two-tier approach should be considered for the very reason that it will enable continuous testing and continuous integration. What does a dual approach towards Test Automation entail?
During the Tier one, every Commit to the code base will help provide rapid validation for the changes done by the developer. It comprises sanity tests that would complete within several minutes. With Tier two, exhaustive regression tests can run automatically in the night, facilitating more time to test the changes.
The art is to plan the intensity of tier one and tier two tests, but striking a balance can help speed up the process and rationalize the efforts.
- Stay connected with the context
The scenario where the QA team goes to the development team with a defect, what the developer has to say is classic. The developer says, ‘It works for me on my system’. How do you kill such instances?
The best solution is to simulate similar environments and components while testing. This boosts scalability and accessibility in the testing cycle. Building a staging environment helps in emulating the customer production environments.
The idea is to test in similar scenarios that users may experience, and make the software/application resilient for the marketplace.
- Shift-left for better visibility
Shift-left is an inventive and practical approach, thanks to the paradigm shifts happening in the digital landscape and the growing competition. Testing is no more an activity that is planned towards the end of the development cycle.
Shift-left suggests that testing should start way ahead in the development cycle and make it a continuous process. This helps save time, cut down testing efforts, and bring software/apps faster to the market.
- Build a dedicated Security Testing team
Security Testing has to be done prior to every release. This data is stored on SaaS, which can be vulnerable to various security issues. These vulnerabilities tend to get discovered by users and can drive away potential users.
In a scenario like this one, it is recommended to perform Penetration testing on stable versions of the to-be-released software. A dedicated team to perform this can save time and ensure quality release. These team members can be given required training and they can build specialization for this activity.
This can be projected as a separate value proposition for the client. Security testing is maturing as a process and gaining the much-needed attention from the industry. Building a dedicated team can be a value proposition for the client.
- Build a dedicated Performance Testing team
A focused and dedicated performance testing team can run tests once a product is stable and suggest new features to assess the performance risks with the application. Regression tests can be done on features that have no impact on the performance.
It is important to constantly update the security and performance teams with all required information and build an environment close to the production. With the challenging market and digital landscape, it is important to ensure that performance and load is tested on the application/software. This is critical to make your applications market-ready.
- Regression cycle in the final phase
Regression cycle in the final phase of product stabilization is like giving a green signal to the production. There is a small fragment of change that happens at this stage and it is the right phase when you get to validate the entire application.
The regression cycle can work on traffic light mode – Green light for passing all tests, Yellow light for all tests passed, but just a few (one or two) remaining, Red light to stop and take a review of the entire application.
- Create test accounts in production
In order to bring practicality to the project prior to the release and ensure compatibility, you can create test accounts and review the overall functioning like a user. This can be done with customer data that is available with you.
Post the testing, you can check and confirm that no data was harmed. If any bug is found, it can be resolved on priority. Compatibility testing is a way out and there could be automation involved to avoid any manual errors. This is specifically critical in the last phase of the development cycle.
- Post-release sanity tests
These sanity tests are critical to validate that everything is operational and no third-party systems are meddling with the functioning of the system. This can be done by using your existing production account, or a new account.
Testing version compatibility, browser compatibility, device compatibility are some important aspects to consider in the post-release sanity checks.
- Choose the fastest, when in rush!
Digital Transformation is changing the dynamics of software testing. There is a need to combine processes and bring changes in approaches. However, when it comes to meeting deadlines and giving results in a shorter span, it makes sense to stick by the conventions and deliver within timelines.
What is the essence of this practice? In a competitive marketplace, it is important to reach out on time and resolve issues in real time. So, the best practice sometimes is to deliver faster than to deliver smarter.
For instance, if a bug has to be found and resolved, it makes sense to dedicate all the efforts towards that, focus on the apparent defects, focus on independent tasks. The goal is to finish the task and focus energies on the goal rather than innovating methodologies.
So sometimes it is required to switch from what you do best to what you do the fastest!
- Take 3 hours for a task, avoid squeezing it into an hour
This point is a bit contrary to the point mentioned above. Robust Quality Assurance/Testing is needed to ensure sustainability in the market. So, rushing with critical applications like Financial Apps is being ignorant of the fact that it will just fire back with issues to cope up with.
A time slot has to be mutually decided to make results achievable. Working by objectives is important, but squeezing those within unreasonable fragments of time is imprudent. So, it is the best approach/practice that testing teams should consider for efficient delivery.
The focus throughout has to be on the finishing line!
The analysts forecast that the global outsourced software testing market will grow at a CAGR of 10.8% during the period 2016-2020. The revenue is expected from various outsourced software testing services such as unit testing, integration testing, end-to-end functionality testing, usability testing, system testing, performance testing, and load and stress testing.
It’s a big playground, so building these best practices can be life changing.
Cigniti’s Advisory and Transformation Services help organizations understand and improve all QA focus areas – people, tools, and infrastructure across the delivery lifecycle. We enable clients to understand their QA maturity and identify gaps in their processes & practices. Connect with us to embark on a QA transformation journey and build a future-oriented testing strategy.