Book picks similar to
Test Design: A Bbst Workbook by Cem Kaner


testing
software
software-development
software-testing

Mac OS X Leopard: The Missing Manual


David Pogue - 2007
    The new Mac OS X 10.5, better known as Leopard, is faster than its predecessors, but nothing's too fast for Pogue and this Missing Manual. It's just one of reasons this is the most popular computer book of all time.Mac OS X: The Missing Manual, Leopard Edition is the authoritative book for Mac users of all technical levels and experience. If you're new to the Mac, this book gives you a crystal-clear, jargon-free introduction to the Dock, the Mac OS X folder structure, and the Mail application. There are also mini-manuals on iLife applications such as iMovie, iDVD, and iPhoto, and a tutorial for Safari, Mac's web browser. This Missing Manual is amusing and fun to read, but Pogue doesn't take his subject lightly. Which new Leopard features work well and which do not? What should you look for? What should you avoid? Mac OS X: The Missing Manual, Leopard Edition offers an objective and straightforward instruction for using:Leopard's totally revamped Finder Spaces to group your windows and organize your Mac tasks Quick Look to view files before you open them The Time Machine, Leopard's new backup feature Spotlight to search for and find anything in your Mac Front Row, a new way to enjoy music, photos, and videos Enhanced Parental Controls that come with Leopard Quick tips for setting up and configuring your Mac to make it your own There's something new on practically every page of this new edition, and David Pogue brings his celebrated wit and expertise to every one of them. Mac's brought a new cat to town and Mac OS X: The Missing Manual, Leopard Edition is a great new way to tame it.

Sams Teach Yourself C++ in One Hour a Day


Siddhartha Rao - 2008
    Master the fundamentals of C++ and object-oriented programming Understand how C++11 features help you write compact and efficient code using concepts such as lambda expressions, move constructors, and assignment operators Learn the Standard Template Library, including containers and algorithms used in most real-world C++ applications Test your knowledge and expertise using exercises at the end of every lesson Learn on your own time, at your own pace: No previous programming experience required Learn C++11, object-oriented programming, and analysis Write fast and powerful C++ programs, compile the source code with a gcc compiler, and create executable files Use the Standard Template Library's (STL) algorithms and containers to write feature-rich yet stable C++ applications Develop sophisticated programming techniques using lambda expressions, smart pointers, and move constructors Learn to expand your program's power with inheritance and polymorphism Master the features of C++ by learning from programming experts Learn C++11 features that allow you to program compact and high-performance C++ applications TABLE OF CONTENTSPART I: THE BASICS LESSON 1: Getting Started with C++11 LESSON 2: The Anatomy of a C++ Program LESSON 3: Using Variables, Declaring Constants LESSON 4: Managing Arrays and Strings LESSON 5: Working with Expressions, Statements, and Operators LESSON 6: Controlling Program Flow LESSON 7: Organizing Code with Functions LESSON 8: Pointers and References Explained PART II: FUNDAMENTALS OF OBJECT-ORIENTED C++ PROGRAMMING LESSON 9: Classes and Objects LESSON 10: Implementing Inheritance LESSON 11: Polymorphism LESSON 12: Operator Types and Operator Overloading LESSON 13: Casting Operators LESSON 14: An Introduction to Macros and Templates PART III: LEARNING THE STANDARD TEMPLATE LIBRARY (STL) LESSON 15: An Introduction to the Standard Template LibraryLESSON 16: The STL String ClassLESSON 17: STL Dynamic Array ClassesLESSON 18: STL list and forward_listLESSON 19: STL Set ClassesLESSON 20: STL Map ClassesPART IV: MORE STL LESSON 21: Understanding Function ObjectsLESSON 22: C++11 Lambda ExpressionsLESSON 23: STL AlgorithmsLESSON 24: Adaptive Containers: Stack and QueueLESSON 25: Working with Bit Flags Using STLPART V: ADVANCED C++ CONCEPTS LESSON 26: Understanding Smart PointersLESSON 27: Using Streams for Input and OutputLESSON 28: Exception HandlingLESSON 29: Going Forward APPENDIXES A: Working with Numbers: Binary and Hexadecimal B: C++ Keywords C: Operator Precedence D: Answers E: ASCII Codes

Programming Groovy


Venkat Subramaniam - 2008
    But recently, the industry has turned to dynamic languages for increased productivity and speed to market.Groovy is one of a new breed of dynamic languages that run on the Java platform. You can use these new languages on the JVM and intermix them with your existing Java code. You can leverage your Java investments while benefiting from advanced features including true Closures, Meta Programming, the ability to create internal DSLs, and a higher level of abstraction.If you're an experienced Java developer, Programming Groovy will help you learn the necessary fundamentals of programming in Groovy. You'll see how to use Groovy to do advanced programming including using Meta Programming, Builders, Unit Testing with Mock objects, processing XML, working with Databases and creating your own Domain-Specific Languages (DSLs).

