Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

JavaScript for Testers
Nội dung xem thử
Mô tả chi tiết
JavaScript for Testers
Carlos Ble
JavaScript for Testers
Carlos Ble
This book is for sale at http://leanpub.com/javascript4testers
This version was published on 2014-10-13
This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing
process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and
many iterations to get reader feedback, pivot until you have the right book and build traction once
you do.
This work is licensed under a Creative Commons Attribution 3.0 Unported License
Contents
Workshop overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Configuring the project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Setting up the tools for the workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
The JavaScript Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Introduction to Jasmine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
JavaScript: The tricky parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Common sources of defects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Browser development tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
The DOM (Document Object Model) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
jQuery basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Selectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Debugging Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Watching Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
The Call Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Debugging with Firebug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Debugging with Chrome Dev Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Debugging on IE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Debugging JavaScript in the server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Online tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Integration Testing utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Selenium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
CasperJS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Integration tests with Jasmine, jQuery and the DOM . . . . . . . . . . . . . . . . . . . . . 32
CONTENTS
Fast and isolated tests with doubles: Stubs, Mocks and Spies . . . . . . . . . . . . . . . . . 33
Stubs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Mocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Spies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Code quality tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
JSHint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Code coverage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Hunting memory leaks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Performance tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Measuring performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Benchmarking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Security basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
XSS: Cross-site scripting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
The same-origin policy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
JSONP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
CSRF: Cross-site request forgery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Sending malicious JSON data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Sniffing network messages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42