A holistic approach in doing tests in JavaScript. Techniques and strategies discussed are useful for organizations and teams that are doing backend development in JavaScript.
1. J AVA S C R I P T T E S T I N G
S T R AT E G I E S
D I WA D E L M U N D O , V O YA G E R I N N O VA T I O N S
M A N I L A . J S F R I D A Y S M E E T U P
A P R I L 8 , 2 0 1 5
A - S PA C E , M A K A T I , P H I L I P P I N E S
2. S H O R T B A C K G R O U N D A B O U T M E
• Almost a decade of software dev experience
• Work exp local startups (LPI, self) and Singapore (Viki)
• Ruby on Rails, JavaScript, Linux, AWS
• CISSP, AWS Certified SA, CPISI (PCI-DSS)
3. T E S T I N G S P E C T R U M
UNIT INTEGRATION END-TO-END
functions,
modules
components,
API tests
UI,
application
4. 3 S T R AT E G I E S F O R T E S T I N G
• Enforce code standards
• Cultivate “testing” mindset
• Use good tools
5. 1 . E N F O R C E C O D E
S TA N D A R D S
• Code guideline (syntax)
• Code review
• Standard for managing
continuation-passing style
(CPS)
6. C O D E
G U I D E L I N E
• Be particular about syntax
(bracing, spacing, etc)
• Document, e.g.
“CodeGuidelines.md”
• Project code should look
like it was written by 1
person
Image From https://github.com/airbnb/javascript
7. C O D E R E V I E W S
• Find faults, issues, etc
• Review code quality (plato)
• Test coverage (istanbul)
11. O P T I O N S F O R C P S
NAMED
STYLE
Promises ES6: Generators
Libraries like async, synchronize,
fibers
12. A S Y N C + N A M E D
F U N C T I O N S
F O R C E S
D E V E L O P E R T O
W R I T E
U N I T- T E S TA B L E
C O D E
M Y P R E F E R R E D S T Y L E
“ S H AW D O W
O B J E C T S ”
13. 2 . C U LT I VAT E
T E S T I N G M I N D S E T
• Write tests. Try to do full
testing spectrum
• Have discussions on how
to test
• Think outside box
17. T E S T
F R A M E W O R K :
M O C H A
A S S E RT I O N S T Y L E :
C H A I
T E S T D O U B L E S :
S I N O N
C O D E Q U A L I T Y:
P L AT O
T E S T C O V E R A G E :
I S TA N B U L
R E Q U E S T
R E C O R D E R :
N O C K
E N D - T O - E N D :
K A R M A
18. TA K E A WAY
• ENFORCE CODE STANDARDS
• CULTIVATE TESTING MINDSET
• USE GOOD TOOLS
• Rule of thumb: test to minimise problems, not
test for the sake of testing