.

Unit test output analysisExample of bug found during integration testsReference Model ('Software Testing Foundations' by Spillner et al.)

.

Why haven't unit tests spot the bug?Technologies integratedFailureDefectDesign CauseFailureDefectCause

.

1The receiving component cannot operate.A component transmits syntactically wrong data. Functional fault in a component

.

2--Incompatible interface formats

.

3Single sign-on server was tested only with simple servlet app that can understand HTTP redirect (redirect to login page)Flex with J2EE application via HTTP/AMFSession in Flex application never expires.Flex frontend does not understand HTTP redirect response about session expired from single sign-on server We forgot that Flex app accepts AMF responses, not pure HTTP respones.Protocols faults

.

4A component transmits no data. Functional fault in a component

.

5Incompatible interface formats

.

6?Our system cannot recognize the order of packages from the system to ingtegrate with.Packages are sent by mobile devices in a certain order. Packages are received by the a proxy (load balancer?) and forwarder to different servers. Servers process pakcages and forward them to the central server with which we integrated. However, packages arrive in a arbitrary order, different than the original order, depending on the processing speeding of the servers. ?Protocols faults

.

7The receiving component crashes.A component transmits syntactically wrong data. Functional fault in a component

.

8Incompatible interface formats

.

9During tests no unit test was performed to test removal of elements during array creation.Frontend with backendBackend fails when requested to remove elements from array to is during creation on the frontend.Frontend allows to configure array A and add/remove elements B to/from array A in the same view.
* When elements are added to the array, frontend caches all changes and commit the all for the whole array
* When elements are removed from the array, its removal request is sent to the backend separately.
Hence, removing element from array, that has not been yet created on the backend causes error
Inconsistent design of frontend behaviourProtocols faults

.

10A component transmits no data. Functional fault in a component

.

11Installation script was tested directly via Oracle tools: SQL Developer and sqlplus command line tool.Java application with Oracle DB via JDBC driverMigration tool fails to reset DB schema.Oracle JDBC driver does not accepts REM comments in SQL script, even if this is correct in Oracle 10g SQL dialect.Incompatible interface formats

.

12Protocols faults

.

13Because unit tests where done by different teams that interpreted and implemented specification differently.Frontend with backendFrontend does not differentiate between elements previously selected and elements not selected by the user. It renders both in the same way.* Backend provides all elements, with selected elements marked with a flag
* Frontend expectes only selected elements to be provided
Specification of interface between backend and frontend was unclear what exactly should be provided.Receiving components acts incorrectly.The receiving component interprets the received data in a different way.Contradicting or misinterpreted specifications

.

?3 Web applications via HTTP protocolA user finds a train ticket in system A and pays for it in bank B. EPAY integrates both systems allowing to exchange order request and payment confirmation in a secure way. B may withdraw money from user's acoount to EPAY twice but EPAY provides only a single ticket to the user.* Bank did not recognize two identical transaction requests
* EPAY does not match two money transfers for the same ticket with payment confirmation from the bank B.
The protocol allows the same HTTP request to be sent twice, but does not recognize situations when the request refers to the same transaction request

.

14????Functional fault of a component

.

15Because unit test were done in situation where none of the systems competed for access to the shared resource (filesystem).Two EJB via SOAP Web services and filesystemSystem A tries to remove a file that is still being read by system BThe problem is that whether this approach works when waiting period is sufficiently long, which may be not true in case of some delays in NFS or in case of large files. Incorrect protocol for synchronizing access to the shared resource.Data is transmitted correctly... butData is transmitted at the wrong time, or is late.Time problem

.

16??When integrating with the external device it was not possible to communicate with it.
Adding delay in message sending enabled to communication.
???Intervals between the transmissions are too shortThroughput problem

.

17Load problem

.

18Capacity problem