DEV Community

Arpit Mohan
Arpit Mohan

Posted on • Originally published at insnippets.com

How to: effectively test DB, debug in production & create game day tests

TL;DR notes from articles I read today.

The big bad guide on database testing

  • Check for data mapping, ACID properties and data integrity of your DB, and ensure they implement your business logic accurately.
  • The most common test techniques are transactions for the ACID properties, checks of keys and indices, parameters and results of stored procedures, evaluation of triggers and field constraints, etc.
  • Stress testing and performance testing are critical too.
  • SQL queries are the most reliable way to qualitatively test apps with low or medium complexity.
  • Use a database testing tool that considers the business, data access and UI as well as the database itself. 


Full post here, 8 mins read


7 debugging techniques to speed up troubleshooting in production 

  • Remove or automate all the configuration needed to run the app by taking advantage of containerization and aiming for zero configuration.
  • Don’t fall into the tech stack soup trap. The fewer technologies or ‘right tools’ you use, the better, to avoid a pile of dependencies.
  • Use 80% of your logging for 20% of your most important code (the parts used the most).
  • Make it simple and quick to replicate customer issues. Use a tool to import only the records needed from the production database to your machine.
  • Place breakpoints in obvious places in the application, with one easily locatable method per UI event. 


Full post here, 7 mins read


Four steps to creating effective game day tests

Game Day tests deliberately trigger failure modes in production systems to practice response to unpredictable situations.

  • List all potential failure scenarios. Consider which parts of your infrastructure are completely safe, what are your blind spots, what happens if a server runs out of space or in case of a DNS outage or DDOS attack.
  • Create a series of experiments to anticipate how things will break - what side effects may be triggered, whether alerts will be correctly dispatched, whether downstream systems may be affected.
  • Test your human systems. Consider how team members need to interact when an incident unfolds.
  • Address the gaps and patch any holes you find. Check which hypotheses held up in practice and which ones did not. Establish a plan to correct these and run a new game day test to check whether your hypotheses are now valid.

Full post here, 6 mins read


Get these notes directly in your inbox every weekday by signing up for my newsletter, in.snippets().

Top comments (1)

Collapse
 
jeastham1993 profile image
James Eastham

I love the idea of game day tests. Trying to figure out a way to implement my own version of Netflix's Chaos Monkey.