Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Testing: Building scalable applications that do...

Testing: Building scalable applications that don't suck

I gave this presentation at ForLoop Africa Ibadan in 2018.

The talk centers on how in-depth testing is important in the software development lifecycle of any application.

There are also insights into best practices and how to best use tools for more efficient testing process.

https://twitter.com/forloopibadan/status/961158951776735232?s=46&t=Tj2TU3XrVgI9hsdULH0wiw

Goodness Kayode

March 17, 2018
Tweet

More Decks by Goodness Kayode

Other Decks in Programming

Transcript

  1. This is what I think should? - Food - Football

    Match - Movies - Games - Learning One New Technology - Talking to your sweetheart
  2. What shouldn’t make you forfeit your sleep at night. -

    Calls from Superior at work on application throwing error. - Nightmare about new bugs to be discovered the next day at work - Countless Calls from client - Every developers’ sworn enemy called “Bug”
  3. Bug: This is not usually intentionally infused into the system.

    Every application is destined to have a bug. How you handle those bugs is what matters. The more the bugs the more the application sucks.
  4. The end goal is building a system that people love

    We will take TESTING as our focus
  5. Testing is all about making sure input leads to desired

    or expected output. It basically involves verification and validation.
  6. Basic Categories of Testing Blackbox Testing: It gives priority to

    the external part of the system than the internal part of the system. You can call it Functional testing Whitebox Testing: This pays attention to the internal part of the system. This testing is concerned about the spaghetti lifestyle of a system (Spaghetti code).
  7. These 2 basic types have different types under: • Unit

    Testing: The target of this testing type is unit/section of codes. It involves testing that a chunk of code works as expected. • Functional Testing: This involves writing codes to test like a real user. It helps to ensure certain parts of the system function as expected. • Integration Testing: It involves testing the components that make up the system. • System Testing: This involves testing deployment environment. If you deploy to any operating system, will it still work perfectly or one operating system favours it better than the other? • Stress Testing: You need to test how your system will behave in some conditions. • Performance Testing: This involves testing speed and performance of the the application. How fast the application return results.
  8. Best Practices to testing • Decide what Test Cases to

    Automate • Test Early and Test Often: Bugs detected early are a lot cheaper to fix than those discovered later in production or deployment. • Select the Right Automated Testing Tool • Create Good, Quality Test Data • Create Automated Tests that are Resistant to Changes in the UI
  9. Something Light On Automated Testing Automated testing does not require

    human efforts. It increases speed of test execution and test Coverage. It saves you time.
  10. Benefits of Automated Testing • Faster than the manual testing

    • Wider test coverage of application features • Reliable in results • Ensure Consistency • Saves Time • Improves accuracy • Human Effort is not required while execution • Increases Efficiency • Better speed in executing tests • Test Frequently and thoroughly • More cycle of execution can be achieved through automation
  11. Goodness Kayode - SWE @Accounteer - Pusher of Codes -

    Linguist Turned Engineer - Scotch.io Advocate - Expert Mentor at Codementor @goodnesskayode @goodnesskay @goodnesskay