A of a critical system, a defect can

Topics: FamilyRelationships

Type:

Sample donated:

Last updated: September 18, 2019

A concise definition of software testing can be found in the book citep.~2{Myers11} where it says the following:lockquote{Software testing is a process, or a series of processes, designed to makesure computer code does what it was designed to do and, conversely, that it does not do anything unintended. Software should be predictable and consistent, presenting no surprises to users.

} This is the goal that we want to achieve, but there are many ways to do so. Thus, in this section, we’ll take a look at the different key points of Software Testing based on an approach that was used in cite{Berger11}.subsection{Why test?}label{subsec:why_test}Before starting on testing a certain system we have to make sure why are we even testing it. Knowing the answer to this question is vital for a well-prepared testing process. That’s because understanding this topic influences which tests are we performing and how early we begin to test.

Don't use plagiarized sources.
Get Your Custom Essay on "A of a critical system, a defect can..."
For You For Only $13.90/page!


Get custom paper

According to cite{Berger11}, we test because of these four reasons:egin{itemize}item extbf{To find bugs.} Probably the most straightforward reason, because when developing a certain system we cannot claim that it has no defects, also know as extit{Halting Theorem}. Therefore, we can resort to testing to find defects and consequently correct them.item extbf{To reduce risk to both users and company.} In case of a critical system, a defect can harm a human being or the environment, so it is important to be sure that the system is defect-free to protect the well being of its users.item extbf{To reduce cost.} Another reason to test is to reduce cost on solving possible future defects.

In a software development, the earlier the bug is found the cheap it will be to fix it because the complexityis lower in the early stages. We can represent the relationship between cost and project time with the following graph cite{Berger11}:egin{figure}htbp centering includegraphicsscale=1{projecttime_cost_graph} caption{The cost to fix a problem as a function of the time in the product life cycle when the defect is found} label{graph:projecttime_cost}end{figure}item extbf{To improve performance.} Testing maximizes the performance of the system, the reason for that is that with testing we can find and eliminate dead and/or inefficient code assuring that the software uses the full potential of the hardware.end{itemize}subsection{What is testing?}label{subsec:what_is_testing}After knowing why we test, a question that rises up is extit{What is testing?} According to cite{Myers11} when asking this to programmers most of them will provide a false definition of the term. Saying the following:lockquote{Testing is the process of demonstrating that errors are not present}lockquote{The propose of testing is to show that a program performs its intended functions correctly}lockquote{Testing is the process of establishing confidence that a program does what is supposed to do.}When testing a program, we want to add some value to it, which means raising the quality or reliability of the problem. For that, we find and remove errors.Therefore, don’t test to show the program works, rather assume that the program as errors and test it to find as many errors as possible.

Thus, the correct answer to ” extit{What is testing?}” is: extbf{Testing is the process of executing a program with the intent of finding errors.}subsection{When and how to test?}label{subsec:when_and_how_to_test}As we have seen in ef{subsec:why_test}, testing should begin as soon as feasible. Nevertheless, the timing of testing isn’t everything, we should also know how to test in a certain time frame of the product development.

Therefore, to help us with this question exist a process called V-Model:egin{figure}htbp centering includegraphicsscale=0.9{v-model} caption{V-Model representation} label{graph:projecttime_cost}end{figure}The V-Model represents a development process that follows the typical waterfall model with step-by-step stages. This model also illustrates the relationships between the development life cycle and testing, where every stage of the first is associated with the second. In order to have a clear view of this model we’re going to break it into the following stages, taking in special consideration what it brings to the testing process:egin{itemize}item Test Design:egin{enumerate}item extbf{Requirements} – Initial phase of this process where the system requirements and analysis are performed.

During this stage, it’s designed the corresponding tests to be implemented later in the testing stages. Thereby is created the extbf{acceptance tests}.item extbf{Specification} – After writing down the requirements for the system the next step is to generate a specification document.

Also, in this phase it is written the extbf{system tests} for later use.item extbf{Design} – Regarding the design phase of the model, it takes all the specifications written in the last stage and detail how the various components link with one another. During this phase, the extbf{integration tests} are developed.item extbf{Implementation} – This is the stage where all the coding takes place. Furthermore, the developers also write down the extbf{unit tests} that have to be executed on the code written.

end{enumerate}item Test Execution:egin{enumerate}item extbf{Unit Testing} – The first phase of testing is the unit testing, where individual developers test at the module level by writing stub code to substitute for the rest of the system hardware and software. Tests focus on the logical performance of the code.item extbf{Integration Testing} – After ensuring that a single module in logically correct, the next step is to test the combination of different models.item extbf{System Testing} – This is the process of testing an integrated system to verify it meet the specified requirements.item extbf{Acceptance Testing} – The last stage of the test execution process, in here it’s done a formal testing with respect to user needs, requirements, and business processes conducted to determine whether or not a system satisfies the acceptance criteria and to enable the user, customers or other authorized entity to determine whether or not to accept the system. item extbf{Regression Testing} – When we are developing a system it isn’t enough to pass a test once. Every time it is modified, it should be retested to assure the changes didn’t break some unrelated behaviour.end{enumerate}end{itemize}subsection{Which tests?}label{subsec:which_tests}Now that we have an idea of when and how we test a system, the next key point is which tests we use on the different stage of the testing process with the goal of having the highest probability of detecting defects.

And as said in extit{The Art of Software Testing}cite{Myers11} it is impractical, often impossible, to find all errors in a program. This problem will have implications for the economics of testing, assumptions that the tester as to make about the program, and the manner in which test cases are designed. Therefore, to combat these challenges it is possible to assume some strategies, where extbf{black-box testing} and extbf{white-box testing} are the most prevalent.

extbf{Black-box testing}, also know as functional testing or data-driven testing, views the program as a black box. The goal is to be completely unconcerned about the internal behaviour. Instead, concentrate on finding circumstances in which the program does not behave according to the specifications.

In this approach, test data are derived solely from the specifications (without taking advantage of knowledge of the internal structure of the program).

Choose your subject

x

Hi!
I'm Jessica!

Don't know how to start your paper? Worry no more! Get professional writing assistance from me.

Click here