Mock objects are simulated objects that mimic the behavior of real objects in controlled ways. Because many code modules interact with external entities-things like databases, networks, file systems, third-party frameworks, and even the clock-these entities often cause us big-time trouble during unit testing. These entities can slow down our unit tests, produce unpredictable results, and have dangerous side effects. The best unit tests are decoupled from these external entities. Rather than try to control the entities, you can create mock objects to simulate their functionality. With a tangible example in the form of a short play, Rob Myers introduces mock objects and provides a brief history of their "relatives"-stubs and fakes. Then, with an animated, nearly-worst-case example, Rob presents code he developed to "mock out" nasty dependencies and create safe, predictable unit tests.
Although usability and user experience may seem synonymous, they are separate and much different concepts. While usability is well defined in standards, UX has no agreed upon definition because it relates to a more nebulous attribute-user satisfaction. Both are, however, key ingredients for successful system deployment. Because they don’t know how to measure and evaluate UX, many teams ignore this important attribute until the end of development. Philip Lew discusses how to model both usability and UX by breaking each attribute down into measurable characteristics-learnability, user effectiveness, user efficiency, content quality, user errors, and more. Phil shows you how to derive measurements and metrics that your development and team can employ to benchmark, analyze, and improve both usability and UX.
As developers, we've created heuristics that help us build robust systems and employed test-driven development (TDD) to improve code design and counter instability. Yet object-oriented development principles and TDD have failed to gain traction in the database world. That’s because database development involves an additional driving force-the data. Max Guernsey shows how to treat databases as objects with classes of their own-rather than as containers of objects-and how to drive database designs from tests. He illustrates a way to give these database classes the ability to upgrade old data without introducing undue risk. Max also shares how to apply good object-oriented design principles to database classes and how to enforce semantic connections between databases and clients.
Mobile application development shares many similarities-and some stark differences-with traditional web-based development. To build, test, and deploy five-star mobile applications, your organization needs-from inception-a focused test strategy to drive quality. Employing the wrong approaches and tools can leave your business sponsors and clients wondering what went wrong. Will Hurley outlines the current mobile landscape and explains what can and cannot be controlled in the mobile lifecycle. He explores the current landscape and limitations on tools for testing mobile apps, and offers guidance on what-and what not to-automate. With Will's guidance, you’ll learn how to establish a mobile lifecycle test strategy that is both leading edge and practical.
Will Hurley, Will Hurley - Quality and Security Services
Software development organizations adopting Scrum have struggled to apply it to big projects with multiple teams. Dan Rawsthorne is frequently asked, “What does ‘big’ Scrum look like?” Because no two organizations are alike, this simple question does not have a simple answer. However, Dan has discovered patterns that are common in organizations that successfully implement “big” scrum. The first pattern he explores-Product Owner Team-allows the organization to handle agility up and down the hierarchy. Dan also discusses the Cross-cutting Teams pattern that handles issues-architecture, usability, integration, performance, and evaluation-that the formal hierarchy can’t resolve. Finally, Dan discusses the BuddyUp pattern to describe the best way to work with subject matter experts from dispersed parts of the organization.
Although “agile architecture” may sound like an oxymoron to you, the reality is that a simple, elegant architecture is a key enabler of any successful system, particularly large scale ones. Scott Ambler describes agile architecture practices-at both the project and enterprise level-that form a middle ground between the extremes of big architecture up-front and outright hacking. Scott discusses agile modeling practices-initial architecture envisioning, proving an architecture with working code, and just-in-time model storming-that enable agile teams to benefit from architectural modeling without suffering the drawbacks of detailed design documentation. Beyond architecture, Scott introduces agile design techniques-continuous integration (CI), test-driven development (TDD), and refactoring-that build on and provide feedback to an emergent architecture.
The question of how much design to do up-front on a project is an engaging conundrum. Too much design often results in excess complexity and wasted effort. Too little design results in a poor architecture or insufficient system structures which require expensive rework and hurt more in the long run. How can we know the right balance of upfront design work versus emerging design approaches? Alan Shalloway shows how to use design patterns-coupled with the attitude from agile of “don’t build what you don’t need”-to guide your design efforts. The trick is to identify potential design alternatives, analyze how each may affect the system in the future, and then find the simplest approach for isolating those potential affects.
The cloud has rapidly gone from “that thing I should know something about” to the “centerpiece of our five-year corporate IT strategy.” However, cloud computing is still in its infancy. The marketing materials ignore or gloss over the many risks present today in the cloud-data loss, security leaks, gaps in availability, migration costs, and more. Ken Johnston and Seth Eliot share new research on the successful migrations of corporate IT and web-based companies to the cloud. They lay out the risks to consider and explore the rewards the cloud has to offer when companies employ sound architecture and design approaches. Discover the foibles of poor architecture and design and how to mitigate these challenges through a novel Test Oriented Architecture (TOA) framework.
Mobile application development introduces additional complexity when compared to building traditional applications. In order to successfully develop and deploy mobile applications, it is essential to account for variability in networks, service providers, devices, operating systems, and browsers. Todd DeCapua shares practices for successfully navigating this complexity while preserving both speed-to-market and application performance. Outlining a new approach to the agile development-test-deploy cycle for mobile, Todd demonstrates how to integrate functional testing and performance engineering throughout the application lifecycle and establish a new level of cooperation among test, development, and operations.