Python Testing with Pytest: Simple, Rapid, Effective, and Scalable


Brian Okken - 2017
    The pytest testing framework helps you write tests quickly and keep them readable and maintainable - with no boilerplate code. Using a robust yet simple fixture model, it's just as easy to write small tests with pytest as it is to scale up to complex functional testing for applications, packages, and libraries. This book shows you how.For Python-based projects, pytest is the undeniable choice to test your code if you're looking for a full-featured, API-independent, flexible, and extensible testing framework. With a full-bodied fixture model that is unmatched in any other tool, the pytest framework gives you powerful features such as assert rewriting and plug-in capability - with no boilerplate code.With simple step-by-step instructions and sample code, this book gets you up to speed quickly on this easy-to-learn and robust tool. Write short, maintainable tests that elegantly express what you're testing. Add powerful testing features and still speed up test times by distributing tests across multiple processors and running tests in parallel. Use the built-in assert statements to reduce false test failures by separating setup and test failures. Test error conditions and corner cases with expected exception testing, and use one test to run many test cases with parameterized testing. Extend pytest with plugins, connect it to continuous integration systems, and use it in tandem with tox, mock, coverage, unittest, and doctest.Write simple, maintainable tests that elegantly express what you're testing and why.What You Need: The examples in this book are written using Python 3.6 and pytest 3.0. However, pytest 3.0 supports Python 2.6, 2.7, and Python 3.3-3.6.

Rocket Surgery Made Easy: The Do-It-Yourself Guide to Finding and Fixing Usability Problems


