Jyoti Nair, Director, Testing, Tally Solutions talks about her work in this interaction.
How is the testing of server products evolving in a Cloud environment for the new solutions and products?
Jyoti Nair - The testing of server products within a cloud environment necessitates a paradigm shift for the team. In addition to ensuring functional stability, the following non-functional parameters must be validated -
- Establishing the baseline for various components and the overall product.
- Demonstrating scalability to ensure horizontal and vertical scalability under heavy loads.
- Conducting security testing, including vulnerability assessments, penetration testing, and data access security, to mitigate security threats. Security audits should also be conducted to ensure compliance requirements.
- Proving product resilience by simulating chaotic failures and exceptions in multi-component deployments.
- Performing deployment testing to validate the creation or upgrade of components on the existing site, ensuring failover and availability.
- Conducting supportability testing to ensure monitoring and debugging aspects of the product in the cloud environment.
- Performing multi-cloud compatibility testing to ensure seamless operation across different cloud providers.
Additionally, the team must establish a costing model for future workloads to ensure efficient utilization of cloud resources. The utilisation of cloud-specific testing tools and frameworks for automation and continuous testing is crucial in this context.
How do you set the standard for the solutions and products to ensure quality?
Jyoti Nair - Quality transcends the mere absence of defects; a baseline we regard as hygiene. Embracing the "Shift Left" philosophy, we prioritise quality at each stage of product development. Our design approach is holistic, addressing non-functional requirements (NFRs) and uncertainties first, ensuring a distinctive design that is both relevant and beneficial to end customers. The emphasis on NFRs is paramount, prompting us to step back, refactor, or adjust the architecture to uphold our commitment to quality. We place considerable focus on refining the product's polish and usability nuances, in addition to ensuring correctness.
An adept team, driven by an aspirational goal, is supported by various engineering practices and tools to validate the design, specifications and code, ultimately delivering a high-quality product. This is achieved through a series of structured activities -
- Walkthroughs & Reviews
Early design validation through walkthroughs with internal teams and customers, incorporating feedback.
Architecture and component breakdown review by architects to ensure adherence to layered architecture and hence ability to provide best NFR.
Cross-functional team review of specifications for comprehensive use case coverage.
Implementation practices like code design, code reviews, and unit testing to uphold code quality.
- Product Testing & Acceptance
Comprehensive testing covering functional, integrated feature, and various non-functional aspects.
Testing of measurable NFRs such as speed and reliability, alongside subjective NFRs like simplicity and flexibility are accepted.
Adoption of automated and continuous testing practices for repeatability and coverage.
Exploratory testing by actual product users and support teams for broader diversity.
Alpha and beta usage by a diverse user base before the official product release, incorporating user feedback.
- Documentation
Thorough documentation of design, specifications, decisions, implementation approaches, test strategies, and release stability indicators.
Definition of key roles like Product Architect, Component Owner, and Test Owner, clarifying responsibilities for each project.
- Continuous Improvements
Ongoing improvements through retrospectives and root cause analysis practices, ensuring learnings from previous releases are assimilated.
What testing measures do you employ for on-premise products?
Jyoti Nair - For a product like Tally, used by millions of customers, the key challenge is ensuring compatibility with the diverse range of environment configurations in which the product can be deployed at the customer's premise. Therefore, in addition to comprehensive functional and non-functional test coverage, compatibility testing with various hardware and operating system versions is also crucial.
For functional testing, we achieve comprehensive test coverage at each component level, which is also automated for repeatability. Once the individual components are stabilized, there is detailed end-to-end test coverage to ensure component integration aspects and overall feature usage stability. Each of the non-functional requirements (NFRs) such as speed, reliability, security, etc., is discretely defined and tested.
At Tally, we actively involve a select group of customers and support teams for exploratory testing to gather their early feedback before reaching the final system testing stage and product release.
How do the engineers get the training to match these testing standards?
Jyoti Nair - Engineers recruited directly from college undergo a thorough training regimen encompassing extensive theoretical sessions, rigorous assessments, and practical, hands-on projects before embarking on actual product releases. This training spans various domains, including Product, Architecture, Product Design principles, Technology, Process, and tools & frameworks. Throughout this training period, a dedicated group of subject matter experts and mentors provides continuous guidance. The primary emphasis of this training is to cultivate problem-solving skills and align these engineers with Tally’s specific approach to Product Design and Engineering.