In this post, Carlos Araujo, our LATAM Development Director and Technical Architect, reveals our QA tools and illustrates the importance of the processes we put into practice that increase the quality of technology.
At Verndale, we've been in the business long enough to have a well-established Quality Center of Excellence with dedicated quality assurance (QA) experts, plus partners and tools to help carry out our commitment to bringing quality deliverables. The tools we leverage are on our dime. We know the investment in quality assurance checkpoints means the end product will run smoothly, meet security and accessibility standards, prevent resource loss, protect your business reputation, and ensure end user satisfaction.
Beyond the tooling is "process." When implementing or polishing a step during development, it's crucial to consider and understand both sides and the need to have a robust process that enables development teams to excel in their work.
Identifying the right tools and processes for our needs can often be complex, but is necessary to generate the results we are committed to achieving during implementation. The Verndale Quality Center of Excellence builds upon five tried and true process areas (checkpoints) spanning the development lifecycle:
- Static code analysis
- Performance testing
- Automation testing
- Accessibility testing
- Test-case writing
1. Static Code Analysis for Speed and Depth
Developers are accustomed to a standard practice to review and ensure code quality, called pull requests (PR). Often, each developer will bring their own flavor to the task. And while our teams follow best practices for PRs, this standard practice has its gaps. Those gaps include critical aspects beyond code structure, architecture, and our best practices. And, if a developer were to go deeper, then the PR will take longer to be reviewed, resulting in a longer merge process. We're bringing speed and depth to our process to ensure the code meets quality standards through static code analysis. Initiating this process brings a set of rules and policies that are automatically reviewed before a build deploys or a PR is approved.
Static Code Analysis Tool
SonarCloud helps us reduce the amount of time spent on PRs and is a sibling of SonarQube. Its main difference is that it runs on the cloud, bringing additional benefits. This tool has thousands of automated static code analysis rules in more than 20 programming languages and integrates directly with multiple DevOps platforms, in our case with Microsoft Azure. Since the static code analysis processes are set up very early on during code development, every time a repository branch is merged back to its default branch during the PR, SonarCloud will play a role in the process. It'll analyze and generate valuable information for engineers to review. Typically, the Project Technical Architect will review the different metrics and concentrate their effort on the identified vulnerabilities and security hotspots.
3 Essential Reasons our Developers Utilize Static Code Analysis:
- Early Feedback: Level up our analysis early in the development phases before the software and functional testing starts or before production deployment
- Instantaneous Clean-Up: Modify while they're still coding – there's no need to wait for a tester or issue to appear before the team identifies an area for improvement
- Spot Vulnerabilities: Discover the exact locations in the code where we can make improvements for critical sections like security hotspots and code vulnerabilities
2. Non-Functional Testing for Load, Performance, and Stress
We believe that performance testing starts early and continues throughout the development process. This QA process is essential for measuring how an application performs under a given load to see the impact.
Performance Testing Tool
- Design and build tests
- Prepare test environment
- Run the tests
- Analyze the results
- Repeat cycle as many times as needed
One key aspect to consider is the following: If the real end user is going to work with your application in a way that differs from how you're testing, then you might as well have no testing at all. This is why designing the scripts involve gathering statistics from current analytics.
4 Benefits for Testing Your Application's Performance:
- Lower Maintenance Cost: Recognizes performance bottlenecks before production deployment, minimizing the cost of failure for organizations
- Improve Software Scalability: Configures the most optimal infrastructure for the setup for higher agility
- Minimize Unplanned Downtime: Isolates requests to improve performance early on, reducing the risk of downtime
- Solve for Bugs Sooner: Points out inefficient code (hidden bugs) in the system and infrastructure to solve challenges early on
3. Functional Testing: Automation
Any functional testing is performed on a manual cadence until the feature is stable. Once the feature is tested and stable, automating test cases can be implemented. You might fall into a mindset of automating everything, which might not be valuable to the project. Our QA experts first analyze what could be automated and whether the time spent scripting and updating the test brings value to the project. Usually, the most repetitive activities are candidates for automated scripts to help the testers improve the regression time and the integrity of the application. Additionally, these automated scripts validate that the end-to-end flow works. They also confirm whether the output data received is correct or not and check the data between modules is flowing as expected.
Verndale developers use Selenium as the framework and Python as the programming language to include automation testing in our process.
Selenium is the most used browser-based automation framework, which gives solidity and robustness to any test suite. This open-source tool automates web browsers, and although we have chosen Python, you can write scripts in different programming languages. You might be wondering why we use Python, and the answer is easy: it's far less verbose and is easier to use than any other programming language. Python is in the top 5 of the most used programming languages in 2022.
During the development lifecycle, the QA team will develop a set of test cases to help test the functionality. These test cases evolve and become more solid with time. The ones that become elements of regression testing will help the QA Analyst make the decision on what's worth automating. Once the QA Analyst identifies the eligible test cases, they will start scripting scenarios to validate the test case and specific functionality. The automation scripts will eventually become part of the continuous delivery process – validating functionality without human intervention. Reporting is also a key aspect when automation is part of the development process.
3 Reasons Why Automation Testing is Important:
- Saves on Time and Budget: Testing is a cycle that often repeats during the build phase. Every time the source code is modified, proper testing should occur. Automated tests can run as many times as needed without additional cost to the project.
- Increases Test Coverage: Automated scripts can increase the depth and scope of different testing scenarios (e.g., regression, smoke, black box, functional testing).
- Increases Testing Accuracy: Automated tests execute the same steps repeatedly without changing the order of the steps, which allows for before and after comparisons of each test execution.
4. UX Testing: Accessibility
Accessibility testing establishes whether web and mobile applications are fully accessible for people with disabilities. It helps verify that an application is accessible by people with varying disabilities, including visual, physical, speech, auditory, cognitive, language, learning, and neurological. Verndale ensures every project is set up to meet and exceed accessibility and inclusive design standards, delivering highly accessible sites and inclusive digital experiences.
Accessibility Testing Tool
Siteimprove is the accessibility SaaS platform we've selected at Verndale to help drive our commitment to accessible and inclusive experiences. This platform has enabled our projects to have consistent reports and provides detailed insights on areas for improvement so we can align with accessibility expectations.
For this step in the process, our design/UX team and front-enddevelopment team will obtain clear expectations on the accessibility level a specific site needs to meet before developing code and working on the deliverables. We follow guidelines from the Web Content Accessibility Guidelines (WCAG).
Our QA team will run and test accessibility standards against the site once it's stable. The Analysts will utilize accessibility tools like Siteimprove to measure and report based on the actual findings. The QA and front-end team prioritizes the most critical violations to increase accessibility levels, starting with levels A and AA, and eventually will test the most time-consuming rules in AAA.
3 Reasons Why Your Application Will Benefit from Accessibility UX Testing:
- Increase Performance and Meet SEO Standards: We follow the best coding practices to enable accessibility across a web application. These practices create cleaner, well-structured and organized code resulting in more robust performance while sticking to well-defined SEO standards to help the site stand out.
- Cater to a Growing Demographic of Those With Disabilities: Alienating a larger audience will push them toward competitors that can meet their needs.
- Comply with Accessibility Standards and Avoid Legal Risk: Mitigate risk and be at the forefront of propelling the conversation forward – everyone should feel included in the digital economy, regardless of whether the transition to accessible websites is challenging or costly.
In fact, a 2018 report from the U.S. CDC found that 25% of adults have some form of disability. With over 1 billion people with disabilities worldwide (with a spending power of more than $6 trillion), having an accessible site isn't just the right thing to do, it's the smart thing to do.
5. Structure of Quality: Test Case Management
The QA team carries out our Test Case Management process so the development team can focus on quality code. It's also our North Star for holding our team accountable for high-quality deliverables to our clients. As such, the process has a structure that is built and maintained throughout the project to reflect the test cases the QA team will perform.
Test Case Management Tool
To carry out effective testing, our QA team uses QA Touch, a SaaS platform to aid with organizing and tracking the QA work. This platform has the essential features for effective testing, including in-built bug tracking, seamless dashboards and integrations, reports, and more.
When performing testing, the QA Touch platform allows the team to create, store, and update the test cases for the different testing techniques according to the needs (e.g. - functional, exploratory, negative, acceptance, smoke, regression testing, etc.). With this capability, the QA Team can perform different types of tests after any deployment, task handoff, or any other QA activity per request.
The #1 Benefit of Carrying out Test Case Management
Facilitating test case management means greater visibility into the quality assurance process – the team can define scope, provide transparency to QA activities, and be held accountable. And, with QA Touch, the team can benefit from its robust reporting and accurate test case tracking, and take advantage of its easy test case creation with importing and reusable steps creation, among other essential features for testing. Each tool we incorporate enhances our process across different vital parts of development, with the sole objective to deliver strong quality output for our clients. Like every good strategy, this is just the beginning. We are always thinking and working to identify more areas that will benefit from increased quality checkpoints and processes.
Quality attracts quality. And we bake it right into our end-to-end process. Want to level up your application's quality? Partner with us and we can help.