Steve Krug - 2009
    But with a typical price tag of $5,000 to $10,000 for a usability consultant to conduct each round of tests, it rarely happens. In this how-to companion to Don't Make Me Think: A Common Sense Approach to Web Usability, Steve Krug spells out an approach to usability testing that anyone can easily apply to their own web site, application, or other product. (As he said in Don't Make Me Think, "It's not rocket surgery".)In this new book, Steve explains how to: -Test any design, from a sketch on a napkin to a fully-functioning web site or application-Keep your focus on finding the most important problems (because no one has the time or resources to fix them all)-Fix the problems that you find, using his "The least you can do" approachBy pairing the process of testing and fixing products down to its essentials (A morning a month, that's all we ask ), Rocket Surgery makes it realistic for teams to test early and often, catching problems while it's still easy to fix them. Rocket Surgery Made Easy adds demonstration videos to the proven mix of clear writing, before-and-after examples, witty illustrations, and practical advice that made Don't Make Me Think so popular.

Composing Software


Eric Elliott - 2018
    Most developers have a limited understanding of compositional techniques. It's time for that to change.In "Composing Software", Eric Elliott shares the fundamentals of composition, including both function composition and object composition, and explores them in the context of JavaScript. The book covers the foundations of both functional programming and object oriented programming to help the reader better understand how to build and structure complex applications using simple building blocks.You'll learn: • Functional programming • Object composition • How to work with composite data structures • Closures • Higher order functions • Functors (e.g., array.map) • Monads (e.g., promises) • Transducers • LensesAll of this in the context of JavaScript, the most used programming language in the world. But the learning doesn't stop at JavaScript. You'll be able to apply these lessons to any language. This book is about the timeless principles of software composition and its lessons will outlast the hot languages and frameworks of today. Unlike most programming books, this one may still be relevant 20 years from now.This book began life as a popular blog post series that attracted hundreds of thousands of readers and influenced the way software is built at many high growth tech startups and fortune 500 companies.

SOA: Principles of Service Design


Thomas Erl - 2007
    It is through an understanding of service design that truly service-oriented solution logic can be created in support of achieving the strategic goals associated with SOA and service-oriented computing. Bestselling SOA author Thomas Erl guides you through a comprehensive, insightful, and visually rich exploration of the service-orientation design paradigm, revealing exactly how services should and should not be designed for real-world SOA. concise introduction to SOA and service-oriented computing concepts and benefits* A thorough exploration of the service-orientation design paradigm as represented by eight specific design principles* A comparison of service-oriented and object-oriented concepts and principles and a clear definition of what qualifies as service-oriented logic* Detailed coverage of four different forms of service-related design granularity* An exhaustive examination of service contracts, with an emphasis on standardization, abstraction, and the utilization of WS-Policy, XML Schema, and WSDL definitions* A comprehensive study of various forms of service-related coupling with an emphasis on the requirements to attaining a suitable level of loose coupling.* achieve truly agnostic and reusable service logic* Techniques for maximizing service reliability, scalability, and performance by instilling high levels of autonomy and emphasizing stateless design* Approaches for positioning services as highly discoverable and interpretable enterprise resources* Unprecedented coverage of how to design services for participation in complex compositions* The definition of concrete links between each design principle and the strategic goals and benefits of SOA and service-oriented computing* Numerous cross-references to key design patterns documented separately in SOA: Design Patterns www.soabooks.com supplements this book with a variety of resources, including content updates, corrections, and sample chapters from other books. www.soaspecs.com provides further support by establishing a descriptive portal to industry specifications referenced in all of the series titles. www.soaglossary.com establishes a master glossary for all SOA titles in this series. www.prenhallprofessional.comwww.soabo... Foreword Chapter 1: OverviewChapter 2: Case Study Background Pa

Schaum's Outline of Programming with C


Byron S. Gottfried - 1989
    Includes some discussion of the Turbo C++ operating environment, as well as useful information on operators and expressions, data input and output, control sttements, functions, program structure, and arrays.

Software Requirements 3


Karl Wiegers - 1999
    Two leaders in the requirements community have teamed up to deliver a contemporary set of practices covering the full range of requirements development and management activities on software projects. Describes practical, effective, field-tested techniques for managing the requirements engineering process from end to end. Provides examples demonstrating how requirements "good practices" can lead to fewer change requests, higher customer satisfaction, and lower development costs. Fully updated with contemporary examples and many new practices and techniques. Describes how to apply effective requirements practices to agile projects and numerous other special project situations. Targeted to business analysts, developers, project managers, and other software project stakeholders who have a general understanding of the software development process. Shares the insights gleaned from the authors' extensive experience delivering hundreds of software-requirements training courses, presentations, and webinars.New chapters are included on specifying data requirements, writing high-quality functional requirements, and requirements reuse. Considerable depth has been added on business requirements, elicitation techniques, and nonfunctional requirements. In addition, new chapters recommend effective requirements practices for various special project situations, including enhancement and replacement, packaged solutions, outsourced, business process automation, analytics and reporting, and embedded and other real-time systems projects.

Service Design Patterns: Fundamental Design Solutions for SOAP/WSDL and RESTful Web Services


Robert Daigneau - 2011
    In this time, developers and architects have encountered a number of recurring design challenges related to their usage, and have learned that certain service design approaches work better than others to solve certain problems.   In Service Design Patterns, Rob Daigneau codifies proven design solutions for web services that follow the REST architectural style or leverage the SOAP/WSDL specifications. This catalogue identifies the fundamental topics in web service design and lists the common design patterns for each topic. All patterns identify the context in which they may be used, explain the constituent design elements, and explore the relative strengths and trade-offs. Code examples are provided to help you better understand how the patterns work but are kept general so that you can see how the solutions may be applied to disparate technologies that will inevitably change in the years to come.   This book will help readers answer the following questions: How do you create a web service API, what are the common API styles, and when should a particular style be used? How can clients and web services communicate, and what are the foundations for creating complex conversations in which multiple parties exchange data over extended periods of time? What are the options for implementing web service logic, and when should a particular approach be used? How can clients become less coupled to the underlying systems used by a service? How can information about a web service be discovered? How can generic functions like authentication, validation, caching, and logging be supported on the client or service? What changes to a service cause clients to break? What are the common ways to version a service? How can web services be designed to support the continuing evolution of business logic without forcing clients to constantly upgrade?  This book is an invaluable resource for enterprise architects, solution architects, and developers who use web services to create enterprise IT applications, commercial or open source products, and Software as a Service (SaaS) products that leverage emerging Cloud platforms.

Coaching Agile Teams: A Companion for ScrumMasters, Agile Coaches, and Project Managers in Transition


Lyssa Adkins - 2010
    More and more frequently, ScrumMasters and project managers are being asked to coach agile teams. But it's a challenging role. It requires new skills--as well as a subtle understanding of when to step in and when to step back. Migrating from "command and control" to agile coaching requires a whole new mind-set. In Coaching Agile Teams, Lyssa Adkins gives agile coaches the insights they need to adopt this new mind-set and to guide teams to extraordinary performance in a re-energized work environment. You'll gain a deep view into the role of the agile coach, discover what works and what doesn't, and learn how to adapt powerful skills from many allied disciplines, including the fields of professional coaching and mentoring. Coverage includes Understanding what it takes to be a great agile coach Mastering all of the agile coach's roles: teacher, mentor, problem solver, conflict navigator, and performance coach Creating an environment where self-organized, high-performance teams can emerge Coaching teams past cooperation and into full collaboration Evolving your leadership style as your team grows and changes Staying actively engaged without dominating your team and stunting its growth Recognizing failure, recovery, and success modes in your coaching Getting the most out of your own personal agile coaching journey Whether you're an agile coach, leader, trainer, mentor, facilitator, ScrumMaster, project manager, product owner, or team member, this book will help you become skilled at helping others become truly great. What could possibly be more rewarding?

The Invisible Computer: Why Good Products Can Fail, the Personal Computer Is So Complex, and Information Appliances Are the Solution


Donald A. Norman - 1998
    Alas, the computer industry thinks it is still in its rebellious teenage years, exulting in technical complexity. Customers want change. They are ready for products that offer convenience, ease of use, and pleasure. The technology should be invisible, hidden from sight.In this book, Norman shows why the computer is so difficult to use and why this complexity is fundamental to its nature. The only answer, says Norman, is to start over again, to develop information appliances that fit people's needs and lives. To do this companies must change the way they develop products. They need to start with an understanding of people: user needs first, technology last--the opposite of how things are done now.

Architecture Patterns with Python: Enabling Test-Driven Development, Domain-Driven Design, and Event-Driven Microservices


Harry Percival - 2020
    Many Python developers are now taking an interest in high-level software architecture patterns such as hexagonal/clean architecture, event-driven architecture, and strategic patterns prescribed by domain-driven design (DDD). But translating those patterns into Python isn't always straightforward.With this practical guide, Harry Percival and Bob Gregory from MADE.com introduce proven architectural design patterns to help Python developers manage application complexity. Each pattern is illustrated with concrete examples in idiomatic Python that explain how to avoid some of the unnecessary verbosity of Java and C# syntax. You'll learn how to implement each of these patterns in a Pythonic way.Architectural design patterns include:Dependency inversion, and its links to ports and adapters (hexagonal/clean architecture)Domain-driven design's distinction between entities, value objects, and aggregatesRepository and Unit of Work patterns for persistent storageEvents, commands, and the message busCommand Query Responsibility Segregation (CQRS)Event-driven architecture and reactive microservices

Java Se8 for the Really Impatient: A Short Course on the Basics


Cay S. Horstmann - 2013
    The addition of lambda expressions (closures) and streams represents the biggest change to Java programming since the introduction of generics and annotations. Now, with Java SE 8 for the Really Impatient , internationally renowned Java author Cay S. Horstmann concisely introduces Java 8's most valuable new features (plus a few Java 7 innovations that haven't gotten the attention they deserve). If you're an experienced Java programmer, Horstmann's practical insights and sample code will help you quickly take advantage of these and other Java language and platform improvements. This indispensable guide includes Coverage of using lambda expressions (closures) to write computation "snippets" that can be passed to utility functions The brand-new streams API that makes Java collections far more flexible and efficient Major updates to concurrent programming that make use of lambda expressions (filter/map/reduce) and that provide dramatic performance improvements for shared counters and hash tables A full chapter with advice on how you can put lambda expressions to work in your own programs Coverage of the long-awaited introduction of a well-designed date/time/calendar library (JSR 310) A concise introduction to JavaFX, which is positioned to replace Swing GUIs, and to the Nashorn Javascript engine A thorough discussion of many small library changes that make Java programming more productive and enjoyable This is the first title to cover all of these highly anticipated improvements and is invaluable for anyone who wants to write tomorrow's most robust, efficient, and secure Java code.

Hibernate in Action


Christian Bauer - 2004
    Why is this open-source tool so popular? Because it automates a tedious task: persisting your Java objects to a relational database. The inevitable mismatch between your object-oriented code and the relational database requires you to write code that maps one to the other. This code is often complex, tedious and costly to develop. Hibernate does the mapping for you.Not only that, Hibernate makes it easy. Positioned as a layer between your application and your database, Hibernate takes care of loading and saving of objects. Hibernate applications are cheaper, more portable, and more resilient to change. And they perform better than anything you are likely to develop yourself."Hibernate in Action" carefully explains the concepts you need, then gets you going. It builds on a single example to show you how to use Hibernate in practice, how to deal with concurrency and transactions, how to efficiently retrieve objects and use caching.The authors created Hibernate and they field questions from the Hibernate community every day-they know how to make Hibernate sing. Knowledge and insight seep out of every pore of this book."What's Inside"- ORM concepts- Getting started- Many real-world tasks- The Hibernate application development process