Upload
grant-nickolas-beasley
View
247
Download
0
Embed Size (px)
Citation preview
Software testing techniquesSoftware testing techniques
Interface Testing
Presentation on the seminar
Kaunas University of Technology
What is the interface ?
• In Object-oriented programming interface is what unrelated objects use for communication between them.
• It is a definition of methods and values which the objects agree upon in order to cooperate.
Types of the Interfaces
• Parameter interfaces
• Shared memory interfaces
• Procedural interfaces
• Message interfaces
Parameter interfaces
Function _2
Function_1
Par 1, Par 2, ..., Par n
// Example in C++ language
public class A
{
public:
int Calculate (int a, int b) { return a+b; }
int Calculate (int a) { .. }
int Calculate (int[] sk) { .. }
int Calculate (int* sk) { .. }
};
Shared memory interfaces
Shared memory block
Proc2Proc1 Proc4Proc3
// Example in C++ languagepublic class B{
int* common_number;
public B(){ common_number = NULL; }
public void Assign( int* a){
common_number = a;}
public void CalculateSum( int a){ if(common_number != NULL)
common_number = common_number + a;}
};
// Example in C++ language
int Main(..)
{
common_number;
A Obj1;
A Obj2;
A Obj3;
Obj1.Assign(&common_number);
Obj2.Assign(&common_number);
Obj3.Assign(&common_number);
Obj1.CalculateSum(1);
Obj2.CalculateSum(2);
Obj3.CalculateSum(3);
Return 0;
};
Procedural interfaces (API)
Component1
Func_1(..)
Func_2(..)
...
Func_n(..)
Component2
Func_1(..)
Func_2(..)
...
Func_m(..)
// Example in C# languageinterface IA{
int Calculate( int a, int b);};
public A : IA{
public override int Calculate( int a, int b){
return a + b;}
};
Int Main( … ){
IA Obj = new A();A.Calculate( 1, 2 );
}
Message interfaces
C1 C2
Msg:Init
Msg:Ready
Msg:Request
Msg:Response
Msg:End
...
// Example in C++ languagepublic class D{
public:int computer_nr;
int Calculate(){
int local_sum;…if (computer_nr != 0 ) MPI_Send ( local_sum ) ;else if () MPI_Recv ( local_sum );…
}};
Interface testing
• Interface testing is part of integration testing. • Usually interface testing is carried out by separate team.
Unit testing is carried out by developers themselves.
• The testing team does not posses the source code, so the components to them are like a black box .
• Two perfectly working components can successfully make a third one, which won’t work at all.
Interface errors
• Improperly used interface– A component which is calling another component is
producing errors in its interface.E.g..: Component passes incorrect number of parameters or they are passed in
incorrect order.
• Interface functionality misinterpretation– Functionality of called component is misinterpreted.E.g..: It is considered that if you pass array of 6 vertices to a procedure which draws
triangle, it will draw 2 triangles.
Interface errors (2)
• Synchronization errors– It happens when cooperating components works with
different speeds. E.g..: First component requests another component to fill a Data Table and for some
reason it starts to use it before the second component finishes the requested operation.
Recommendations for interface testing
• Check if returned value is correct– Check how objects are operating with different values
(with boundary values and commonly used);– In case an interface requires multiple parameters it is
required to check different parameter combinations.
Recommendations for interface testing (2)
• Check if component is working correctly if nothing is returned
– Nothing is changed;– Data is being changed (i.e. in Database);– Resources are being changed.
• Check if another interface/event/interrupt is being invoked when it is required.
– Force a component to produce an error and check if it throws an exception.
Recommendations for interface testing (3)
• Also:– Check if interface is invoked in the appropriate
context and under the right circumstances. – Invoke differed interface functions in different order.
Problems of the interface testing
• It may be difficult to determine if system is ready for testing.– E.g..: When performing an interface testing usually there are no
user interface to indicate that system is ready (e.g.. already loaded)
• It may be difficult to initialize required state of the object.• It may be difficult to determine test coverage.
Equivalent subdivision
• It is useful to divide inputs into equivalent groups i.e. such groups that are treated equally by unit which we are testing.
Example
• In case we are testing a procedure which is performing operation with positive two digit number we should check how procedure would react if that number is:– less than 10;– equal to 9 and 10;– from the interval 9 < number < 100;– higher then 100;– equal to 99 and 100;– from interval -100 < number < -9;
Stress testing
• Purpose of the stress testing is to check how system will perform under extreme conditions.E.g..: If system will crash when it will run low on RAM, or what will happen if one of components will be very busy.
• When performing stress testing it is possible to find a weakest place in the System which under extreme conditions will fail first.
Thank you for your attention
Questions
• What types of Interfaces were mentioned?• Who is performing interface testing?• What type of errors are related to using of
interfaces?• What is a stress testing?