Errors and Testing
Humans make errors in the thoughts, in their actions, and in the products that might result from Their actions. Humans can make errors in a field.
Ex: observation, similarly even in software development.
Example: An instructor administers a test to determine how well the students have understood what the instructor wanted to convey a tennis coach administers a test to determine how well the understudy makes a serve.
Errors, Faults and Failures
Error: This is occurs in the process of writing a program
Fault: this is a manifestation of one or more errors
Failure: A failure occurs when a faulty piece of code is executed leading to an incorrect state that propagates to program’s output the programmer might misinterpret the requirements and consequently write wrong code. Upon execution, the program might display behavior that does not match with the expected behavior, implying thereby that a failure has occurred. A fault in the program is also commonly referred to as an error .The terms error and a defect. The terms error and bug are by far the most common ways of referring to something wrong in the Program text that might lead to a failure.
Systems embedded and otherwise, can be a human intensive task. Execution of many tests can be tiring as well as error-prone. Hence, there is a tremendous need for software testing. Most software development organizations, automate test-related testing, graphical user interface testing.
The process of test automation cannot be generalized. General purpose tools for test automation might not be applicable in all test environments
- Pounder for GUI testing
- Load & performance testing tools
- Regression testing tools:
- Test Tube
- Win Runner
- Diesel test
- Load Runner
AETG is an automated test generator that can be used in a variety of applications.
Random Testing is often used for the estimation of reliability of products with respect to specific events. Tools: DART Large development organizations develop their own test automation tools due primarily to the unique nature of their test requirements.
Developers and Testers as two Roles:
Developer is one who writes code & tester is one who tests code. Developer & Tester roles are different and roles. Thus, the same individual could be a developer and a testing. It is tough to imagine an individual who assumes the role of a developer but never that of a tester, and vice versa. Certainly, within a software development organization, test and hence has individual assumes the role of a testing. Similarly, the primary role of an individual who designs applications and writes code is that of a developer.
Software quality is a dimensional quantity and is measurable.
These can be divided to statically and dynamically.
Static quality attributes
It refers to the actual code and related documents.
Example: A poorly documented piece of code will be harder to understand and hence difficult to modify. A poorly structured code might be harder to modify and difficult to test.
Dynamic quality Attributes:
- It refers to the probability of failure free operation.
- it is always with reference to some artifact.
- For a Tester, correctness is w.r.t to the requirements
- for user correctness is w.r.t the user manual
- Refers to the availability of all the features listed in the requirements or in the user manual.
- Incomplete software is one that does not fully implement all features required.
- it is adherence to a common set of conventions and assumptions.
- Ex: All buttons in the user interface might follow a common-color coding convention.
- Refer to ease with which an application is used. This is an area in itself and there exist
- Techniques for usability testing.
- Usability testing is a testing done by its potential users.
- Users in turn test for ease of use, functionality as expected, performance, safety and security. Users thus serve as an important source of tests that developers or testers within the organization
- Might not have conceived.
- Usability testing is sometimes referred to as user-centric testing.
Refers to the time the application takes to perform a requested task. Performance is considered as a non-functional requirement.
- (Software reliability is the probability of failure free operation of software over a given time interval & under given conditions.) Software reliability can vary from one operational profile to another. It is that one might say “this program is lousy” while another might sing praises for the same program.
- The Software smoothness is the probability of failure free operation of software in its intended
- Environments. The term environment refers to the software and hardware elements needed to execute the application. These elements include the operating system (OS)hardware requirements and any other applications needed for communication
.Requirements, Behavior and Correctness:
- Product software is designed in response to requirements. During the development of the product, the requirement might have changed from what was formed originally. Regardless of any change, the expected behavior of the product is determined by the tester’s understanding of the requirements during testing.
- Example: Requirement 1: It is required to write a program that inputs and outputs the maximum of these.
- Requirement 2: It is required to write a program that inputs a sequence of integers and outputs the sorted version of this sequence.
- Suppose that the program max is developed to satisfy requirement 1 above. The output of max when the input integers are 13 and 19 can be easily determined to be 19.
- Suppose now that the tester wants to know if the two integers are to be input to the program on one line followed by a carriage return typed in after each number. The requirement as stated above fails to provide an answer to the question. For example
Illustrates the incompleteness requirements 1. The second requirement in (the above example is ambiguous. It is not clear from this requirement. The behavior of sort program, written to satisfy this requirement, will depend on the programmers while writing sort. Testers are facing to incomplete requirements. In such situations a testers may resort to a variety of ways to determine what behavior to expect from the test). the program is compared with the expected behavior to determine if the program functions as desired.