Software
Quality for
Developers
Small Teams & One-
Person Shops
Maira Bay de Souza
About me...
20 years in the Software Industry
10+ years in Software Quality
SW Quality Certifications: CSTE, CTFL
Good, Bad, Ugly:
- IBM, HP, GM
- Medium, Small & Start-ups
Imperial Diamond Consulting
What is Quality?
Quality Assurance vs. Quality Control
Ensures the quality of the process used to
develop software.
● Are we following our development process
(including Agile)?
● Is the current process the most efficient
way for us to develop software?
“A high-quality process will produce a high-
quality product.”
Ensures the quality of the products of the
software development process.
● Is there a design flaw?
● Does the code have bugs?
● Is the documentation easy to understand?
● Is the user happy with the software?
The 2 Components of Quality Control
Validation: Did we build the right thing?
Verification: Did we build the thing right?
Validation
Ensuring a Valid Solution
● Custom Software
○ Ask the right questions to get the full picture from the customer
● COTS/SaaS Software
○ Have a clear definition of the problem your software is solving
● Software for your own use
○ easy!
Validation - Getting the Full Picture
● “What if”s
● Quality Attributes
● Precision:
○ leave no room for misinterpretation or ambiguity
○ verifiable
Validation in Agile
● Plan - Test: QC of Artifacts & Traceability
● Review: UAT/Beta Testing
Verification
Verification - Testing V-Model (Agile)
Plan
Design
Code Unit Test
Integration Test
System Test
Integration Testing Strategies
System Testing
Test the system as a whole.
Does it meet the requirements?
● Functional: end-to-end test of all scenarios
● Non-Functional: quality attributes (performance, security, etc)
Extra slides
Change-Related Testing
● Re-test: re-run a test that failed after the defect was fixed (to confirm fix)
● Regression test: re-run tests of modules that interact with another module
where
○ a defect was fixed
○ a change was made (change of stack, library update, etc)
○ What to test? Perform impact analysis.
■ The more you know the code, the more accurate your IA will be.
Common Testing Problems
“Works on my machine”
● Use docker/VMs/etc
● Try to use data (and environment) that is as close to production as possible
○ Mask data if applicable and possible
“The user will never do that”
● If it can be done, someone will do it - and they usually do.
● Prioritize high-impact bugs: it’s better to be prepared than to have your
application crash in front of the customer.
Other Quality Tips
● Keep everything under version control, including designs and test datasets
○ Keep track of the relationships and versions by using a traceability matrix
● Prepare test datasets ahead of time
● Review test datasets every time there is change in a regression test suite,
and update them if necessary
● Prioritize fixing defects that impact customer and will prevent technical debt
from growing exponentially
○ The same goes for adding new features
Testing Independence
Development Mindset:
● Does it work as I intended?
Testing Mindset:
● How can I break this?
● What could go wrong?
Try as much as possible to get someone else to
do it!!!
Thank You!
For speaking, training and other inquiries please contact me at:
- Maira dot bay at imperial diamond consulting dot com, or
- https://www.linkedin.com/in/mairabay

Software Quality for Developers

  • 1.
    Software Quality for Developers Small Teams& One- Person Shops Maira Bay de Souza
  • 2.
    About me... 20 yearsin the Software Industry 10+ years in Software Quality SW Quality Certifications: CSTE, CTFL Good, Bad, Ugly: - IBM, HP, GM - Medium, Small & Start-ups Imperial Diamond Consulting
  • 3.
  • 5.
    Quality Assurance vs.Quality Control Ensures the quality of the process used to develop software. ● Are we following our development process (including Agile)? ● Is the current process the most efficient way for us to develop software? “A high-quality process will produce a high- quality product.” Ensures the quality of the products of the software development process. ● Is there a design flaw? ● Does the code have bugs? ● Is the documentation easy to understand? ● Is the user happy with the software?
  • 6.
    The 2 Componentsof Quality Control Validation: Did we build the right thing? Verification: Did we build the thing right?
  • 7.
  • 8.
    Ensuring a ValidSolution ● Custom Software ○ Ask the right questions to get the full picture from the customer ● COTS/SaaS Software ○ Have a clear definition of the problem your software is solving ● Software for your own use ○ easy!
  • 9.
    Validation - Gettingthe Full Picture ● “What if”s ● Quality Attributes ● Precision: ○ leave no room for misinterpretation or ambiguity ○ verifiable
  • 10.
    Validation in Agile ●Plan - Test: QC of Artifacts & Traceability ● Review: UAT/Beta Testing
  • 11.
  • 12.
    Verification - TestingV-Model (Agile) Plan Design Code Unit Test Integration Test System Test
  • 13.
  • 14.
    System Testing Test thesystem as a whole. Does it meet the requirements? ● Functional: end-to-end test of all scenarios ● Non-Functional: quality attributes (performance, security, etc)
  • 15.
  • 16.
    Change-Related Testing ● Re-test:re-run a test that failed after the defect was fixed (to confirm fix) ● Regression test: re-run tests of modules that interact with another module where ○ a defect was fixed ○ a change was made (change of stack, library update, etc) ○ What to test? Perform impact analysis. ■ The more you know the code, the more accurate your IA will be.
  • 17.
    Common Testing Problems “Workson my machine” ● Use docker/VMs/etc ● Try to use data (and environment) that is as close to production as possible ○ Mask data if applicable and possible “The user will never do that” ● If it can be done, someone will do it - and they usually do. ● Prioritize high-impact bugs: it’s better to be prepared than to have your application crash in front of the customer.
  • 18.
    Other Quality Tips ●Keep everything under version control, including designs and test datasets ○ Keep track of the relationships and versions by using a traceability matrix ● Prepare test datasets ahead of time ● Review test datasets every time there is change in a regression test suite, and update them if necessary ● Prioritize fixing defects that impact customer and will prevent technical debt from growing exponentially ○ The same goes for adding new features
  • 19.
    Testing Independence Development Mindset: ●Does it work as I intended? Testing Mindset: ● How can I break this? ● What could go wrong? Try as much as possible to get someone else to do it!!!
  • 20.
    Thank You! For speaking,training and other inquiries please contact me at: - Maira dot bay at imperial diamond consulting dot com, or - https://www.linkedin.com/in/mairabay

Editor's Notes