In this tutorial you will learn about Auditing Software Testing Process - Introduction, Types of Testing Process Audits, Audit to verify compliance, Audit for process improvement/problem solving,
Audit for Root Cause Analysis, Internal Audits, External Audits, Why Audit Software Testing Process? How to Audit, What can be audited? and Summary.
In this tutorial you will learn about Challenges in Testing Web Based Applications Introduction, Why testing Web Applications is different? Factors effecting Testing of Web Applications, Why technology platforms affect testing? Challenges in Testing Web Based Web Applications, Summary.
Handbook of Walkthroughs, Inspections, and Technical Reviews: Evaluating Programs, Projects, and Products,
by Daniel P. Freedman and Gerald M. Weinberg
Effective Methods for Software Testing, by William Perry (John Wiley and Sons, 1995).
Software Testing in the Real World : Improving the Process by Edward Kit
Testing Applications on the Web by Hung Q. Nguyen (John Wiley and Sons, 2000)
Testing Computer Software, by Cem Kaner, Jack Falk, Hung Q. Nguyen
Testing Object-Oriented Systems: Models, Patterns, and Tools by Robert V. Binder
Download Excel templates to create Test Cases at
http://www.mavericksoftwareconsulting.co
Manual Testing FAQ's and Resourceful URL's
http://www.softwareqatest.com/qatfaq1.ht
http://www.quexst.com/Sub/Career/FAQs.ht
www.sqatester.com
In this tutorial you will learn about unit testing, various levels of testing, various types of testing based upon the intent of testing, How does Unit Testing fit into the Software Development Life Cycle? Unit Testing Tasks and Steps, What is a Unit Test Plan? What is a Test Case? and Test Case Sample, Steps to Effective Unit Testing.
There are various levels of testing:
- Unit Testing
- Integration Testing
- System Testing
There are various types of testing based upon the intent of testing such as:
- Acceptance Testing
- Performance Testing
- Load Testing
- Regression Testing
Based on the testing Techniques testing can be classified as:
- Black box Testing
- White box Testing
How does Unit Testing fit into the Software Development Life Cycle?
This is the first and the most important level of testing. As soon as the programmer develops a unit of code the unit is tested for various scenarios. As the application is built it is much more economical to find and eliminate the bugs early on. Hence Unit Testing is the most important of all the testing levels. As the software project progresses ahead it becomes more and more costly to find and fix the bugs.
In most cases it is the developer’s responsibility to deliver Unit Tested Code.
Unit Testing Tasks and Steps:
Step 1: Create a Test Plan
Step 2: Create Test Cases and Test Data
Step 3: If applicable create scripts to run test cases
Step 4: Once the code is ready execute the test cases
Step 5: Fix the bugs if any and re test the code
Step 6: Repeat the test cycle until the “unit” is free of all bugs
What is a Unit Test Plan?
This document describes the Test Plan in other words how the tests will be carried out.
This will typically include the list of things to be Tested, Roles and Responsibilities, prerequisites to begin Testing, Test Environment, Assumptions, what to do after a test is successfully carried out, what to do if test fails, Glossary and so on
What is a Test Case?
Simply put, a Test Case describes exactly how the test should be carried out.
For example the test case may describe a test as follows:
Step 1: Type 10 characters in the Name Field
Step 2: Click on Submit
Test Cases clubbed together form a Test Suite
Test Case Sample
Test Case ID | Test Case Description | Input Data | Expected Result | Actual Result | Pass/Fail | Remarks |
|
|
|
|
|
|
|
Additionally the following information may also be captured:
a) Unit Name and Version Being tested
b) Tested By
c) Date
d) Test Iteration (One or more iterations of unit testing may be performed)
Steps to Effective Unit Testing:
1) Documentation: Early on document all the Test Cases needed to test your code. A lot of times this task is not given due importance. Document the Test Cases, actual Results when executing the Test Cases, Response Time of the code for each test case. There are several important advantages if the test cases and the actual execution of test cases are well documented.
a. Documenting Test Cases prevents oversight.
b. Documentation clearly indicates the quality of test cases
c. If the code needs to be retested we can be sure that we did not miss anything
d. It provides a level of transparency of what was really tested during unit testing. This is one of the most important aspects.
e. It helps in knowledge transfer in case of employee attrition
f. Sometimes Unit Test Cases can be used to develop test cases for other levels of testing
2) What should be tested when Unit Testing: A lot depends on the type of program or unit that is being created. It could be a screen or a component or a web service. Broadly the following aspects should be considered:
a. For a UI screen include test cases to verify all the screen elements that need to appear on the screens
b. For a UI screen include Test cases to verify the spelling/font/size of all the “labels” or text that appears on the screen
c. Create Test Cases such that every line of code in the unit is tested at least once in a test cycle
d. Create Test Cases such that every condition in case of “conditional statements” is tested once
e. Create Test Cases to test the minimum/maximum range of data that can be entered. For example what is the maximum “amount” that can be entered or the max length of string that can be entered or passed in as a parameter
f. Create Test Cases to verify how various errors are handled
g. Create Test Cases to verify if all the validations are being performed
3) Automate where Necessary: Time pressures/Pressure to get the job done may result in developers cutting corners in unit testing. Sometimes it helps to write scripts, which automate a part of unit testing. This may help ensure that the necessary tests were done and may result in saving time required to perform the tests.
Summary:
“Unit Testing” is the first level of testing and the most important one. Detecting and fixing bugs early on in the Software Lifecycle helps reduce costly fixes later on. An Effective Unit Testing Process can and should be developed to increase the Software Reliability and credibility of the developer. The Above article explains how Unit Testing should be done and the important points that should be considered when doing Unit Testing.
Many new developers take the unit testing tasks lightly and realize the importance of Unit Testing further down the road if they are still part of the project. This article serves as a starting point for laying out an effective (Unit) Testing Strategy.
Technical Terms Used in Testing World
In this tutorial you will learn about technical terms used in testing world, from Audit, Acceptance Testng to Validation, Verification and Testing.
| ||||||||||||
When I am staffing a test team, I look for testers with genuine skills—both testing skills and soft skills. Neither of these are straightforward or easy to find or evaluate, especially within the time constraints of an interview.
Beyond skills, I look for people with the right qualities of mind. For me, these include:
- Real enthusiasm for testing
- Judgment
- Analytical ability
- Creativity and problem-solving skills
- Critical intelligence: curiosity and skepticism
So I try to engage candidates in conversations that make them think. I work to move people away from their prepared answers to a conversational territory where they will reveal not only how they think, but also the qualities they truly value in doing the tester's job.
Gauge a Candidate's Feelings
I start with a couple of simple questions: Do you like testing? What do you like about it?
Every candidate will claim to like testing, but the answers tell me whether or not it's worth going on with an interview. Some people light up when I ask those questions. Others don't show any spark at all.
There is no one right answer. A passionate concern for users is valuable, even more so when it is coupled with glee in finding bugs and pursuing difficult clues. Good candidates display enthusiasm, searching curiosity, and a sense of joy Some people don't even seem to like software, let alone testing.
I also look for judgment in evaluating risk. I want testers who care about more than whether the software matches the written requirements. A tester needs to know that some requirements might matter more than others, and that half of the real requirements might never have been written down. If a candidate talks about risk-based testing, then she'd better go beyond the buzzwords and demonstrate a real understanding of what it is and how to accomplish it.
Delve into Work and School Experiences
Evaluating analytical skills or problem-solving abilities is not easy. I try to do this by asking testers how they approach problems. I pose a hypothetical problem and ask the candidate to suggest ways to solve it. I also ask for a specific example of a difficult testing problem the candidate has solved and the method she used. Again, there are no right answers. I'm looking for a sense of method, but also for creativity and the flexibility to adapt an approach to different circumstances. I'm especially interested in people who know what a model is, and why it might be a useful tool in analyzing and solving problems. I'm even more interested in candidates who understand that models have limitations.
Candidates must also possess critical intelligence. One indicator of critical intelligence is a candidate's description and assessment of the various sources of project information. I ask interviewees to give examples of the sources they've dealt with and others they know of. What issues did they encounter in getting and evaluating information? Were all sources equally credible? If not, what did they do about that? How might they cross-check different sources?
Finally, knowing what a candidate has studied or done in a former life can help guide interview questions that show her qualities of mind.
Take formal education. Academic studies at any advanced level require problem solving, at least in principle. I expect people with academic credentials to be able to talk about their studies, not only in terms of how the work might have prepared them to test software but also in terms that show me how—or if—they think and how they generally approach problems. Their answers will also tell me the qualities and skills they believe to be valuable for a tester.
A good tester should be able to provide an interesting analysis, even if it has never occurred to her to think this way before.
If someone were to ask me how my university studies in English language and literature helped equip me to be a tester, I would say that it's the passionate study of literature that's of interest, and the development of skills to pursue that study. A poem or a work of fiction is both a system and a model, just like a software system. Natural language is a symbolic system, used within various formal constraints to construct literature.
Studying both language and literature require analytical thinking and conceptual modeling. You need the ability to dig out sources of information and think critically about their reliability, and to construct and test hypotheses. You must have the imaginative reach to get inside someone else's view of reality and also to understand the historical context of a different period.
I expect candidates to be able to talk about the testing they've done in a similar way. Whatever we talk about, I want to see a zest for thinking and problem solving. I want candidates to display the ability to know what a metaphor is and why it might be useful and important to a tester. I want to see tenacity and healthy skepticism in that person as well.
The question that drives the entire interview is "How do you think?"
It's the conversation that really makes the difference. Because I work to get candidates to think and to talk enthusiastically, it's hard for them not to reveal what I want to know.
All of this makes for an enjoyable interview process. And when I do finally meet the successful candidate, the interview helps establish a foundation of trust and understanding for the future working relationship.
About the Author
Fiona Charles is an independent test project manager and consultant, based in Toronto. With over twenty-five years of experience in systems development and integration projects, she specializes in managing large-scale systems integration tests, and in test management at the program level on multi-project integrations. Fiona is on the board of the Toronto Association of Systems and Software Quality and co-founder and host of the annual Toronto Workshop on Software Testing (TWST). She is a regular contributor to StickyMinds.com and Better Software Magazine. Contact Fiona at fccharles@sympatico.ca.
www.stickyminds.com
This document contains questions for systematically planning and preparing software testing.
- Have you planned for an overall testing schedule and the personnel required, and associated training requirements?
- Have the test team members been given assignments?
- Have you established test plans and test procedures for
- module testing,
- integration testing,
- system testing, and
- acceptance testing?
- Have you designed at least one black-box test case for each system function?
- Have you designed test cases for verifying quality objectives/factors (e.g. reliability, maintainability, etc.)?
- Have you designed test cases for verifying resource objectives?
- Have you defined test cases for performance tests, boundary tests, and usability tests?
- Have you designed test cases for stress tests (intentional attempts to break system)?
- Have you designed test cases with special input values (e.g. empty files)?
- Have you designed test cases with default input values?
- Have you described how traceability of testing to requirements is to be demonstrated (e.g. references to the specified functions and requirements)?
- Do all test cases agree with the specification of the function or requirement to be tested?
- Have you sufficiently considered error cases? Have you designed test cases for invalid and unexpected input conditions as well as valid conditions?
- Have you defined test cases for white-box-testing (structural tests)?
- Have you stated the level of coverage to be achieved by structural tests?
- Have you unambiguously provided test input data and expected test results or expected messages for each test case?
- Have you documented the purpose of and the capability demonstrated by each test case?
- Is it possible to meet and to measure all test objectives defined (e.g. test coverage)?
- Have you defined the test environment and tools needed for executing the software test?
- Have you described the hardware configuration an resources needed to implement the designed test cases?
- Have you described the software configuration needed to implement the designed test cases?
- Have you described the way in which tests are to be recorded?
- Have you defined criteria for evaluating the test results?
- Have you determined the criteria on which the completion of the test will be judged?
- Have you considered requirements for regression testing?
Literature:
Fairley, R.E.: Software Engineering Concepts. McGraw-Hill Book Company, New York 1985.
Gilb, T.: Principles of Software Engineering Management. Addison-Wesley Publishing Company, Workingham/England, 1988.
Sommerville, I.: Software Engineering. 3rd Edition, Addison-Wesley Publishing Company, Workingham/England, 1990.
http://www.iste.uni-stuttgart.de/se/link
Geek Articles regarding Testing :
| Agile Methodologies (70) | |
| Bug Reporting (43) | |
| Change Management (13) | |
| CheckLists (29) | |
| Client/Server (19) | |
| Database Testing (9) | |
| Defect Tracking (12) | |
| ERP Testing (0) | |
| Estimation (0) | |
| Life Cycle and Models (0) | |
| LoadRunner (15) | |
| Localization (0) | |
| QTP (2) | |
| Quality Management (0) | |
| Rational Robot (13) | |
| Requirements (9) | |
| Risk Analysis (0) | |
| Segue Silk (3) | |
| Software (0) | |
| Software Development (82) | |
| SQA (36) | |
| Templates (0) | |
| Test Approach (17) | |
| Test Automation (19) | |
| Test Design (17) | |
| Test Director (1) | |
| Test Planning (1) | |
| Testing Basics (155) | |
| Testing Faqs (1) | |
| Testing Methods (46) | |
| Testing Tools (18) | |
| Use Cases (3) | |
| Web Testing (0) | |
| WinRunner (10) |
Software Testing Myths
Any IT professional is sure to know the different phases of the Software Development Life Cycle or SDLC, namely Feasibility Study, Requirement Analysis, Design, Construction or Coding, Testing, Implementation, Maintenance & Support - the activities carried out in each phase & their significance. But, very few agree on the importance of Software Testing phase.
“Software implementation is a cozy bonfire, warm, bright, a bustle of comforting concrete activity. But beyond the flames is an immense zone of darkness. Testing is the exploration of this darkness.” - extracted from the 1992 Software Maintenance Technology Reference Guide
Testing is often considered as a thankless job.
While developers say with pride: "Wow!! My code is running in production", testers usually don’t say "Wow!! The code that I tested is running in production"!!! This attitude can also be justified if we consider some examples of the usual talk that goes on among colleagues/peers/friends in the IT circle, like:
Mr. A: Which project are you working on?
Mr. B (Tester): Currently. I'm in a Testing project.
Mr. A: Oh...Umm...OK...
Mr. A: Mr. C, how about you?
Mr. C (Programmer/Developer): A Development & Maintenance project
Mr. A: Oohh?? What technology? Which platform? What’s the project all about?? … And so on
Even though there's no denying the fact that Construction/Coding is a very significant phase in the life cycle of any software product, the role of Testing as an activity should be given its due importance, because of the main reason, among others, that its the phase of SDLC just before a software product goes to production; i.e.; when your software product/application actually starts functioning in real world.
Therefore, it’s the only phase where you can ensure & gain a reasonable level of confidence that that you are delivering quality products to the customer.
This does not mean that quality assurance starts in the Testing phase. Ensuring & Maintaining quality is a continuous process which should be practiced right from Day 1 of the SDLC cycle.
In other words, during testing phase, you can "bang" your product in different ways, by which I refer to different kinds of testing like functional testing, stress testing, performance testing & so on, and validate whether the software product works fine.
Needless to say, delivering quality software delights customers & helps in getting more business. That said about the importance of Testing, we will now proceed to look into some perceptions or “myths” about software testing which prevails, in general, among the IT community
Testing is done to demonstrate that there are no errors/bugs/defects in the software product being developed
No. Not at all!! Though this is one way of conveying the meaning, it takes us away from
the main objective of testing
Testing is the process of uncovering defects... The objective of any tester should be to
try his best to crack the code. This should not be seen as a destructive activity which points fingers at or find faults with the developers. In fact, testing should be considered as a healthy feedback mechanism to the developer community so that they can make maximum use of the defects found during testing, analyze them, find the root cause & devise appropriate preventive mechanisms. Actually, the defects found during testing helps improving the quality of the code!
A tester should never work under the assumption that the system works!! The software product should be tested with the intent of finding errors. The test, which when executed reveals a defect in the software, is a success. Though Testing, by itself, does not improve the quality of the software product, it is an indicator of the quality. Rather that considering Testing
as a separate phase in the SDLC, it should be an activity which is integrated into each & every phase. The intent should be to Analyze & Test, Design & Test, Develop & Test, Fix Defects & Test more...!!
Testing is done to ensure that the software/application does what it is supposed to do
True enough!! But it’s not just that...The software should also not do what it is not supposed to do. Good test cases are the only way to establish a reasonable level of confidence on the software product. The Tester should think of all possible scenarios based upon the test requirements or test plan. Though there are various methods to prepare a large number of test cases like Equivalence Partioning, Boundary Value Analysis and so on, a lot depends on one's own intuition to come up with some good cases which reveals defects in the software
Testing is easy...!!!
Sometime back, I conducted a short class on Software Testing to a group of new recruits. While we were discussing about different type of projects, one participant said that he is very interested in a testing career. When asked the reason for his interest, prompt came the answer: “Testing is very easy, that’s why!!” This holds good only in some situations.
Though it’s simple to prepare straightforward test cases, at times testing can be a real challenging task.
Any production issues will, in many cases, backfire first to the testing teams. Why was this scenario not covered in the test plan??
Therefore, a Tester should develop the capability to look or think beyond the requirements mentioned in the test plan or specifications.
This is very important in case of System Testers who are responsible for ensuring that the software product works appropriately from "end-to-end ".
Testing does not offer any opportunities for career growth.
There are a wide range of roles that one can take up, if opting for a Testing career.
Pursuing a testing career offers more scope for improving Business/Domain knowledge.
It enables one to adopt a holistic approach of the entire software system instead of concentrating on just a unit or module.
A good number of testing certifications are offered by reputed institutes, which helps you attain a strong foundation in this career path.
This does not mean that you don’t have all these opportunities at all if you are a Developer.
It can be said that a Testing career has its own plus points. It entirely depends on one's own interests!
Testers do not perform well in development projects (or Testers are poor in coding)
Tester or not, the expertise on developing quality code depends upon one's own programming skills and constant or continuous learning in that area.
Some people, though in testing projects, take time out of their work to improve their programming skills by contributing to coding efforts or taking up projects voluntarily.
Thus, being a Tester does not prevent you in any way from being an expert Programmer or Vice Versa!!!
One way to narrow the communication gap between Tester & Developer community is to include the Testing teams, right from the Requirements/Design Stage meetings so that everyone involved in the life cycle of developing a software product can take part in the discussion & offer valuable suggestions.
This is evident from the below lines, which wonderfully describes the importance of Testing
More than the act of testing, the act of designing tests is one of the best bug preventers known. The thinking that must be done to create a useful test can discover and eliminate bugs before they are coded - indeed, test-design thinking can discover and eliminate bugs at every stage in the creation of software, from conception to specification, to design, coding and the rest. -Boris Beizer, Software Testing Techniques, "Creating a Software Engineering Culture" by Karl Eugene Wiegers"
No formal training is needed to work in a Testing project... Anyone can be a Tester!
True enough, anyone can be a Tester...but, only a good Tester can come up with quality Test cases (just like how an expert Developer can write quality Code).
It is essential that proper training is imparted to everyone joining Testing projects. This would not only helps one to understand the importance of Testing, but also tune one's mind to the requirements of becoming a good Tester, which would greatly contribute to a good career in Testing
CONCLUSION
These days, though the attitude towards Testing as a phase & Testing as a career has definitely undergone a sea change, still these myths are firmly entrenched in the minds of many, among the IT professionals community. This mindset or attitude paves the way for failure even before we really start testing!
About Author:
Renjini S. / Tata Consultancy Services
Renjini S. working as Assistant System Engineer for Tata Consultancy Services since Dec 2003. Renjini was working at TCS-Chennai, Recently, got transferred to Bangalore Now Renjini working on System Testing Project in Banking Domain . Other interests : Activities/hobbies include reading, music, meeting people & making friends.
http://www.exforsys.com/content/view/243
