CH02. L02. Test-types

MaharaTech - ITI MOOCA
16 Nov 201707:01

Summary

TLDRThis script delves into the multifaceted world of software testing, highlighting the importance of identifying testing objectives to select the appropriate testing type. It outlines four key types: Functional testing, which is 'Black box testing' ensuring software meets requirements; Non-functional testing, measuring performance and usability; Structural testing, the 'White box testing' focusing on internal logic; and Testing Related to Changes, including 'Confirmation Testing' and 'Regression Testing' to ensure bug fixes don't impact other modules. The script emphasizes assessing customer needs, security, interoperability, and the software's ability to handle load and maintain reliability.

Takeaways

  • πŸ” The testing process is divided into activities with varying objectives, from testing individual software components to the entire software system.
  • πŸ“ Identifying the testing objective is crucial to determine the appropriate type of testing to be conducted.
  • πŸ› οΈ There are four main types of testing: Functional, Non-functional, Structural, and Testing Related to Changes.
  • πŸ“Š Functional testing, often called 'Black box testing', focuses on the software's external behavior and whether it meets the specified requirements.
  • πŸ”’ Security testing within functional testing checks for vulnerabilities that could be exploited by hackers, protecting data and information.
  • πŸ”„ Interoperability testing ensures that the software can interact with different components and systems outside of itself.
  • πŸ“ Suitability testing assesses if the software's functionality aligns with the business needs as per the requirements.
  • πŸ”’ Accurateness testing verifies that the software's output matches the expected results.
  • βš™οΈ Non-functional testing evaluates 'How the system works?' by measuring characteristics like performance, load, stress, usability, maintainability, reliability, and portability.
  • πŸ‘·β€β™‚οΈ Structural testing, known as 'White box testing', examines the internal logic of the software's source code to ensure correctness.
  • πŸ”„ Confirmation Testing is conducted after developers fix bugs to ensure the issue has been resolved, followed by Regression Testing to check for any new issues caused by the fix.

Q & A

  • What are the main objectives of the testing process?

    -The main objectives of the testing process vary from testing a specific part of the software to testing the entire software, ultimately to ensure that the software meets its intended requirements and functions correctly.

  • What is Functional Testing and what does it focus on?

    -Functional Testing is a type of testing that focuses on testing all the software functionalities that were previously identified in the requirements. It answers the question 'what the system does?' and ensures that the software behaves as specified in the requirements.

  • How does Functional Testing relate to the calculator program example mentioned in the script?

    -In the calculator program example, Functional Testing would help to test whether the calculator accepts user input, performs the addition correctly, and provides the correct result. It ensures that the software meets the specified requirements for functionality.

  • What are the different types of Functional Testing mentioned in the script?

    -The script mentions four types of Functional Testing: Security Testing, Interoperability Testing, Suitability Testing, and Accurateness Testing. Each type focuses on different aspects such as security vulnerabilities, compatibility with other systems, adherence to requirements, and correctness of results.

  • Why is it important to consider all testing levels for Functional Testing?

    -It is important to consider all testing levels (Unit, Integration, System) for Functional Testing because it ensures that the software's external behavior is tested consistently at each stage of development, helping to catch and fix issues early in the process.

  • What is the difference between Black Box Testing and White Box Testing?

    -Black Box Testing, also known as Functional Testing, focuses on the software's external behavior without considering the internal structure. It tests the software based on its specifications. White Box Testing, on the other hand, focuses on the internal structure and logic of the software, examining the source code to ensure it works correctly.

  • What does Non-functional Testing measure in software?

    -Non-functional Testing measures the software's characteristics such as performance, load, stress, usability, maintainability, reliability, and portability. It answers the question 'How does the system work?' and ensures that the software operates efficiently under various conditions.

  • How does the script define Suitability Testing?

    -Suitability Testing is a type of Functional Testing that assesses whether the software's functionality was designed according to the requirements. It checks if the software can perform the tasks it was intended to do, such as accepting user input in the calculator example.

  • What is the purpose of Confirmation Testing and Regression Testing?

    -Confirmation Testing is conducted to ensure that a bug has been fixed after the developer's intervention. Regression Testing follows to check that the fix has not introduced new issues or affected other parts of the software, ensuring that the changes do not negatively impact previously tested modules.

  • How does the script describe the importance of assessing customer needs in testing?

    -The script emphasizes that one of the key aspects of testing is to assess whether the customer's needs have been fulfilled and succeeded. This involves checking that the software meets the business and technical requirements specified by the customer.

Outlines

00:00

πŸ“Š Functional Testing Overview

