Quality of a software is not QA engineer’s sole responsibility. It is aculture that should be maintained throughout the entire process. The developer’s has a big role to play, but they are not alone.
This presentation speech was aimed to introduce them some of the most important tools that the developers can use to enhance the quality of their product.
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Developer's QA Toolkit - 34th National IT Conference - Sri Lanka
1. Developer’s QA Toolkit
BY CHAMIL JEEWANTHA
SOFTWARE ARCHITECT
34TH NATIONAL IT CONFERENCE – SRI LANKA
HTTP://WWW.NITC.LK/2016/
2. What is QA?
“The maintenance of a desired level of
quality in a service or product, especially
by means of attention to every stage of
the process of delivery or production.”
– Oxford Dictionary
3. What is QA?
“The maintenance of a desired level of
quality in a service or product, especially
by means of attention to every stage of
the process of delivery or production.”
– Oxford Dictionary
Requirements | Development | Testing | UAT | …
8. “SOLID Design & Clean Code is more
important in “Agile” than anywhere
else”
BUT IT’S A CHALLENGE…
9. Waterfall Agile Transformation
Business requirements may change drastically over the time.
Single lengthy flow converted to a small large number of cycles.
Cycle time is shorten from many Months to few weeks.
Discover
Design
Develop
Test
Launch
10. The Challenge is,
Focusing on Quality while delivering the changing customer
needs within the short cycles.
So,
Tools are Important!
13. Knowledge & Practice
Object Oriented / Functional / Flow Based / … Programing
◦ Concepts / Guide Lines
SOLID
◦ Single Responsibility
◦ Open/Closed
◦ Liskov Substitution
◦ Interface Segregation
◦ Dependency Inversion
GRASP
◦ General Responsibility Assignment Software Principles (or Patterns)
GoF Patterns
◦ Gang of Four Patterns
14. Automated Code Analysis
Static Analysis
◦ Offline analysis without executing the program
◦ Quick and Easy
◦ Detects possible Flaws
◦ Escalates violations of
◦ Standards / Best Practices
Dynamic Analysis
◦ Runtime analysis
◦ Detects the flaws which is not possible to detect with static
analysis
◦ Time Consuming
◦ Full coverage is not guaranteed
17. Example: Refactoring
Change to better names
◦ duration durationInSeconds
Design level refactoring
new Notification(“Failure”,”DB Failure”,new Date())
new Notification.Builder()
.typeOf(“Failure”)
.describedBy(“DB Failure”)
.atNow()
.build();
18. Unit Test
Unit A single indivisible Entity
◦ A “Class” In OOP
Unit Test
◦ Select the smallest piece of testable software in the
application
◦ Isolate it from the rest of the code
◦ Determine whether it behaves exactly as you expect
◦ Each unit is tested separately before integrating them
into modules to test the interfaces between modules
19. TDD – Test Driven Development
1.Write a(nother) unit test that fails
2.Write the minimum production code until all the tests pass
3.Refactor your code
4.Repeat until all your work is done
Fail Pass
Refactor
20. TDD Benefits
Write non-testable codes are impossible
Test-first forces you to plan before you code
It’s faster than writing code without tests
It saves you from lengthy code
It guides you to build good, SOLID units
It increases your confidence (refactor without fear)
Acts as a real-time progress bar