Building Impactful Tools to Move Business Forward: Product Quality At Ethos

Ethos Life
4 min readFeb 1, 2022

--

Jaimin Vaidya, Test Engineering Architect

What is the purpose of the testing, and why do we conduct it? Testing reduces risk, the chance that the company loses customers, and, eventually, money. It also boosts our confidence to say, “Yes, the code is ready to deploy to production and serve customers.”

If we look at the Project Management Triangle, testing increases the “Good” at the expense of “Cheap” and “Fast;” we spend money and time on writing tests, which improve the quality of our products. But it’s a worthy investment, reducing the risk that any changes introduced to our code break something that causes us to lose money.

Our mission at Ethos is to distribute life insurance to millions of families easily and securely. Providing high-quality service to customers helps us accomplish that task. Our Test team acts as a facilitator for product quality without creating a bottleneck for the rest of the company. Our four operating principles are:

  1. Raise team efficiency and productivity: Build automated suites and productivity tools to support teams at Ethos to maintain high velocity.
  2. Data-driven testing improvements: We use data points related to flow/browser/product determination from the PMs and our teams to build our automation suites. We also leverage the data to improve our engineering practices and ensure that the data we generate is actionable and available to teams.
  3. Early and virtuous feedback: Our Test teams want to provide early feedback to ensure teams stay on track and are aligned with the product scope. We also ensure the feedback is exemplary, actionable, and trackable for historical purposes.
  4. Quality is everyone’s responsibility: We act as guards, ensuring that everyone supports product quality. To do so, we have healthy discussions about planning tests, identify scenarios, and have design walkthroughs.

We can call out a variety of testing methodologies to achieve our goals; how we call out can be different from industry standards, but the underlying philosophy remains the same for each testing layer. The primary classification can be done on the phase of the software release cycle, i.e., whether we are building or releasing it.

The Test team uses a combination of frameworks and tools for accomplishing outcomes in different phases:

  • SonarQube: Unit tests test selections of code that are less than the entire application. Typically a unit test covers one class, with multiple tests per method of the course. This type of test should include every logical branch within the code. We extensively use SonarQube to measure the quality KPIs, track unit tests, static code coverage and analysis, code smells, code duplication, and understand security vulnerabilities. The great thing about SonarQube is that it can support multiple languages, which is helpful considering we have services written in various languages, such as JavaScript, Go, and Python. Tracking all the coding standards allows us to get meaningful information with less pain and better clarity.
  • Jest: Our developer team has been using Jest extensively for integration testing, and doing a light POC allowed us to use Jest for our e2e API testing. Jest is an open-source API Testing framework by Meta. It works very well with our philosophy of speed and accessibility to provide outcomes faster. On top of that, Jest is highly performant, lightweight, and needs less time to set up and maintain than other available frameworks.
  • Cypress: UI tests are the final step of uncovering how the consumer will react to your app. The biggest issue for the traditional UI framework is the debugging and flakiness. On top of that, most of the frameworks are created, considering the end-user would have limited coding knowledge. Cypress allows developers and Test engineers to debug using Chrome dev tools, provide an error stack, and give enough context. To circumvent the problem with flakiness, Cypress has built-in automatic waits in the commands. It also provides snapshotting of the tests as it runs, which is pretty helpful in debugging. On top of that, Cypress provides network shaping and network simulation, which is the cherry on top for UI automation.

We have built multiple tools to support different teams and focus on building tools to provide actionable feedback faster to the team’s consumers. We are working on Fault injection, Contract testing, and self-service frameworks to maintain our growth velocity. Stay tuned for more articles on such tools and framework improvements.

We are just getting started on this journey to build impactful testing tools and frameworks that help propel our business forward. The core to attaining our vision is to serve our customers with high-quality products using the most impactful tools and technologies available. If this is something that excites you, we’d love for you to join us.

Jaimin Vaidya, Test Engineering Architect
Jaimin Vaidya, Test Engineering Architect

Jaimin joined Ethos in July 2020 and leads the Test Engineering team. When Jaimin isn’t building new test tools and frameworks at Ethos, he enjoys reading books, biking with his daughter, and playing golf. Interested in joining Jaimin’s team? Learn more about our career opportunities here.

--

--

No responses yet