The first paragraph discusses the concept of functional testing, which is focused on evaluating the software's compliance with its specified requirements. It emphasizes the importance of identifying the testing objective to select the appropriate testing type. Functional testing is described as a 'black box' approach, where the software's external behavior is tested without concern for its internal structure. The paragraph outlines different types of functional testing, including security testing, interoperability testing, suitability testing, and accuracy testing. Each type is briefly explained, with examples provided, such as testing a calculator program's addition function for user input acceptance, addition process, and correct result output. The paragraph also highlights the need to assess whether the software meets customer needs and expectations.

05:01

πŸ” Non-functional and Structural Testing Insights

The second paragraph delves into non-functional testing, which is concerned with how the system operates rather than what it does. It covers aspects such as performance, load, stress, usability, maintainability, reliability, and portability. Non-functional testing measures software characteristics, like the time taken to load a website or the system's ability to handle a certain number of users. The paragraph also touches on structural testing, which is a 'white box' approach that examines the internal logic of the program, particularly the source code. Structural testing is crucial after black box testing and can be applied at various testing levels, including component testing and system integration testing. The concept of code coverage is introduced, explaining how it measures the extent to which the code has been tested. The paragraph concludes with a discussion on testing related to changes, specifically confirmation testing and regression testing, which are conducted to ensure that bug fixes and software changes do not introduce new issues.

Mindmap

Keywords

πŸ’‘Testing Process

The testing process is a series of activities designed to evaluate the quality of software. It is crucial in ensuring that the software meets its intended specifications and functions correctly. In the video, the testing process is divided into different activities with varying objectives, ranging from testing a specific part of the software to testing the entire software system. This process is essential in determining the appropriate testing type based on the identified objectives.

πŸ’‘Functional Testing

Functional testing is a type of testing that focuses on verifying the software's functionality against its requirements. It answers the question, 'What does the system do?' by testing all the software functionalities that were previously identified. In the script, the example of a calculator program is used to illustrate functional testing, where the program's ability to accept user input, perform addition, and provide correct results is tested. This type of testing is crucial in ensuring the software meets its intended functionality.

πŸ’‘Black Box Testing

Black box testing is a method of testing where the tester focuses on the software's external behavior without considering the internal structure. It is based on the software's specifications and is used to verify that the software performs as expected from the user's perspective. In the video, functional testing is often referred to as black box testing, as it does not involve examining the internal source code but rather the software's external functionality.

πŸ’‘Security Testing

Security testing is a type of functional testing that focuses on identifying vulnerabilities in the software that could be exploited by hackers. It is crucial in ensuring the software's security and protecting sensitive data. In the script, online bank accounts are mentioned as an example where security testing is essential to prevent unauthorized access and data theft.

πŸ’‘Interoperability Testing

Interoperability testing is a type of testing that checks whether the software can interact and work with different components and systems. It is essential in ensuring that the software can integrate seamlessly with other systems and components. The script mentions this type of testing to verify that the software can handle interactions with external components without issues.

πŸ’‘Suitability Testing

Suitability testing is a type of functional testing that assesses whether the software has been designed according to the requirements. It answers the question of whether the function meets the specified needs. In the script, the example of a calculator program being able to accept two numbers from the user illustrates suitability testing, ensuring that the software meets the business needs.

πŸ’‘Accurateness

Accurateness in the context of testing refers to checking whether the results produced by the software are as expected. It is a measure of the software's technical correctness. In the script, accurateness testing is used to verify that the calculator program correctly adds two numbers and provides the correct result, ensuring technical accuracy.

πŸ’‘Non-functional Testing

Non-functional testing is a type of testing that focuses on measuring the software's characteristics, such as performance, usability, and reliability. It answers the question, 'How does the system work?' by evaluating how the software performs under various conditions. In the video, examples like measuring the time it takes for a website to load or assessing the system's ability to handle a large number of users are given to illustrate non-functional testing.

πŸ’‘Performance Testing

Performance testing is a subset of non-functional testing that measures how well a system performs under a specific workload. It is crucial in ensuring that the software can handle expected and peak loads efficiently. In the script, performance testing is mentioned in the context of measuring the time it takes for a website to load, which is a key indicator of the system's performance.

πŸ’‘Load Testing

Load testing is a type of non-functional testing that assesses the system's ability to handle a specified number of users or transactions at a given time. It is essential in determining the system's capacity and its ability to maintain performance under stress. In the video, load testing is used to measure whether a system can bear a certain number of users logged in simultaneously without failing.

πŸ’‘Regression Testing

Regression testing is a type of testing conducted after changes have been made to the software to ensure that these changes have not introduced new bugs or affected existing functionality. It is crucial in maintaining the software's quality and reliability. In the script, regression testing is mentioned in the context of confirming that fixing a bug does not impact other modules of the software, ensuring that the overall system remains stable.

Highlights

Testing process is divided into activities with varying objectives, from testing a software partition to the entire software.

Identification of testing objectives is crucial to determine the appropriate testing type.

