Introducing Software Testing

Paperback (Print)
Used and New from Other Sellers
Used and New from Other Sellers
from $8.05
Usually ships in 1-2 business days
(Save 85%)
Other sellers (Paperback)
  • All (9) from $8.05   
  • New (2) from $88.93   
  • Used (7) from $8.05   
Close
Sort by
Page 1 of 1
Showing All
Note: Marketplace items are not eligible for any BN.com coupons and promotions
$88.93
Seller since 2008

Feedback rating:

(193)

Condition:

New — never opened or used in original packaging.

Like New — packaging may have been opened. A "Like New" item is suitable to give as a gift.

Very Good — may have minor signs of wear on packaging but item works perfectly and has no damage.

Good — item is in good condition but packaging may have signs of shelf wear/aging or torn packaging. All specific defects should be noted in the Comments section associated with each item.

Acceptable — item is in working order but may show signs of wear such as scratches or torn packaging. All specific defects should be noted in the Comments section associated with each item.

Used — An item that has been opened and may show signs of wear. All specific defects should be noted in the Comments section associated with each item.

Refurbished — A used item that has been renewed or updated and verified to be in proper working condition. Not necessarily completed by the original manufacturer.

New
0201719746 New. Looks like an interesting title!

Ships from: Naperville, IL

Usually ships in 1-2 business days

  • Standard, 48 States
  • Standard (AK, HI)
$175.00
Seller since 2014

Feedback rating:

(181)

Condition: New
Brand new.

Ships from: acton, MA

Usually ships in 1-2 business days

  • Standard, 48 States
  • Standard (AK, HI)
Page 1 of 1
Showing All
Close
Sort by

Overview

A step-by-step approach for getting started with testing tasks.

Software testing is an important stage in the software development process, as is illustrated by the growing market for testing tools. Independent testing and verification before the implementation of the system can help improve its quality and reliability and cut the overall costs of the project. Often a user of a new system is disappointed to find that all is not well with their new set up, and one of the most common reasons is that there has been insufficient testing to prove that a particular system will do precisely what was intended.

Managers are becoming aware of the need to test new products, though often the task of software testing is assigned to a programmer who, although he may have extensive programming experience, has not been trained to test software, and is suddenly expected to do so with a strict project deadline approaching. This book is intended to come to the rescue of such an IT professional. It gives an brief overview of testing, then in a practical way show how to develop test cases, covering aspects such as:

  • best practice documentation strategies, methods and standards; and
  • tips on handling the various requirements facing the tester, including fitness for use models and presenting the case for testing to your manager.


A number of real-life case studies are introduced in the early chapters and then used throughout as examples of how to put the methods presented into practice and proceed successfully with them. These include an Object-Oriented and a Web testing example. The book will also be structured to provide extensive references out to otherbooks in the testing area, to which the reader will be pointed to further develop his testing skills.



Read More Show Less

Product Details

  • ISBN-13: 9780201719741
  • Publisher: Addison-Wesley
  • Publication date: 5/28/2002
  • Pages: 281
  • Product dimensions: 7.38 (w) x 9.22 (h) x 0.64 (d)

Meet the Author

Louise Tamres is a US-based consultant with 16 years testing experience, including work for the US department of defence and General Motors. She holds the Certified Software Quality Engineer (CSQE) qualification, is on the committee for the International Conference on Testing Computer Software and has trained and mentored many fledgling testers.

Read More Show Less

Table of Contents

Introduction
Acknowledgments
1 Tackling the testing maze 1
2 Test Outlines 25
3 From test outline to test cases 59
4 Using tables and spreadsheets 73
5 Other types of tables 113
6 Testing object-oriented software 141
7 Testing web applications 161
8 Reducing the number of test cases 193
9 Creating quality software 213
10 Applying software standards to test documentation 231
11 Appendices 249
References 273
Index 277
Read More Show Less

Preface

The chaotic testing environment

A project is in panic mode and the deadline is rapidly approaching. Management starts to think about the need to test this product, having already missed some prime opportunities for improving software quality. One unfortunate programmer is assigned the task of software testing, which is often viewed as being transferred to purgatory. Needless to say, this poor hapless soul is given no guidance, and nobody in the organization is capable of providing any help. Despite the poor condition of requirements and other product documentation, the product is being built and it will be shipped. The task given to the tester is to minimize the surprises that could manifest themselves after the product is installed at customer sites. Under extreme pressure, this untrained tester is very inefficient and is at a loss how to begin. A clueless manager may even purchase testing tools, despite there being no useful tests to automate. This is the scenario that gives software testing a bad name.

