Dedicated to Ashley & Iris




НазваниеDedicated to Ashley & Iris
страница1/73
Дата19.02.2013
Размер3.47 Mb.
ТипДокументы
  1   2   3   4   5   6   7   8   9   ...   73



Dedicated to Ashley & Iris




(in recognition for continually reminding me that real life is much more important than writing books;)


The cover features Angkor Wat, the largest temple in the remains of the capital of the Khmer civilization. Built from 879 to 1191 CE in Cambodia.

Contents



TODO: stack the Header 3 citations


Dedicated to Ashley & Iris ii

Contents iv

Forward xi

Acknowledgements xii

Introduction 1

Who Should Read this Book 2

Developers 2

Students 3

Testers 3

Usability Experts 4

Leaders 4

Style 4

Part I: One Button Testing 6

Chapter 1: The GUI Problem 7

What is Test-First Programming? 7

What’s a Test Case? 8

How Do Tests Make Development Faster? 8

Can Tests Catch Every Bug? 9

What’s the Best Way to Fix a Failing Test? 9

Why 1 to 10 Edits? 10

Why Test FIRST? 10

How Do Tests Help Requirements Gathering? 10

How Do Tests Sustain Growth? 10

What’s So Special about GUIs? 12

Why is TFP for GUIs Naturally Hard? 12

Why is TFP for GUIs Artificially Hard? 13

How to Avoid TFPing a GUI? 13

So Why Bother TFPing a GUI? 15

Authoring 15

But Aren’t All GUIs Different? 15

Conclusion 16

Chapter 2: The TFUI Principles 17

How to Test-Infect a GUI 17

One Button Testing 18

Just Another Library 18

Regulate the Event Queue 19

Temporary Visual Inspections 19

Temporary Interactive Tests 19

Broadband Feedback 19

Query Visual Appearance 19

Simulate User Input 20

Loose User Simulations 20

Firm User Simulations 20

Strict User Simulations 20

Fault Navigation 26

Flow 26

Conclusion 26

Chapter 3: GUI Architecture 27

An Ideal Layering 28

Output 28

Input 30

The Event Queue 31

Best of Both Worlds 32

To Test Controls… 33

To Test Scripts… 33

To Test Paint() Events… 33

Mock Graphics 34

Hyperactive Tests 35

Fuzzy Logic 35

Acolyte Checks Output 36

Programming vs. Authoring 37

Fuzzy Matches 38

Regular Expression Matches 38

Parsed Fuzzy Matches 39

Conclusion 40

Chapter 4: The Development Lifecycle with GUIs 41

When to Design the GUI 41

Big GUI Design Up Front 42

Version with Skins 43

Abstract Tests 44

Smart UI AntiPattern 48

Sane Subset 48

Tests Change your Sane Subset 50

Continuous Integration 51

Contraindicating Integration 52

Don’t Leave reveal() Turned on 52

Flow 53

Time vs. Effort 54

Conclusion 56

Part II: Case Studies 58

Chapter 5: SVG Canvas 68

Ruby in a Nutshell 69

GraphViz in a Nutshell 70

Architecture 71

Bootstrapping 71

Simplest Case 74

The Test Rig 77

Force the Code to Do More 78

XPath in a Nutshell 79

Ruby::Unit Fault Navigation 79

Get Back to a Green Bar 80

Close the Loop 81

Feature Accretion 81

Refactor Low Hanging Fruit 83

Regulate the Tk Event Queue 86

Test-away a Bug 90

Framework 92

Here Comes the Pop 98

Open Closed Principle 100

Fail for the Correct Reason 103

Our SVG reader, parsePath(), returns a 2-dimension coordinate array: [[42, 63], [42, 78], [42, 97], [42, 111]]. TkCanvas uses flat, 1-dimension arrays: [42, 63, 42, 78, 42, 97, 42, 111]. This illustrates the importance of self-documenting assertions. A TkCanvas supports the same coordinate format for all the different TkcItem shapes. 103