There are four main types of testing: Functional, Non-functional, Structural, and Testing Related to Changes.

Functional testing focuses on what the system does, ensuring all functionalities meet requirements.

Functional testing is applicable at all testing levels: Unit, Integration, and System.

Functional testing is also known as 'Black box testing', focusing on external behavior without concern for internal structure.

Different types of functional testing include Security, Interoperability, Suitability, and Accurateness testing.

Security testing checks for vulnerabilities that could be exploited by hackers, crucial for online banking security.

Interoperability testing ensures software can interact with different components outside of its system.

Suitability testing verifies if the software functions are designed according to requirements.

Accurateness testing checks if program results match expected outcomes.

Non-functional testing answers 'How does the system work?' by measuring software characteristics like performance and load.

Performance testing measures the time taken for a website to load after URL entry and server response.

Load testing assesses the system's ability to handle a specific number of users simultaneously.

Stress testing evaluates the system's ability to bear an overload of its normal user capacity.

Usability testing determines if the program is easy for end-users, Maintainability checks if modifications or additions are feasible.

Reliability testing measures the software's ability to work without failure during a specific period in real environments.

Portability testing checks if software can be moved between hardware or software platforms efficiently.

Structural testing, or 'White box testing', focuses on the internal logic of the program's source code.

Code coverage techniques in structural testing help determine the percentage of code tested and identify potential issues.

Confirmation Testing is conducted after bug fixes to ensure the issue is resolved, leading to Regression Testing.

Regression Testing confirms that bug fixes or changes do not affect other modules in the software.

Transcripts

play00:05

we've agreed before that the testing process

play00:07

is divided into some activities.

play00:09

Their objectives varies from testing

play00:11

a particular partition of software

play00:13

till testing the whole software.

play00:15

Accordingly, we have to identify

play00:17

the testing objective to be able to

play00:19

determine the suitable testing type.

play00:21

There are 4 types:

play00:23

The first type is "the Functional testing"

play00:25

which answers the question

play00:27

"what the system does?"

play00:29

so it cares and focuses on

play00:31

testing all the software functionalities

play00:33

which were previously identified in requirements.

play00:35

Therefore, we can't deliver the software

play00:37

without them,

play00:39

for example, if we are required to create

play00:41

a calculator program, and one of

play00:43

its requirements is a function that

play00:45

add 2 numbers, so the functional testing

play00:47

will help you to test this point, to ensure

play00:49

the following: Firstly,

play00:51

when you input 2 numbers to the calculator,

play00:53

it accepts them, i.e. it accepts

play00:55

the user input. Secondly, it adds them.

play00:57

and thirdly it gives us the result of the addition

play00:59

correctly. we have to take into

play01:01

consideration that we can apply the functional

play01:03

testing on all the testing levels,

play01:05

whether: the Unit testing level,

play01:07

Integration testing level,

play01:09

or System testing level. The functional test

play01:11

cares about testing the external

play01:13

behavior of the software.

play01:15

This means that we test the software specification

play01:17

externally as a functionality.

play01:19

so I am not responsible for the internal

play01:21

structure, as I can't actually see it.

play01:23

In the calculator example, I care about

play01:25

testing the addition process not the internal

play01:27

source code which does the addition

play01:29

so I should get back to the requirements

play01:31

to check that the software has implemented

play01:33

the required specifications or not.

play01:35

So here, the functional testing is

play01:37

the specification based testing, which

play01:39

we often call it "Black box testing"

play01:41

there are different types of functional

play01:43

testing. For example,

play01:45

we will mention only 4 types:

play01:47

Security testing and this is responsible for

play01:49

testing the software against

play01:51

vulnerabilities.

play01:53

Such as, I need to know whether

play01:55

the software has weaknesses

play01:57

that a hacker can use,

play01:59

and accordingly threats the security

play02:01

of my data and information or not.

play02:03

The most famous example for this, is

play02:05

the online Bank accounts and thefts

play02:07

they get exposed to. The second type

play02:09

is the interoperability testing.

play02:11

through which I need to know

play02:13

whether the software can

play02:15

deal with different components

play02:17

and system out of it or not.

play02:19

As for the suitability testing,

play02:21

it answers the question:

play02:23

was the function designed

play02:25

according to the requirements?

play02:27

in the calculator example,

play02:29

can it accept 2 numbers from the user or not?

play02:32

The last type we have is

play02:33

the Accurateness through which

play02:35

we check whether the current results

play02:37

of the program are the same as

play02:39

we've expected or not.

play02:41

In the calculator example,

play02:43

for the 2 numbers it accepted, whether

play02:45

the result of adding them is correct or not.

play02:47

so, again, what does the functional

play02:49

testing asses?

play02:51

1. Suitability, assessing the business needs.

play02:53

