前言 JavaScript client-side JavaScript plugins extensions zoom levels JavaScript server-side JavaScript Rhino Node.js Node.js asynchronous nature JavaScript legacy nonlegacy legacy code Michael Feathers Working Effectively with Legacy Code 而且
xii 前言 P-1 Charles Perrow Normal Accidents P-1 vs.
前言 xiii 簡單很多 JavaScript P-1 testability P-1 JavaScript JavaScript JavaScript Java JavaScript JavaScript DOM JavaScript JavaScript Node.js JavaScript server-side PhantomJS client-side JavaScript QA quality assurance JavaScript JavaScript Perl
xiv 前言 JavaScript JavaScript JavaScript JavaScript JavaScript JavaScript QA JavaScript 3 7 JavaScript 2 complexity 3 event-based architectures 7 debugging JavaScript JavaScript JavaScript 7 6 JavaScript JavaScript Perl
前言 xv JavaScript YouTube YUI Library http://bit.ly/xudcax Crockford on JavaScript Douglas Crockford JavaScript JavaScript JavaScript JavaScript Yahoo Yahoo!Mail JavaScript JavaScript Google 原因 2 JavaScript unit tests JavaScript code coverage integration tests performance tests load tests 這些類型
xvi 前言 complexity coupling code coverage debugging JavaScript 1 JavaScript Testable JavaScript JavaScript 1 2 Complexity understandability maintainability coupling fan-out 2 JavaScript
前言 xvii 3 Event-Based Architectures 3 4 Unit Tests bug 4 可測試的 JavaScript 程式 bug 5 Code Coverage integration testing manual testingperformance testing 5 6 Integration, Performance, and Load Testing functional testing bugs
xviii 前言 QA Modularizing functionality black-box testing JavaScript 7 Debugging bugs 7 Node.js 8 Automation 8 automation automated process static analysis deploying rolling back
1 第一章 JavaScript Testable JavaScript print statement message-passing systems idiom JavaScript
2 第一章 JavaScript JavaScript JavaScript 2 1-1 microprocessor cost per transistor cycle 1 CPUs Moore s law Halving time 1.1 1-1 1 出自 Wgsimon own work: CC-BY-SA-3.0(http://bit.ly/XUdmi9)
可測試的 JavaScript 程式 (Testable JavaScript) 3 不少的 3 Agile Development waterfall model deployed fail fast 快速失敗 release often 頻繁釋出 backlog 清單列表 standup 站立會議 continuous 持續 1-2
4 第一章 策略 釋出 反覆 例行 持續 TDD 1-2 Dbenson VersionOne,Inc. 1-2 user stories
可測試的 JavaScript 程式 (Testable JavaScript) 5 API 4 5 Pair programming Test-Driven Development TDDTDD TDD unit tests integration testslegacy code TDD TDD TDD 2005 TDD
6 第一章 2 Behavior-Driven Development BDD TDD testemptycart 6 BDD Yahoo!Mail Yahoo!Mail BDD WaterfallspiralAgile JavaScript TDD BDD JavaScript JavaScript JavaScript loosely coupled 2 Erdogmus, Hakan, Marco Torchiano, and Maurizio Morisio. January 2005. On the Effectiveness of the Test- First Approach to Programming. Proceedings of the IEEE Transactions on Software Engineering 31(3): pp226-237; NRC 47445.
可測試的 JavaScript 程式 (Testable JavaScript) 7 JavaScript test-driven behavior-driven bits JavaScript C++ Java Perl Lisp CPU CPU compiled interpreted 7 CPU CPU structure syntax semantics JavaScript C++ Perl CPU CPU machine language CPU 動機 intent 處理 software-pattern
8 第一章 Douglas Crockford http://bit.ly/ XUdoGJ Platonic ideal 8 為什麼要寫可測試的程式碼 end user JavaScript x = x + 1; x string x infinity x object testable 為什麼要寫可維護的程式碼 debugging maintaining
可測試的 JavaScript 程式 (Testable JavaScript) 9 為什麼要寫可了解的程式碼 method function 9 99% 什麼是可測試的
10 第一章 什麼是可維護的 life cycle 什麼是可了解的 10 如何達到可測試的 TDD BDD TDD BDD UI TDDintegration testsbdd TDD BDD test-while-driven development TWDD
可測試的 JavaScript 程式 (Testable JavaScript) 11 isolatabledependenciescomplexity 如何達到可維護的 如何達到可了解的 11
12 第一章 Unit tests integration testing JavaScript performance testingload testing Debugging JavaScript stepby-step debugging resource management 12 JavaScript TDD BDD JavaScript JavaScript JavaScript