Rest State 107

Conclusion 107

Arrowheads 109

Boxes 112

Style 112

Chapter 6: Family Tree 118

Bootstrapping Interaction 118

Block Closures 121

Firm Tk User Simulation 122

Goal Stack 123

Selection Emphasis 124

Extract Class Refactor 129

The *Builder classes each will need to take a reference to our new object, when it exists, so they can each add their item to its canvas. Another good thing about Ruby is we can use objects that pretend to be instances of a class that does not exist yet. 129

Keyboard Navigation 132

Child Test 132

Total Recall 134

Tab to the Next Node 136

Edit a Node 137

Write DOT files 141

MetaData 141

Structured Programming 145

Convert a Canvas to DOT Notation 146

Rubber Bands 154

Motion Capture 157

Secondary Selection Emphasis 160

Begat 162

To Do 165

Conclusion 165

Chapter 7: NanoCppUnit 166

Visual Studio and Friends 167

C++ in a Nutshell 168

Starting an Application without a Wizard 172

CDialogImpl<> 174

Visual C++ Fault Navigation 175

MSXML and COM (OLE, ActiveX, etc.) 178

Type Libraries and #import 179

COM Error Handling 179

XML Syntax Errors 183

Proceed to the Next Ability 187

A Light CppUnit Clone 189

Test Collector 190

C++ Heresy 193

Registered Package Suffixes 193

Warts 194

Macros 194

Test Insulation 194

Turbulence 194

Don’t “Edit and Continue” 195

Don’t Typecast 195

Const Correctness 195

Latent Modules 196

Use the Console in Debug Mode 196

Enabling 196

All Tests Passed 197

Keep Tests Easy to Write 198

Chapter 8: Model View Controller 201

Regulate the MS Windows Event Queue 204

Don’t Mode Me In 206

Continuous Integration 206

Name that Pattern 207

Ubiquitous Language Works at All Scales 208

Boundary Conditions 208

Member Function Pointers 213

Deprecation Refeaturization 214

Split 216

Polymorphic Smart Pointer Array 217

Retire the Deprecated Identifier 222

Dynamic Data Exchange 223

Chapter 9: Broadband Feedback 225

Persistence 225

Multiple Customers 233

Saving Data 237

List Box Population 239

Mock Your GUI Toolkit 242

GDI MetaFiles 244

Log String Test 247

Bulk Assertions 255

Repopulation 258

Loose MS Windows User Simulation 259

Localization 260

Localizing to संस्कृत 262

Locale Skins 262

Babylon 264

Unicode 265

Unicode Transformation Format 266

_UNICODE 267

Spiderman 268

Glossaries 270

Spot Checks 271

Missing Character Glyphs 274

Abstract Skin Tests 276

Progress Bars 279

ImageMagick 285

Animated GIFs 288

Test Modes 290

Conclusion 295

But first, we’re going to have a little fun. 295

Chapter 10: Embedded GNU C++ Mophun™ Games 296

Mophun Learner Test 296

Sane Embedded Subset 298

Sprights 298

Don’t Let Sleeping Goblins Lie 309

Bang 315

Mock User 321

Conclusion 322

Chapter 11: Fractal Life Engine 323

Qt and OpenGL 323

Flea (and POVray) 324

Main Window 326

Meta Object Compiler 330

In-Vivo Testing 330

Regulate the Qt Event Queue 333

Embed a Language 334

Flea does OpenGL 338

Mock a DLL 339

Sane OpenGL Subset 343

Planning Mock OpenGL Graphics 343

Mock glTrace Graphics 346

Spheres 360

Rendering Turtle Graphics 367

Flea Primitive Lists 371

Editing Fractals 377

Revolutionary Fractals 383

Conclusion 385

Chapter 12: The Web 386

HTML in a Nutshell 386

Test Tiers 387

Minimize System Diversity 388

XHTML Tests 388

Bootstrapping CGI Tests in Perl 389

Temporary Visual HTML Inspections 390

HTTP Tests 391

