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.
Test execution automation is often seen as a technical challenge-a matter of applying the right technology, tools, and smart programming talent. However, such efforts and projects often fail to meet expectations with results that are difficult to manage and maintain-especially for large and complex systems. Hans Buwalda describes how the choices you make for designing tests can make-or break-a test automation project. Join Hans to discover why good automated tests are not the same as the automation of good manual tests and how to break down tests into modules-building blocks-in which each has a clear scope and purpose. See how to design test cases within each module to reflect that module's scope and nothing more. Hans explains how to tie modules together with a keyword-based test automation framework that separates the automation details from the test itself to enhance maintainability and improve ROI.
Using an analogy to the building codes followed by architects and contractors in the construction of buildings, Rick Spiewak explores the fundamental principles for developing and delivering high quality, mission-critical systems. Just as buildings are constructed using different materials and techniques, we use a variety of languages, methodologies, and tools to develop software. Although there is no formal "building code" for software, software projects should consider-and judiciously apply-the recognized "best" practices of static analysis, automated unit testing, code re-use, and peer reviews. Rick takes you on a deep dive into each of these techniques where you'll learn about their advantages, disadvantages, costs, challenges, and more.
Cloud computing is here to stay-and it is changing the way we test software. Cloud-based testing offers flexible, scalable, and on-demand infrastructure services. And as a bonus, because the cloud offers pay-per-use purchasing options, cloud-based testing usually costs less. Tauhida Parveen describes the concept of cloud-based testing: scope, specific requirements, benefits, and drawbacks. She explains how cloud-based testing brings new capabilities and options for your testing activities-instantly creating and dismantling test environments and miming production environments in early testing. Tauhida discusses how to engineer scalable environments for load, stress, and performance testing. Then, she introduces cloud-based compatibility, cross-browser, and cross-platform testing opportunities you can exploit.
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
If your software product is recompiled and integrated frequently, you can improve your testing by integrating automated tests into your continuous integration process. In many organizations, unit tests are run as part of continuous integration; however, that is not enough. During the continuous integration cycle, integration of all automated tests-system, integration, unit, and regression-is vital to help find defects quickly and provide a substantial return on investment. Ayal Cohen and Roi Carmel describe the types of tests needed, the pros and cons of each type, and how to choose which tests to execute according to development code change, business criticality, and history of execution. Ayal and Roi discuss the need for service virtualization so you can run your tests in an environment that has not yet been fully developed, providing virtual substitutes for the missing services.
Test-driven development (TDD) is a skill that takes patience to master-you can’t learn it reading a book. As with learning any new language, to gain fluency you need to practice TDD with competent coaching and lots of hard work. Many well-intentioned programmers try and finally give up on TDD because they never develop the fluency it requires. On stage, Llewellyn Falco leads a live TDD demonstration, talking through the process and microsteps of: (1) studying a feature, (2) creating an initial test, and (3) iteratively developing the related test code and feature code until the feature is completely programmed. Watch how to iteratively write a test, see it fail, and then write the feature code to make it pass. After explaining the theory behind the particular TDD technique used, Llewellyn leads participants in testing progressively more complex objects and scenarios.
The role of the software tester is continuing to evolve, becoming more complex and more technical. As new methodologies, technologies, and platforms emerge, testers are bombarded with new, so-called "best practices" on how to do their jobs. The problem is that testers have heard the same songs with different lyrics for more than twenty years now. Clint Sprauve takes a contrarian’s view of testing and the quality assurance industry. He examines some of today’s typical testing "best practices"-keyword-driven testing, requirements traceability, the tester’s role in agile development, quality reporting, tool expertise, and quality certification programs-while providing alternative approaches for how to view each practice.