http://www.portnov.com/school
Preface
1. What are most common characteristics in software developing company for developing-engineering department of the average consumer software project ?
Consumer software projects are often characterized by a budget that is too small, a staff that is too small, a deadline that is too soon and which can’t be postponed, and by a shared vision and a shared commitment among the developers.
2. On whom depends quality of the computer software ?
The quality of a great product lies in the hands of the individuals designing, programming, testing, and documenting it, each of whom counts.
3. What does it mean: assure quality?
Assure quality is a commitment of the individuals to excellence.
4. Can the software companies change their plans, goals and products on the very short notice and on last steps of the development ? and Why ?
Product changes are made late in development. When you’re developing a product for public sale, your potential customers did not agree to any specification. If a competitor creates something more appealing, you have to respond quickly.
5. If the company decides to make drastic changes to a set plan, add or drop part of the application that one was working for last couple of months, what should experienced professional do?
An experienced professional must take the initiative and do the job anyway.
6. What some of the task management issues the tester has to deal with on the daily basis? And why is it important to an individual tester to have a clear picture of the software developing cycle?
Estimating, planning, and scheduling software testing is hard because there’s no true end point. There are always more tests and risks associated with skipping them. Individual testers need to be able to plan their time to take them into account. Testers also have to deal with design errors.
7. What is an ultimate goal of the professional tester ?
The ultimate goal of a professional tester is to find and flag problems in a product, in the service of improving its quality. Professional tester is one of few who will examine the full product in detail before it is shipped.
Chapter 1
1. How many errors can tester submit on one Problem Report? Why?
Tester must submit one Problem Report for each error.
2. Why if you expect the same result from two tests use only one of them?
If you expect the same result from two tests, they belong to the same class. All members of a class of test cases cause the program to behave in essentially the same way.
3. When you are choosing a representative test of a class for testing, which one should you choose? Why?
When you choose representatives of a class for testing, always pick the ones you think the program is most likely to fail. The best test cases are at the boundaries of a class. Anything that makes program change its behavior marks the boundary between two classes.
4. Why it is necessary analyze the program from different point of view than the programmer’s?
Analyzing the program from different point of view than the programmer’s will help you find classes, boundary conditions, critical tests, and thus missed errors.
5. What is the main reason why do we test the program?
The main reason the program is in testing is that it probably doesn’t work.
6. Should the tester run out of the formally planned tests? Why?
Tester will always run out of formally planned tests. Trust your instincts. Try any tests that feel promising, even if it’s similar to others that have already been run.
7. Should we document the "exploratory" tests or not? Why?
Because exploratory tests are whatever comes to mind, so it should be documented to remember what was done.
8. What tactic can the tester use to insure that bugs, which were founded, are fixed?
The most effective tactic for getting a bug fixed is to find test cases that make it appear so likely to occur under such innocent circumstances that absolutely no one would be willing to tolerate it.
9. If the programmer is reasonably careful, most of written test cases won't find errors, should you stop at that point and save company's money or should you continue creating new cases which may or may not find a bug?
If the programmer is reasonably careful, most of your tests won’t find errors, including many of the ones you took the most time thinking about. Don’t stop thinking. Some of your tests will find problems, and the more care you put into crafty thinking, the more you’ll find.
10. At your opinion who is the best tester: one who finds most of bugs in the shortest period of time or one who gets the most bugs fixed?
The best tester is the one who gets the most bugs fixed.
Chapter 2
1. Can we test the software completely?
No matter how careful and thorough a job you do, you will never find the last bug in a program, or if you do, you won’t know it.
2. What would be better to find more errors or find more serious errors?
You should want to find as many as possible: the more serious the problem, the better.
3. What would be some of the key issues why can't we test program correctly?
Key issues why we can’t test program completely:
1The domain of possible is too large to test.
2There are too many possible paths through the program to test
3The user interface issues are too complex to completely test.
4. Can we or can we not verify that program works correctly?
If you can’t fully test the program, you can’t verify that it works correctly.
5. Should the tester try to verify that the program runs correctly?
Testers shouldn’t try to verify that a program runs correctly: if you expect to find many bugs, you’ll find plenty. A few will be false alarms. If you expect the program to work correctly, you’ll miss many real problems.
6. If we can't find all bugs and can't prove that the program runs correctly than why should we test?
The purpose of testing a program is to find as many problems in it as possible: the more serious the problem, the better.
7. What does it mean ? "Successful testing"
A test that reveals a problem is a success. A test that did not reveal a problem was a waste of time.
8. What is the main purpose of finding bugs?
The purpose of finding bugs is to get them fixed.
Chapter 3
1 What are the software development stages?
Planning
Design
Coding and documentation
Testing and fixing
Post-release maintenance and enhancement
2 On what stage should testing begin? Why?
Testing and fixing can be done at any stage in the life cycle. However, the later an error is found, the more it costs to fix.
3 What is Planning Stage?
Planning stage consists of:
1Objective statement
2Requirements analysis
3Functional definition
4 What testing, if any, should be done during product planning stage?
During the product planning stage the ideas tested, not code. It consist of:
1Requirements review:
o Are these the “right” requirements
o Are they complete?
o Are they compatible?
o Are they achievable?
o Are they reasonable?
o Are they testable?
2Comparative product evaluations
4Task analyses
5 What is Design Stage?
During the design stages the designer figure out how to provide the planned capabilities of the product. There are:
1External design – describes the product from the user’s point of view.
2Internal design – describes the internal workings of the product:
o Structural design – specifies how tasks will be specified among different pieces of code
o Data design – specifies what data the code will work with
o Logic design – specifies how the code will work
3Prototyping – creating a model of the system or of part of it.
6 What testing, if any, should be done during product design stage?
During the product design stage no code has been written yet, so we’re still testing ideas:
1Is the design good?
2Does the design meets requirements?
3Is the design complete?
4Is the design possible?
5How well does the design cover error handling?
7Pseudo code analyzers – looks for flaws in program’s design.
7 What is Coding Stage?
During the coding stage, the programmer writes the programs and tests them
8 What is Maintenance and Enhancement Stage?
Maintenance and enhancement stage consists of:
1Fixing errors
2Adapting the program so that it works with new hardware or with new co-residence software
3Fixing the documentation
4Performance improvements
5Making changes (enhancements) requested by users
9 Describe External Design and Internal Design?
External design – describes the product from the user’s point of view. Internal design – describes the internal workings of the product:
Structural design – specifies how tasks will be specified among different pieces of code
Data design – specifies what data the code will work with
Logic design – specifies how the code will work
10 What is White Box Testing?
In White box testing, the programmer uses her understanding and access to the source code to develop test cases. This provides benefits:
1Focused testing: the programmer can test program in pieces.
2Testing coverage: the programmer can find out which parts of the program are exercised by any test.
3Control flow: the programmer knows what the program is supposed to do next.
4Data integrity: by tracking a data item through the system, the programmer can spot data manipulation by inappropriate modules.
5Internal boundaries: the programmer can see them in the code that are completely invisible to the outside tester.
6Algorithm-specific testing.
11 What is Functional Testing?
Functional testing is one type of black box testing. Functions are tested by feeding them input and examining the output. Internal program structure is rarely considered
12 What is Incremental Testing?
Under an incremental testing strategy, each piece is first tested separately. The testing of individual pieces of a process or program is called module testing, unit testing, or element testing.
13 What is Big Bang Testing?
Under a big bang testing strategy everything is tested with everything else and, usually, it all blows up together. Disadvantages: it’s too hard to figure out what caused a failure.
14 What is Integrating Testing?
Testing combinations of pieces of the product is called integration testing. Groups of modules are tested with other groups until, eventually, all of a process’ modules are tested together.
15 What is Top-Down Testing?
Top-down testing – is incremental testing. In top-down testing, the highest level modules are tested first.
16 What is Bottom-Up Testing?
Bottom-Up testing – is incremental testing. In bottom-up testing, the lowest level modules are tested first.
17 What is Regression Testing?
Regression testing is reusing old tests. There are two types of regression:
Regression testing is done to make sure that a fix does what it’s supposed to do.
Making sure that the change didn’t disturb anything else.
18 What is Black Box Testing?
When coding is finished, the program goes to the Testing Group for testing, in which the program is treated as a black box. You can’t see into it. The tester feeds it input data, observes output data, but doesn’t know, or pretends not to know, how the program works. Project managers often try to schedule two cycles of testing: one to find all the bugs, the second to verify the fixes.
19 What is Acceptance Test?
Each time you receive a new version of the program, check whether it’s stable enough to be tested. If it crashes at the slightest provocation, don’t waist your time on it. This first bit of testing is called acceptance or qualification testing.
20 What is Initial Stability Assessment?
Initial stability assessment is the initial evaluation of program reliability. You are not trying to find bugs at this point. You are trying to decide which areas of the program you trust least.
21 What is Function or Verification Test?
You verify a program by checking it against the most closely related design document or specification. If there is an external specification, the function test verifies the program against it.
22 What is Validation Test?
You validate a program by checking it against the published user or system requirements. System testing and integrity testing are validation tests.
23 What is Beta Testing and Beta customers?
In a beta test, people who represent your market use the product in the same way that they would if they bought the finished version and give you their comments. Beta customers are not working full time with your product. They will not test it as thoroughly or as quickly as you would like.
24 What is Integrity Testing?
Integrity testing is a more thorough release test. It provides a last chance to rethink things before the product goes out the door. The integrity tester tries to anticipate every major criticism that will appear in product reviews, or every major complaint the customer will raise for the next few months. The integrity tester should be a senior tester who wasn’t involved in the development or testing of this product.
25 What is Release Test?
In the release test, you gather all the things that will go to the customer or to a manufacturer, check that these are all the right things, copy them, and archive the copies. Then you release them.
26 What is Final Acceptance (Walk through) Testing?
If your company developed the program on contract, the customer will run an acceptance test when you deliver it. Certification is done by a third party. The certifier might be an agent of the user or an independent test agency.
27 What is Boundary Condition Testing?
Boundary Condition Testing – checking the program’s response to all extreme input values
28 What is Performance Testing?
Performance testing – is a black box testing. Identify tasks and measure how long it takes to do each.
29 What is Volume Testing?
Volume tests study the largest and the shortest tasks the program can deal with. You might feed huge programs (or empty files) to a compiler and huge (or empty) test files to a word processing program. Or you might feed an interactive program input quickly but steadily, to try to overflow the amount of data it can receive and hold in temporary storage.
30 What is Stress Testing?
Stress tests study the program’s response to peak bursts of activity. If the amount of activity has been specified, the stress test attempts to prove that the program fails at or below that level.
31 What is Storage Test?
Storage tests study how memory and space is used by the program, either in resident memory or on disk. If there are limits, storage tests attempt to prove that the program will exceed them.
32 What is Background Test?
Background test is used in a multi-processing system to evaluate how well the product does many tasks. The objective is to prove that the program fails when it tries to handle more that one task.
33 What is Error Recovery Test?
In Error Recovery testing make as many different types of errors as you can. Try to get the program to issue every error message listed in the documentation’s Error Messages appendix.
34 What is Security Test?
Security Test evaluates how easy would it be for an unauthorized user to gain access to this program. What could she do to your data if she did?
35 What is Compatibility Test?
Compatibility testing checks that one product works with another. Two products are compatible if they can share the same data files or if they can simultaneously reside in the same computer’s memory.
36 What is Conversion Test?
If two programs are not directly compatible, your program might still be able to read another’s data files by using a two step process. First, run a conversion program that rewrites the files in your program’s format. Then your program reads those new files.
37 What is Configuration Test?
The goal of the Configuration Test is finding a hardware combination that should be, but is not, compatible with the program.
38 What is Installation Test?
Installation test checks an installation utility which customizes the product to match your system configuration.
Chapter 5
7 Name 6 levels of priority?
(1) Fix immediately - this is holding up other work
(2) Fix as soon as possible
(3) Must fix before the next milestone (alpha, beta, etc)
(4) Must fix before final
(5) Fix if possible
(6) Optional - use your own judgment
8 Who can change severity or priority in previously reported bugs?
Only the project manager should change Priority and only the reporter (or lead tester) should ever change Severity.
Chapter 71. What are four characteristics of a good test design?
4 main characteristics of a good test design:
a.It has a reasonable probability of catching an error:
b.It is not redundant (if two tests look for the same error, why run both?)
c.It’s the best of its breed (Ex.: Boundary value inputs are better test inputs than non-boundary values because they are more likely to demonstrate an error.)
d.It is neither too simple nor too complex
2. What is Equivalent Classes of information?
If you expect the same result from two tests, you consider them equivalent.
3. How to find Equivalent Classes?
They all test the same thing.
If one catches a bug, the others probably will too.
If one test doesn’t catch a bug, the others probably won’t either.
They involve the same input variables.
They result in similar operations in the program.
They affect the same output variables.
None force the program to do error handling or all of them do.
4. Describe Boundaries of Equivalent Classes?
The boundary values are the biggest, smallest, shortest, loudest, fastest members of the class. Incorrect inequalities cause failures only at the boundaries. Programs that fail with non-boundary values usually fail at the boundaries too. You have to test each edge of an equivalence class, on all sides of each edge.
5. How do we test Race Conditions and other time dependencies?
Can the program be executed too quickly or too slowly? You can vary this directly by switching clock chips, by running the program on fast and slow models from the same line of computers or by flipping a speed switch on the machine.
Try to disrupt the program when it’s in a state of transition. Press keys or send it other I/O requests while it’s switching menus or servicing I/O.
Try to confuse the program when it’s about to change state because of a time-out. Press keys or get interrupts generated just as (just before, just after) the program times out.
Test system under heavy load. In a multi-processing system, run other programs while you test this one. In a single-user system, send files from a buffer to the printer. Use a machine with a slower clock and less memory, attach more I/O devices and have them generate interrupts as often as possible. Slow the computer down however you can.
6. How do we perform load testing?
Load testing is boundary condition testing. Run a test that the program should be able to pass (such as maximum number of terminals) and another test that the program should fail (one too many terminals). Test many limits in combination. Also, do enough general testing while you’ve got the program operating under this load to be sure it can continue to cope.
7. What is Error Guessing?
For reasons that you can’t logically describe, you may suspect that a certain class of tests will crash the program. Trust your intuition and include the test.
8. Describe Fix Verification test?
Fix Verification Test -- Regression Testing: checking whether a bug fix worked.
9. What is Regression Test Library? When and how should we use it?
The idea behind this Regression Test Library is that whenever a new version of the program is submitted for testing, you should run every test in the library. Some tactics:
Drop tests that are virtual repetitions of another.
Reduce the concentration of tests on a bug that has now been fixed.
Combine test cases.
Automate if you can.
Chapter 12
1 Is the Test plan product or tool?
Sometimes the test plan is a product; sometimes it’s a tool. The product is much more expensive than the tool. As a product: A good test plan helps organize and manage the testing effort. Their structure, format, and level of detail are determined not only by what’s best for the effectiveness of the testing effort but also by what a customer or regulating agency wants. As a tool: Customers of consumer software don’t care how it was tested. They just care that it works. For these customers, your test plan is not a product. In this case, a test plan is a valuable tool to the extent that it helps you manage your testing project and find bugs.
2 What are 3 main objectives of the detailed test planning?
Test documentation describes the technical tasks of testing.
Test documentation improves communication about testing tasks and process.
Test documentation provides structure for organizing, scheduling, and managing the testing project.
6 Name 12 most common types of black box tests? Describe them?
1)Acceptance test (into testing): Each time you receive a new version of the program, check whether it’s stable enough to be tested. If it crashes at the slightest provocation, don’t waist your time on it. This first bit of testing is called acceptance or qualification testing.
2)Control flow – how to get the program from one state to another. (You’re going to test the visible control flow, rather than the internal flow. Ask what are the different ways that you can get to a dialog box? What different ways menu paths can you take to get to the printer? What parameters can you give with commands to force the program into other states?)
3)Data flow and integrity: You can extend and deepen your analysis of the flow of data by subdividing the program into processing stages. Each stage gets input data from the stage before. Each stage passes its outputs on to the next. Checking intermediate values helps you pin down where the program fails, when it fails. Data integrity – knowledge about which parts of the program modify (or should modify) any item of data.
4)Configuration testing is concerned with checking the program’s compatibility with the many possible configurations of hardware and system software.
5)Compatibility testing checks that one product works with another.
6)Stress tests study the program’s response to peak bursts of activity.
7)User interface includes all aspects of the product that involve the user:
Functionality
Time to learn how to use the program
How well the user remembers how to use the program
Speed of performance
Rate of user errors
User’s satisfaction with the program
8)Regression testing is reusing old tests.
9)Performance testing – identifies tasks and measures how long it takes to do each.
10)Beta tests: at beta, the program is ready to send to beta testers, people who don’t work for your company, who will use the product and tell you about their experiences
11)Release tests: you gather all the things that will go to the customer or to a manufacturer, check that these are all the right things, copy them, and archive the copies. Then you release them
12)Utility test checks whether the program will satisfy the customer’s overall expectations.
7 What are the best targets (areas) where testers likely to find most of the bugs?
- Most likely errors: the more errors already found in the weakest area of the program, the more you can expect to find there in the future.
- Most visible errors in the most often used program areas, the most publicized areas, and the places that really make your program distinct from the others.
- Most often used program areas
- Distinguishing areas of the program
- Hardest areas to fix
- Most understood by you even if it’s not a critical area, you’ll gain good experience with the program and find bugs too. It will help you go much more effectively, and much more quickly, into the next area.
8 Why is it important to write easy to read and understand test cases and scripts?
After testing is finished and the program is released, work will start on the next version. These testers may be new to the product, and you might not be available to guide them. Try to prepare a set of notes to make their work easier.
No comments:
Post a Comment