I'm trying to learn more about software testing, so I want to know what are the suggested books on this topic
The art of Software Testing is a time honoured classic that is very good.
The testing chapters of Code Complete by Steve McConnell are excellent.
Chapter 5 of Microsoft Secrets is really good for understanding how the daily build works. (But his is getting hard to find now)
How we test software at Microsoft is also a good title.
Cem Kaner, James Bach, Bret Pettichord: Lessons Learned in Software Testing. This should be on any tester's desk - it's a set of 293 short pieces about different aspects of testing, from testing techniques to automation, to documenting your testing, to managing your career. It's probably the book that gets picked up most by colleagues (well, ok, the Manga Guide to Databases might just beat it, but that has the unfair advantage of being a technical book with a picture of a fairy on the front).
Jerry Weinberg: Perfect Software: and other illusions about testing. This is the book you want to get your project manager to read. Weinberg nails so many misconceptions that people have about what testing is, and what it can do for the project.
Lisa Crispin, Janet Gregory: Agile Testing: A Practical Guide for Testers and Agile Teams. If you're working on an Agile team, you'll want to read this.
Lee Copeland: A Practitioner's Guide to Software Test Design is the book to read on test design.
I initially answered this question by listing a bunch of books related to software testing including many of those mentioned above like Lesson's Learned in Software Testing by James Bach, et. al and How to Break Web Software by James Whittaker, et. al.
I've found some better references to software testing books, including those to start and continue reading throughout your career.
Software testing expert James Bach has a growing list of books on his Tester's Bookshelf that are worth looking at: http://www.librarything.com/catalog/satisfice/testersbookshelf
Michael Bolton has lists some of his books: http://www.librarything.com/catalog/MichaelBolton
I hope this helps give people plenty of ideas for books.
Foundations of Software Testing ISTQB Certification by Rex Black is also a very good book for starting with Software Testing, especially who seek to get certified as CTFL (Certified Tester Foundation Level) from ISTQB (International Software Testing Qualifications Board). This books contains all the basic stuff required for starting carrier in Software Testing and Quality Assurance. While this is good for beginners in Manual Testing, for Performance testers there is another good book The Art of Application Performance Testing by Ian Molyneaux, this books will clear the concepts of Performance Testing like:
- What is Performance testing?
- Why is it required?
- Why most Testers/organizations fails to achieve and implement performance testing and NFRs?
- Performance Planning and Execution
For more deep dive knowledge of software testing and quality, you can refer 'Advanced Software Testing' by Rex Black, it helps in preparation of Advance level certifications of ISTQB
I am about half way through one of the recommended readings above. Agile Testing: A Practical Guide For Testers and Agile Teams and i must say it has helped our company in so many different ways. Not only that but my growth as a SQA lead has grown ten fold with its help. Would recommend it to anyone with a little QA under their belt.
I have fork some collection of software testing book awhile ago. Give look of the index.
- Software testing theory
- Standards in software testing
- Testing of Free and OpenSource Software
- Testing with different programming languages
- Testing Tools
Since I am still new and my reputation still low, I cant post more that 2 link. But you can check all the book and ebook link at my github repo files HERE
"Beautiful Testing" is a great book for both beginners and practitioners.
You can read one whole chapter for free here: http://www.johndcook.com/Beautiful_Testing_ch10.pdf
This chapter talks about testing random number generator (RNG).
Tests for evaluating RNGs can exhibit complexity as well as unifying order. Such tests are beautiful by the classical definition of beauty. RNGs are complex because they are deterministic programs that must give the illusion of being nondeterministic. Tests of RNGs are at least as complex as the generators they validate. These tests are complex because we can seldom say anything absolute about how the RNG should behave. We have to be content with statements about how they should usually behave.
From Amazon's product page:
Beautiful Testing offers 23 essays from 27 leading testers and developers that illustrate the qualities and techniques that make testing an art. Through personal anecdotes, you'll learn how each of these professionals developed beautiful ways of testing a wide range of products -- valuable knowledge that you can apply to your own projects.
Excerpt from a review by Michael Larsen in Amazon:
Chapter 1 : Was It Good for You? (Linda Wilkinson)
This chapter leads off the book and gives a great introduction to the mindset of a tester, and the reason and rationale they use to help a company get the most out of their software development time. It makes a clear case that "not just anyone can test" (or at least not do so and do it well), and it helps identify the areas testers really care about.
Chapter 2 : Beautiful Testing Satisfies Stakeholders (Rex Black)
There are many stakeholders that have a say and a personal vested interest in our testing being done well and providing a lot of information to help make good decisions. Those stakeholders range from customers, vendors and users, but also include such entities as law enforcement, elected officials, company shareholders and all of the other key contributors to any project (PM's, developers, software developers, and yes, even our fellow testers).
Chapter 3 : Building Open Source QA Communities (Martin Schröder & Clint Talbert)
Using the example of Open Source projects, getting a community involved in the efforts will help get people excited about applications and give those who are part of that community a desire and drive to see it succeed. My own experience with this has been with the Selenium Users Group here in San Francisco. While I find using the tool itself to be interesting, getting involved with and getting to know others that are also actively involved gives me extra energy and motivation to learn and practice more so I can likewise share with the broader community.
Chapter 4 : Collaboration Is the Cornerstone of Beautiful Performance Testing (Scott Barber)
Scott shares some of his insights into the development of his approach to performance testing, and the idea that performance testing challenges can be tackled via collaboration with other groups.
Chapter 5 : Just Peachy: Making Office Software More Reliable with Fuzz Testing (Kamran Khan)
Fuzzing is described as a technique where deliberately corrupt data is entered into your application to see how the system reacts to the inputs (for good or ill). Kamran uses Excel as an example application and demonstrates using tools that fuzz input and data values.
Chapter 6 : Bug Management and Test Case Effectiveness (Emily Chen & Brian Nitz)
Emily and Brian share bug management techniques and methods defining defects as relates to their involvement with Bugzilla and the OpenSolaris Desktop development team.
Chapter 7 : Beautiful XMPP Testing (Remko Tronçon)
Remko walks through examples and issues faced with testing the Extensible Messaging and Presence Protocol (XMPP) and describes his approach to creating Unit Tests for testing protocol interactions.
Chapter 8 : Beautiful Large-Scale Test Automation (Alan Page)
Alan walks the user through an example of test automation on a grand scale, and shows that many of the approaches and methods that are used for small scale automation projects work the same way for large automation, but the scale is totally different. This chapter helps a lot in showing neophyte testers that the steps from one world to another need not be so scary.
Chapter 9 : Beautiful Is Better Than Ugly (Neal Norwitz, Michelle Levesque & Jeffrey Yasskin)
Python has made its way from an interesting yet obscure language back in the 90's to becoming one of the go-to languages of the web and testing today. Testing an entire development scripting language puts a whole new area and emphasis on testing and stability.
Chapter 10 : Testing a Random Number Generator (John D. Cook)
Here's a great example of taking an application that can be tested in a number of ways, and the correctness or incorrectness can be difficult to pin down.
Chapter 11 : Change-Centric Testing (Murali Nandigama)
Murali demonstrates a call system and makes the case that, instead of testing everything over and over again, make a series of tests that will focus on the change. By using a change-centric testing approach, the number of tests run nightly can be reduced dramatically.
Chapter 12 : Software in Use (Karen N. Johnson)
Karen describes the feeling and the responsibility of testing equipment that works in a Hospital's Intensive Care Unit, the very definition of Mission Critical. This one hit close to home, as it described a situation my Dad (a retired physician) faced a number of years ago with a program and a glitch that almost cost patient's lives in an infant ICU. Karen describes the process, ups and downs, and resolutions related to, in her words, working on a product that really matters.
Chapter 13 : Software Development Is a Creative Process (Chris McMahon)
Chris makes the case (and a really compelling one) that developing and testing software is artistic work. Evaluating software quality is evaluating art, and that, when we recognize the artistic aspect of creating software, Beautiful Testing becomes a reality.
Chapter 14 : Test-Driven Development: Driving New Standards of Beauty (Jennitta Andrea)
Jeanette introduces the idea of the Diderot Effect and relays it to test driven development and the unintended consequences of upgrading just one area of a process and thinking that it's all done. To embrace the beauty of TDD, all aspects of the role and purpose of testing and embracing TDD have to be applied. Requirements, system design, he very act of writing code, the pace of work and the level of engagement of the testers involved all face changes when TDD becomes part of the landscape.
Chapter 15 : Beautiful Testing As the Cornerstone of Business Success (Lisa Crispin)
Anyone familiar with Agile Testing will notice the Mind-map that leads off everything, and gives a clear picture of the ideas that Lisa wishes to impart. The take away is clear, testing is part of the overall process of development, and testing is a process at every stage of development. Testing drives development, and development is not complete until tested.
Chapter 16 : Peeling the Glass Onion at Socialtext (Matthew Heusser)
Matt makes the point that, in mathematics, often the simplest solution is the most beautiful solution, and the same holds true for testing. Through examples at Matt's company, Socialtext, he shows how they do not just test to show that they have done testing, but that the solution they have developed fits what their customers want to see.
Chapter 17 : Beautiful Testing Is Efficient Testing (Adam Goucher)
Efficiency and focusing on how to get the best bang for your buck requires setting some parameters, using some tools to help focus on the goal, and making a mindmap to capture test ideas and methods. Adam uses the mnemonic SLIME to help organize his approach ((Security, Languages, RequIrements, Measurement, Existing).
Chapter 18 : Seeding Bugs to Find Bugs: Beautiful Mutation Testing (Andreas Zeller & David Schuler)
Andreas and David discuss the idea of mutation tests, and the tool Javalanche to perform those tests.
Chapter 19 : Reference Testing As Beautiful Testing (Clint Talbert)
An inside look at how Mozilla tests the variety of products in the Mozilla portfolio, and how they create tests and their reference points. Their goal is to encourage people to get involved and test in the way that is the most simple, direct and easy to understand way possible.
Chapter 20 : Clam Anti-Virus: Testing Open Source with Open Tools (Tomasz Kojm)
A look under the hood at an open source product (Clam Anti-Virus, a tool I actively use and wholeheartedly endorse, by the way) , and all of the open source tools used to test it, along with the testing strategies used.
Chapter 21 : Web Application Testing with Windmill (Adam Christian)
Adam provides a quick tutorial in how to set up and use the Windmill web testing tool and a quick way to implement automated testing for web applications.
Chapter 22 : Testing One Million Web Pages (Tim Riley)
Tim describes the Spider and Sisyphus projects at Mozilla and how they use the framework to test huge numbers of pages and web sites.
Chapter 23 : Testing Network Services in Multimachine Scenarios (Isaac Clerencia)
Isaac describes the ANSTE test tool and how it is used at his company, eBox, to test environments with multiple and varying machines.
All author royalties will be donated to the Nothing But Nets campaign to save lives by preventing malaria, a disease that kills millions of children in Africa each year.
'The' book which changed my outlook and multiplied my respect for Software testing, book by Boris Beizer.Software Testing Techniques
I am surprised, nobody suggested this classic gem which opened my eyes and changed the view that software testing can be done so rigorously in pure scientific manner.