Temporary Visual HttpUnit Inspections 391

Insecurity 393

DOM Tests 393

Temporary Interactive MS Internet Explorer Tests 394

Other Platforms 395

Test Integration 396

Mini Ruby Wiki 396

Wiki Wiki Webs 396

Wiki Markup 397

External Links 397

Internal Links 398

When Representation Layers Produce HTML 398

Bulk Parsed Fuzzy Matches 398

Custom Controls 399

Transclusion 399

Transclude a Text File 400

DOM tests in Ruby 402

Least Favorite Editor 408

The Remote Test Button 410

Extensible Markup Language 413

Extensible Stylesheet Language for Transformations 414

Shell to a Command Line 417

XSLT to Generate an XPath to any Node 418

Edit Transcluded Data 419

Comments are Good 421

Modify and Clone XML 424

Test Transcluded XML 428

Temporary Visual WebUnit Inspection 428

Test Server Fixtures 429

WebInject 434

Transclude Graphic Test Results 437

To Do 441

Conclusion 442

Part III: Explications 443

Chapter 13: Agility 444

Feedback 444

Communication 445

Simplicity 446

Courage 448

Extreme Programming 449

Time to Market 449

Add Features not Modules 450

Emergent Behavior 451

Metrics 451

The Simplicity Principles 452

Chapter 14: Sluggo at Work 453

Do’s and Don’t’s 453

“Progress” Metrics 454

Programming in the Debugger 454

Duplicity 454

Passing the Buck 455

Manual Regression Testing 456

Just a Display Bug 456

Post Mortem 457

Chapter 15: Nancy at Work 458

Extract Algorithm Refactor 458

Spike Solution 461

Continuous Feedback 462

Distributed Feedback 463

Slack 465

The Biggest, Most Important Difference 466

Chapter 16: Test-First Programming 467

The TFP Cycle 467

Analysis and Design 469

Grind it ‘Till you Find it 471

Deprecation Refactor 472

Constraints and Contracts 474

Refactoring and Authoring 475

Noodling Around 475

Computer Science vs. Software Engineering 476

Strong the Dark Side Is 476

Test Cases 476

Test Isolation 477

Test Fixtures 478

Test Collector pattern 480

Test Resources 480

Incremental Testing 481

Test Hyperactivity 481

Integration Tests 482

Continuous Testing 482

Conclusion 482

Chapter 17: Exercises 483

Any Case Study 483

SVG Canvas 483

Family Tree 484

NanoCppUnit 485

Model View Controller 485

Broadband Feedback 486

Embedded GNU-C++ Mophun™ Games 487

Fractal Life Engine 487

The Web 488

Glossary 490

Bibliography 498



  1   2   3   4   5   6   7   8   9   ...   73

Похожие:

Dedicated to Ashley & Iris iconDedicated to Ashley & Iris

Dedicated to Ashley & Iris iconAbramovitz, Janet N., and Ashley T. Mattoon. 1999

Dedicated to Ashley & Iris iconPlastics and the Environment. Hoboken. N. J. Wiley-Interscience. Ashley, S. 2002

Dedicated to Ashley & Iris iconGilliland home is dedicated

Dedicated to Ashley & Iris iconCitations Acknowledging or using iris-related facilities and Data As of August 2010 Please send corrections and/or additions to

Dedicated to Ashley & Iris iconDedicated to Jerry Lefcourt, Lawyer and Brother

Dedicated to Ashley & Iris iconFree to download magazine dedicated to Commodore computers

Dedicated to Ashley & Iris iconMorning session I: Dedicated to Prof. A. Acrivos, “Suspensions and particulates”

Dedicated to Ashley & Iris icon08: 30 Registration 09: 00 Welcome Remarks Morning session I: Dedicated to Prof. A. Acrivos, “Suspensions and particulates”

Dedicated to Ashley & Iris iconThe Culture of Irises in the United States Iris Culture for the Mountain and Plains Region, D. M. Andrews 5

Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница