In all testing, one of the important test scope that need to be implemented in any web interface is data loading testing. In this type of testing, mass records from a single message interface are generated to stimulate any possibility of encountering data loss and the immediate solution to rectify the problem.
Currently my project is going through SIT (system integration testing) and we recently experienced multiple records “missing” from the web service request. We validated the total records of this message interface “A” with the Customer and gone through a couple of rounds on that testing with the same set of data and this incident still happened and the defect pattern is different (initial = 765 missing, 1st retry = 349, 2nd retry = 428).
Further analysis, we tracked our error log and realized for those missing records that we attempted to download, they flagged an error status with reason code “Timeout Error”. The connection to the client’s web service gateway is via HTTPS and every time our program triggers to establish the connection we are to provide valid user information as provided by the Customer that will authorize us to have the access and setup the connection with the gateway.
We tackle the issue on “Timeout Error” and we includes the below codes to extend the receiving timeout:
HTTPConduit http = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(36000);
httpClientPolicy.setAllowChunking(false);
httpClientPolicy.setReceiveTimeout(120000);
http.setClient(httpClientPolicy);
With the above, we retry and able to grab all the records from the web service gateway. This is not a permanent solution to the “timeout error” and the team will monitor this scenario as we go along with the project.