Software testing is a specialized discipline requiring unique skills. Software testing is not intuitive; one must learn how to do it. Naïve managers erroneously think that any programmer can test software — if you can program, then you can test. This is the motivation behind this book: to provide a step-by-step approach for getting started with the testing effort.

Many fine books on software testing are available today. Those that do address test case design describe proven methods such as boundary value analysis, equivalence class partitioning, decision tables, syntax testing, cause–effect diagrams, data-flow methods, and other such concepts. Somenovice testers wonder how to weed though poor specifications, before even being able to apply these methods. Many texts state that good requirements are necessary for the test effort — assuming that requirements exist — yet I have not seen any that explain the transition from requirements to test cases. In the chaotic software development environment, adequate requirements are rarely provided, and if they are, their completeness and correctness are questionable. In a situation when no one has analyzed the requirements adequately, the burden falls on the tester to pursue requirements issues prior to defining any tests. It is often impossible to perform thorough testing, given the tight schedules and limited resources. It is possible, however, to make intelligent choices and maximize the effectiveness of the testing effort.

The goal is to learn how best to approach the testing tasks and eventually produce a workable test process for future projects.

The author's philosophy

To introduce the ideas on how to begin testing, I will work through several detailed examples, each containing defective "requirements". By definition, good requirements are testable and unambiguous. The fact that the sample requirements are deficient does not prevent useful test activities from occurring. I use the word "requirements" loosely and equate it with some sort of product description. While the sample test scenarios would not be permissible in a mature software organization, the work described will help the lone tester jumpstart the testing process under duress. The goal is to show that some product information, however deficient, can be used to start the testing effort.

I do not advocate working from poor requirements. Properly analyzing requirements corrects many deficiencies. Reviews and inspections have been proven to provide the most cost effective method for finding problems early in the development cycle. Many times, I have had to bite my tongue to avoid blurting out to project managers, "The requirements are absolute garbage and there's no way that we can begin a productive testing effort until you clean up your act." Actually, this phrase would contain unprintable language and be uttered under one's breath. We have undoubtedly all shared this fantasy, and the ugly truth is that despite this valid complaint, the product delivery deadline is fast approaching.

Although I do not advocate cutting corners, there are some shortcuts that will help document the testing activities. A crude list of tests is better than no list. The minimum you will have is a documented trail, though rudimentary, that records your testing effort should you need to prove or demonstrate what you did.

Subsequent testing efforts will improve on this initial work, producing test documents and developing a test process that is more in line with accepted practices. Incremental changes lead to successful process improvements.

Just knowing how to get started with testing is a feat in itself. The tester must understand how to transform product information into test cases; this is the book's chief goal. Many existing books do an outstanding job of explaining software testing concepts and methods. Rather than reiterate what others have written, I make many references to their work. This book is a primer on getting started. It supplements currently available literature on software testing by providing an introduction to known software testing techniques.

Intended audience

This book is aimed at several types of readers:

  • persons new to software testing who have no guidance or training;
  • managers or mentors, who may themselves be experienced testers, seeking ideas on how to provide guidance to novice testers;
  • experienced programmers who have been assigned testing tasks;
  • knowledgeable testers looking for new ideas.

While readers are not assumed to be knowledgeable about software testing concepts, they should be computer literate and able to use a word processor and spreadsheet.

Job descriptions

The general job description terms used throughout the book are as follows:

  • Tester: The person who defines and executes tests.
  • Developer: The person who produces the application, including the design, source code, and final product integration.
  • Project manager: The person with authority regarding schedules and staffing.
  • Project authority: The domain expert with authority to define and clarify the requirements.

I refer to these descriptive titles without implying an organization structure or employee reporting chain. Project staffing decisions and job responsibilities vary across organizations.

Depending on how the project is staffed, the tester could be either in the same or in a separate group from the developer. Other projects could require that the same person performs both development and testing tasks, thereby changing mindset in mid-project. Ideally, a trained software test e the testing activities. However, some projects simply assign the testing role to whichever person is available.

The project authority can be the marketing manager, company executive, or customer support liaison, provided that this person has full authority to define the project contents. This role is necessary to prevent further chaos. Someone must be in charge of deciding which features to incorporate into a product; lack of such control is a well-known cause of problems when trying to get bad requirement definitions sorted out.

Your organization may use different job titles than those listed above. The key point is to assign people to perform the necessary tasks — each of which requires specialized skills.

Mature and immature software development environments