2. Accurateness assessing the technical needs

play02:57

3. Security assessing threats and vulnerabilities

play03:01

4. Interoperability assessing interactions with other components and apps.

play03:06

finally and the most important point

play03:07

we have to asses whether the customer needs

play03:09

were fulfilled and succeeded or not.

play03:11

Now we'll move to the second type

play03:13

which is "Non-functional testing"

play03:15

This answers:

play03:17

"How does the system work?"

play03:19

This is used for measuring

play03:21

the software characteristics. For example,

play03:23

we will measure the performance.

play03:25

such as, when I open any

play03:27

website , how much time it takes

play03:29

since I write the URL and

play03:31

sent it to the server then get back

play03:33

to see the content of the page.

play03:35

Another example is Load.

play03:37

Here, I may need to measure

play03:39

the system's ability to bear

play03:41

a number of 100 users logged in

play03:43

in a particular period at the same time.

play03:45

and whether the system bear this number or not

play03:47

Through Stress,

play03:49

we need to asses the system,

play03:51

can it bear the number of connected

play03:53

users if it increased to be more

play03:55

than 100, for instant? or will it fail?

play03:57

Sothis means we check its ability

play03:59

to bear the over load of its normal use

play04:01

for the number of users and resources.

play04:05

we also check its performance

play04:07

with the normal use, once with the fewest number of users

play04:09

and another time we check the performance

play04:11

when the number of users overloads the

play04:13

normal number of use.

play04:15

Then we compare between the 2 cases.

play04:17

Usability: is the program

play04:19

easy to be used for the end-user

play04:21

or not?

play04:23

Maintainability: can I

play04:25

modify it or add any new feature to it

play04:27

or not?

play04:29

Reliability: we know through it

play04:31

the ability of a software to work

play04:33

during a particular period without failing

play04:35

or crashing has a problem

play04:37

while using it live in

play04:39

the real environment, or through the

play04:41

number of required processes

play04:43

in addition to use it in different environments

play04:45

Portability: can we move

play04:47

the software from a hardware

play04:49

or a software to another

play04:51

then will it work with efficiently or not?

play04:53

The third type is

play04:55

the structure testing,

play04:57

this cares about the internal structure of

play04:59

a software and we call it

play05:01

"white box testing". This means that we will test

play05:03

the source code to be sure that

play05:05

the internal logic of the program works correctly.

play05:07

This type of testing

play05:09

can be applied to all testing levels

play05:11

and specially to component testing and

play05:13

Component integration testing.

play05:15

Using this type is very important

play05:17

especially after we conduct the black box testing

play05:19

or specification based,

play05:21

as we get involved in the code's details.

play05:23

By using particular techniques,

play05:25

I can know how many lines of code

play05:27

I tested. This technique is

play05:29

the coverage technique of code

play05:31

in other words, how many

play05:33

lines of code did you test,

play05:35

from the total lines of the program?

play05:37

i.e. what is the number you have covered

play05:39

to be able to set the percentage of coverage

play05:41

that was done? and did you do

play05:43

a statement coverage and decision

play05:45

coverage to be sure that your code

play05:47

works as a whole or it has some problems

play05:49

which need to be fixed?

play05:51

this will be explained in details

play05:53

in chapter 4. Note that

play05:55

you can also apply the structure testing

play05:57

to the system, the system integration

play05:59

and the acceptance testing level.

play06:01

For example:

play06:03

Business models and menu structures.

play06:05

now we will move to

play06:07

the Testing Related to changes.

play06:09

here, we will talk about 2 kinds

play06:11

involved in it. The first kind is

play06:13

" Confirmation Testing"

play06:15

which is conducted after the developer

play06:17

resolve bugs. so we need to ensure that

play06:19

the bug was actually fixed or not.

play06:21

then we confirm on it, that's why

play06:23

we call it "retesting"

play06:25

this type leads us to another type

play06:27

called "Regression type", why?

play06:29

because it is expected that the fixed bug

play06:31

which we ensured it was resolved

play06:33

could have an affect somehow on the rest

play06:35

of modules, which were tested before.

play06:37

This effect appears in

play06:39

a form of a new bug that was not

play06:41

there before. Here comes the time of

play06:43

"regression testing"

play06:45

to confirm that any resolved bugs

play06:47

or any other change in the software,

play06:49

didn't affect the other modules.

play06:51

we should note that, it also

play06:53

happens in all testing levels.

Rate This
β˜…
β˜…
β˜…
β˜…
β˜…

5.0 / 5 (0 votes)

Related Tags
Software TestingFunctional TestingNon-FunctionalStructural TestingBlack BoxWhite BoxSecurity TestingInteroperabilityPerformance MetricsUsabilityMaintainabilityReliabilityPortabilityRegression TestingConfirmation Testing