Fundamentals of Testing Flashcards

1
Q

Other than human error, what makes testing necessary?

A

There might be other factors that impact the project.
Things that make it so that you cant plan everything or consider everything through.

  • Deadlines
  • Complexity
  • Dependencies
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What are the main purpose of testing?

A

To identify as many defects as possible. Tests should be designed to find as many defects as possible.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Testing can contribute to both avoidance of errors and rectification of them, this is also called a proactive- and reactive approach.

What is the main difference of these two approaches?

A

Proactive is when the error is found before the program is ran. This could be by finding specification errors, logical errors or clarifying misunderstandings.

Reactive is when you find an error by running a test on the program, and you then seek to fix the error (debug), .

In short, proactive is before the error happens and reactive is after the error have happened and been found.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

It is not possible to test for everything therefore we need to prioritize. How do we prioritize which tests to do first?

A

We identify the most critical and essential pieces of functionality. Then we rank them.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Why is it important to prioritize which tests to write and run first?

A

To make sure that the most important tests have been done, and the done tests are more important than those to be done.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Who identifies the most important functionality?

A

That is decided by the users or sponsors of the system.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Can testing prove that a system is error free?

A

No, it can prove the existence of the errors found, not that there are not other errors?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is Exhaustive Testing?

A

Is when all possible data combinations are used and tested.

Unless the application has an extremely simple logical structure and limited input, it is not possible to test all possible combination.

For this reason, risk and priorities are used to concentrate on the most important aspects to test.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What is the Pareto Rule?

A

That 20 % of the code will contain 80 % of the errors.

  • This is because most of the complexity of a system most likely revolves around specific functionality.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Is it a good idea to apply the same testing approach to every or most projects?

A

No, all testing is context dependent and risk is a key aspect.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Why is risk important in testing?

A

To prioritize tests, and assess how much test coverage is needed and where. This ties in with the fact that exhaustive testing is usually not possible.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

When designing a system, when should testing begin?

A

As early as possible to identify as many errors as possible, as it is cheaper to find and correct in the specification and requirement identification phase than in production.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What is the difference between testing and debugging?

A

Testing attempts to identify faults and errors where debugging attempts identify the cause of the error and how to correct them.

Testing will then test if the debugging have inadvertently affected other parts of the program, where debugging does not check for that.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Would the tester also do debugging?

A

No, usually a company will have a team of testers, doing tests (systematically explore a component to find and report defects). and then pass the findings to the developer who will do the debugging. The tester would then test the component or system again after.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What is static testing?

A

Tests where the code is not executed. Like reviews or other kinds of code walkthrough. The IntelliJ IDE also does static tests for you (When it tells you there is errors while you code)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

How does reviews identify errors?

A

It removes ambiguioties from specifications documents or code. Often fixing logical errors.

17
Q

What is dynamic testing?

A

This is tests that execute the program while testing. e.g unit tests, UI tests.

18
Q

What are advantages of early testing?

A
  • There are more time to write and do tests.
  • Possible because testers do not need to wait till software is written to create tests.
  • Creating tests highlights the the requirements are individual requirements testable? Any ambiguous or missing requirements?
  • Find errors before the development process. (saves money and time).
19
Q

What is the Pesticide Paradox?

A
  • Running the same set of tests continually will not continue to find new defects.
  • Developers will find out what testers test and focus on that only.
  • Continuing to use the same test set will result in decreasing effectiveness. Use other techniques.
20
Q

What are the fundamental test process?

A
  1. Test planning and control
    Planning:
    - Determine what will be tested and how, by who.
    - Define test completion criteria (coverage amount or something else) so we know when testing is finished
    Control:
    Ongoing control, prepare the plan and how you monitor, the monitoring metrics should relate to exit criteria.
  2. Test analysis and design
    - Reviewing requirements, architecture, design, interface specifications and other parts, which collectively comprise the test basis.
    - Identifying test conditions and the test data required.
    - Designing the tests, including assigning priority.
    - Determining whether the requirements and the system are testable.
    - Detailing what the test environment should look like, and whether there are any infrastructure and tools required.
    - Highlighting the test data required for the test conditions and test cases.
    - Creating bi-directional traceability between test basis and test cases.
  3. Test implementation and execution
    - Involves running tests and checking the test environment before the testing begins.
    - The most important tests first.
    - The logical ordering of tests is important. If it’s possible the outcome of one test should create the preconditions for another.
    - a log of testing activities, including the outcome (pass/fail) and the versions of software, data, tools and test ware (scripts, etc.).
    - All changes are logged such as, code defects, retesting, regression testing, test data error or execution error.
  • if necessary, repeat test activities if changes have been made. Includes re-execution of a test that previously failed in order to confirm a fix (retesting), execution of a corrected test and execution of previously passed tests to check that defects have not been introduced (regression testing).
  1. Evaulationg exit criteria and reporting
    - Checking whether the exit criteria determined during test planning have been met.
    Determining if more tests are needed or if the specified exit criteria need amending.
    Writing up the result of the testing activities for the business sponsors and other stakeholders.
  2. Test closure activities
    - Testing has finished at this stage.
    - Ensuring that the documentation is in order; what has been delivered is defined
    - Passing over test ware to the maintenance team
    - Writing down lessons learned from project for the future and incorporating lessons to improve the testing process (‘testing maturity’).