The examples cited in this book, with their incomplete product information, are what one could expect to find in an immature software organization. I will refrain from critiquing the work environment and from preaching about software process improvement. The reality is that many companies operate under less than ideal conditions. Despite the lack of suitable software processes, products are still being developed and shipped to customers. Testing, however minimal, can still be done. With poor requirements, the tester spends more time identifying product definition deficiencies rather than proceeding with testing-related tasks.

A mature software organization displays the characteristics listed below. An immature organization often does not understand how the following points can improve product quality:

  • provide useful requirements and product descriptions;
  • conduct reviews and inspections;
  • have signoffs or checkpoints before proceeding to the next step;
  • mentor and train personnel;
  • schedule adequate time and resources for testing;
  • overlap testing and development activities;
  • provide defined software development and software testing processes;
  • enforce configuration management.

Testing is a responsibility shared with the rest of the development team. The old view of testing as an afterthought — design, code, and then you test — has never produced good testing results. The adversarial and destructive "developer vs tester" mentality has often resulted from the developers' ignorance about software testing activities — more proof that testing is a unique discipline. It is often the case that a tester often knows more about programming than a developer knows about software testing. A collaborative approach between testers and developers fosters goodwill and good communication. By working closely with the testers, many developers learn more about software testing, even if all the developers see is how their knowledge about the product filters into the test documentation. Effective software testing requires co-operation among all the members of a project.

Book overview

Chapter 1 deals with the unfortunate "you're new to testing, have no idea where to start, and the product ships Friday" nightmare. Hoping that your next project gives you more time to carry out testing activities, Chapter 2 illustrates the use of outlines, which is also a useful technique for analyzing requirements if no one else has done this task. Chapter 3 transforms the outline cases. Tables and spreadsheets are an integral tool used by software test engineers, and Chapter 4 shows several table formats and shortcuts for documenting test cases. Chapter 5 shows additional usages of tables. Applications built using object-oriented methods can use many of the same test design techniques outlined in the previous chapters. However, Chapter 6 describes some issues particular to testing object-oriented systems. Chapter 7 lists the challenges faced when testing web applications, although many of the strategies presented apply equally to client-server environments.

No uniform software testing method exists. Each example uses a different approach for producing tests. You may wonder why one method was used in one example instead of another. The answer is simple: I selected a method based on my experience. You may very well try a different approach that will be just as successful in your testing effort. Although the examples cover different types of applications, the core software testing themes apply equally to all examples, and some concepts are reiterated among all chapters. I recommend that you read through each scenario and not dismiss the subject simply because the example does not reflect your type of application.

By following the ideas and methods presented, you will have defined and documented many test cases. Chapter 8 will help you identify the most pertinent tests and thus reduce the necessary number of test cases to execute. Producing a set of test cases to execute is only part of the overall software testing picture. Chapter 9 lists other testing and quality related tasks that are necessary for producing quality software.

If this is the organization's first venture into methodical software testing, you will have established a good baseline. Although the work produced will be a vast improvement over prior chaotic efforts, it will fall short of satisfying, and conforming to, industry standards. Chapter 10 briefly describes some of the more common software engineering standards and how each affects the test case examples. Consider this a launching point for improving the testing effort.

Read More Show Less

Introduction

The chaotic testing environment

A project is in panic mode and the deadline is rapidly approaching. Management starts to think about the need to test this product, having already missed some prime opportunities for improving software quality. One unfortunate programmer is assigned the task of software testing, which is often viewed as being transferred to purgatory. Needless to say, this poor hapless soul is given no guidance, and nobody in the organization is capable of providing any help. Despite the poor condition of requirements and other product documentation, the product is being built and it will be shipped. The task given to the tester is to minimize the surprises that could manifest themselves after the product is installed at customer sites. Under extreme pressure, this untrained tester is very inefficient and is at a loss how to begin. A clueless manager may even purchase testing tools, despite there being no useful tests to automate. This is the scenario that gives software testing a bad name.

Software testing is a specialized discipline requiring unique skills. Software testing is not intuitive; one must learn how to do it. Naïve managers erroneously think that any programmer can test software — if you can program, then you can test. This is the motivation behind this book: to provide a step-by-step approach for getting started with the testing effort.

Many fine books on software testing are available today. Those that do address test case design describe proven methods such as boundary value analysis, equivalence class partitioning, decision tables, syntax testing, cause–effect diagrams, data-flow methods, and other suchconcepts. Some novice testers wonder how to weed though poor specifications, before even being able to apply these methods. Many texts state that good requirements are necessary for the test effort — assuming that requirements exist — yet I have not seen any that explain the transition from requirements to test cases. In the chaotic software development environment, adequate requirements are rarely provided, and if they are, their completeness and correctness are questionable. In a situation when no one has analyzed the requirements adequately, the burden falls on the tester to pursue requirements issues prior to defining any tests. It is often impossible to perform thorough testing, given the tight schedules and limited resources. It is possible, however, to make intelligent choices and maximize the effectiveness of the testing effort.

The goal is to learn how best to approach the testing tasks and eventually produce a workable test process for future projects.

The author's philosophy

To introduce the ideas on how to begin testing, I will work through several detailed examples, each containing defective "requirements". By definition, good requirements are testable and unambiguous. The fact that the sample requirements are deficient does not prevent useful test activities from occurring. I use the word "requirements" loosely and equate it with some sort of product description. While the sample test scenarios would not be permissible in a mature software organization, the work described will help the lone tester jumpstart the testing process under duress. The goal is to show that some product information, however deficient, can be used to start the testing effort.

I do not advocate working from poor requirements. Properly analyzing requirements corrects many deficiencies. Reviews and inspections have been proven to provide the most cost effective method for finding problems early in the development cycle. Many times, I have had to bite my tongue to avoid blurting out to project managers, "The requirements are absolute garbage and there's no way that we can begin a productive testing effort until you clean up your act." Actually, this phrase would contain unprintable language and be uttered under one's breath. We have undoubtedly all shared this fantasy, and the ugly truth is that despite this valid complaint, the product delivery deadline is fast approaching.

Although I do not advocate cutting corners, there are some shortcuts that will help document the testing activities. A crude list of tests is better than no list. The minimum you will have is a documented trail, though rudimentary, that records your testing effort should you need to prove or demonstrate what you did.

Subsequent testing efforts will improve on this initial work, producing test documents and developing a test process that is more in line with accepted practices. Incremental changes lead to successful process improvements.

Just knowing how to get started with testing is a feat in itself. The tester must understand how to transform product information into test cases; this is the book's chief goal. Many existing books do an outstanding job of explaining software testing concepts and methods. Rather than reiterate what others have written, I make many references to their work. This book is a primer on getting started. It supplements currently available literature on software testing by providing an introduction to known software testing techniques.

Intended audience

This book is aimed at several types of readers:

  • persons new to software testing who have no guidance or training;
  • managers or mentors, who may themselves be experienced testers, seeking ideas on how to provide guidance to novice testers;
  • experienced programmers who have been assigned testing tasks;
  • knowledgeable testers looking for new ideas.

While readers are not assumed to be knowledgeable about software testing concepts, they should be computer literate and able to use a word processor and spreadsheet.

Job descriptions

The general job description terms used throughout the book are as follows:

  • Tester: The person who defines and executes tests.
  • Developer: The person who produces the application, including the design, source code, and final product integration.
  • Project manager: The person with authority regarding schedules and staffing.
  • Project authority: The domain expert with authority to define and clarify the requirements.

I refer to these descriptive titles without implying an organization structure or employee reporting chain. Project staffing decisions and job responsibilities vary across organizations.

Depending on how the project is staffed, the tester could be either in the same or in a separate group from the developer. Other projects could require that the same person performs both development and t changing mindset in mid-project. Ideally, a trained software test engineer performs the testing activities. However, some projects simply assign the testing role to whichever person is available.

The project authority can be the marketing manager, company executive, or customer support liaison, provided that this person has full authority to define the project contents. This role is necessary to prevent further chaos. Someone must be in charge of deciding which features to incorporate into a product; lack of such control is a well-known cause of problems when trying to get bad requirement definitions sorted out.

Your organization may use different job titles than those listed above. The key point is to assign people to perform the necessary tasks — each of which requires specialized skills.

Mature and immature software development environments

The examples cited in this book, with their incomplete product information, are what one could expect to find in an immature software organization. I will refrain from critiquing the work environment and from preaching about software process improvement. The reality is that many companies operate under less than ideal conditions. Despite the lack of suitable software processes, products are still being developed and shipped to customers. Testing, however minimal, can still be done. With poor requirements, the tester spends more time identifying product definition deficiencies rather than proceeding with testing-related tasks.

A mature software organization displays the characteristics listed below. An immature organization often does not understand how the following points can improve product quality:

  • provide useful requirements and product descriptions;
  • conduct reviews and inspections;
  • have signoffs or checkpoints before proceeding to the next step;
  • mentor and train personnel;
  • schedule adequate time and resources for testing;
  • overlap testing and development activities;
  • provide defined software development and software testing processes;
  • enforce configuration management.

Testing is a responsibility shared with the rest of the development team. The old view of testing as an afterthought — design, code, and then you test — has never produced good testing results. The adversarial and destructive "developer vs tester" mentality has often resulted from the developers' ignorance about software testing activities — more proof that testing is a unique discipline. It is often the case that a tester often knows more about programming than a developer knows about software testing. A collaborative approach between testers and developers fosters goodwill and good communication. By working closely with the testers, many developers learn more about software testing, even if all the developers see is how their knowledge about the product filters into the test documentation. Effective software testing requires co-operation among all the members of a project.

Book overview

Chapter 1 deals with the unfortunate "you're new to testing, have no idea where to start, and the product ships Friday" nightmare. Hoping that your next project gives you more time to carry out testing activities, Chapter 2 illustrates the use of outlines, which is al analyzing requirements if no one else has done this task. Chapter 3 transforms the outline contents into test cases. Tables and spreadsheets are an integral tool used by software test engineers, and Chapter 4 shows several table formats and shortcuts for documenting test cases. Chapter 5 shows additional usages of tables. Applications built using object-oriented methods can use many of the same test design techniques outlined in the previous chapters. However, Chapter 6 describes some issues particular to testing object-oriented systems. Chapter 7 lists the challenges faced when testing web applications, although many of the strategies presented apply equally to client-server environments.

No uniform software testing method exists. Each example uses a different approach for producing tests. You may wonder why one method was used in one example instead of another. The answer is simple: I selected a method based on my experience. You may very well try a different approach that will be just as successful in your testing effort. Although the examples cover different types of applications, the core software testing themes apply equally to all examples, and some concepts are reiterated among all chapters. I recommend that you read through each scenario and not dismiss the subject simply because the example does not reflect your type of application.

By following the ideas and methods presented, you will have defined and documented many test cases. Chapter 8 will help you identify the most pertinent tests and thus reduce the necessary number of test cases to execute. Producing a set of test cases to execute is only part of the overall software testing picture. Chapter 9 lists other testing and quality related tasks that are necessary for producing quality software.

If this is the organization's first venture into methodical software testing, you will have established a good baseline. Although the work produced will be a vast improvement over prior chaotic efforts, it will fall short of satisfying, and conforming to, industry standards. Chapter 10 briefly describes some of the more common software engineering standards and how each affects the test case examples. Consider this a launching point for improving the testing effort.



Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star

(0)

4 Star

(0)

3 Star

(0)

2 Star

(0)

1 Star

(0)

Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation

Reminder:

  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

 
Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously
Sort by: Showing 1 Customer Reviews
  • Anonymous

    Posted September 4, 2002

    A Good Overall Treatment of Software Testing

    This is a good treatment of many techniques that have been successfully used by testers over the years. This book has a good philosophy behind it that says requirements and processes are important in testing. However, the book presents the information in a way that people in organizations that may not have firmly defined requirements or processes can still easily apply the techniques described in the book. There was a lot for me to like about this book. First, there is a wide coverage of test and test-related topics. There are many topics in software testing ¿ just go to a testing conference to see some of the possibilities. Tamres does a good job in covering the major topics in a way that leaves the reader with an understanding of what¿s needed for software testing. Second, this book is appropriate for testers at all levels. Although the title is ¿Introducing Software Testing,¿ I would not dismiss it too quickly as being a book just for beginners. I have been a full-time tester and trainer in testing for 14 years and still learned valuable things from this book. Third, I never left any topic asking ¿why?¿ or ¿how?¿. The level of detail is a good balance between readability and having enough detail to explain the topics. For every topic, there are multiple examples of how to apply the techniques described in the book. These examples show realistic ways the techniques would be applied in an actual project. Finally, the book is based on proven and practical techniques. The techniques shown in the book are the same ones that testers have been using for many years, but having them in one book is a great thing. The techniques are easy to understand and apply. I¿m all for creative and new techniques for testing, but for foundational approaches that have been proven to work and to scale for large projects, I like to keep firmly grounded in good practices. I can highly recommend this book to anyone in testing, whether you are the poor soul that has been assigned to test your company¿s latest project and know nothing about testing, or if you are a test manager looking for a resource to build your team¿s skills. This book covers the major topics in testing in a way that promotes process-driven and requirements-based project structures, but the techniques can be used in any project environment. This is a must-have book for your technical bookshelf.

    Was this review helpful? Yes  No   Report this review
Sort by: Showing 1 Customer Reviews

If you find inappropriate content, please report it to Barnes & Noble
Why is this product inappropriate?
Comments (optional)