Tuesday, September 24, 2013

Testing a web service (Part 2)

Ok, sorry for delays although it appears nobody was around here for a while.

Here is my test plan (For some reasons I'm not going to use SoapUI or JMeter to test the web service. We will get to them later:

Test Plan
(Webservicex.net currency converter)
Functionality, Reliability, Sanity, Robustness, API

Document Change History
Version Number
Date
Contributor
Description

V1.0
1/9/2013
First version created









1. Product purpose
This product shall be able to give conversation rate of different currencies. By using this product, given any two country currency code, product shall return them current conversation rate. The returned values must be correct, accurate and reliable.
2. History
N/A
3. Technical Requirements
·         Stable internet connection and all standard ports should be open.
·         For Selenium IDE Test version: FireFox browser (version 16+), Selenium IDE extension, Javascript enable.
·         For Python Test version, Python 2.x compiler with PySimpleSOAP and httplib2-0.7.7 libraries installed.
·         For Selenium Web Driver Test version, Python 2.x compiler with Selenium web driver, downloadable from http://pypi.python.org/pypi/selenium







4. System test approach
Three different approaches were selected to perform the test:
1.      Python language will be used to test web service. The python test script does make use of pysimplesoap and httplib2 packages and doesn't need any additional automation/testing tools. Therefore, values are sent and received directly using web service and no third party (i.e. web page) would be involved. This method is useful in to test and simulate test conditions on executed applications in the user's PC (e.g. downloaded games).
2.      Selenium IDE, is chosen to test a php file in a different web server which uses the Test plan subject. To make Selenium IDE more dynamic and efficient, Javascript is being used for making loops and decisions.
3.      Selenium Web Driver, gives us the flexibility of Python and Power of automation and simulation of Selenium. This test is designed to use Selenium Web Driver on the webservicex.net itself.

5. Entry and Exit Criteria
Entry criteria:
  • Codes and web services must be ready and functional.
  • The webservicex.net example page must work without problem.

Exit criteria:
  • All High priority test cases must pass, including:
    • Requesting conversion rate between USD and BRIC nations currencies.
    • Requesting conversion rate between USD and XYZ (invalid currency)
  • Two of three Medium priority test cases pass, including:
    • Requesting conversion rate between one of BRIC nations currencies with the another one from the same group.
    • Requesting conversion rate between any currency with itself.
    • Requesting conversion rate between nothing (Null) and any currency.





6. Features to be tested
Test Cases & Prioritization
Test Case
Priority
Excel Sheet
Python Script
Selenium IDE
Selenium Web driver
1-USD2BRIC
High
YES
YES
YES
YES
Reason of priority: I assume this application is being used by XYZ, which is a USA corporation using USD as primary currency. So it is very important to make sure all players (users) in targeted countries can buy XYZ products with an accurate price and without any problems caused by system failures.
2-BRIC2BRIC
Medium
YES
YES
YES
YES
Reason of priority: Same as above, functionality and accuracy of currency conversion rates are important, but since this test is being run for XYZ and USD is the primary currency, this test case will have a little less priority than 1-USD2BRIC
3-USD2XYZ
High
YES
YES
YES
YES
Reason of priority: It is very important to prevent unexpected failures and hack activity attempts. It could be possible that a hacker inject a fake currency in the page or application and tries to get huge advantage over it. Other than that, sometimes system sends wrong strings because of an undiscovered defect, or it could happen during data transfer process from client computers to servers, especially in old internet connections that are sensitive to electromagnetic noises.
4-Null-Test
Medium
YES
YES
YES
YES
Reason of priority: This is not as important as 3-USD2XYZ but it is necessary being assured that empty values wouldn't cause failures. That may happen specially when the connection suddenly drops or a connection "glitch" happens.
5-Currency 2Itself-Check
Medium
YES
YES
YES
YES
Reason of priority: Replicated input value problem happens many time by various reasons. It could be a bug, communication, hack attempt or even manual entry mistakes. However, the important thing is to not only make sure this situation is predicted in our site, but also we need to be confident that the Currency Converter service is returning the same value for all currencies. Currently (1/9/2013 3:10 PM PST) this test case is in failed status because it returns 0 for USD-USD but the return value for other currencies is 1.
6-ZWD-Test-Case
Low
YES
YES
YES
YES
Reason of priority: In this moment (1/9/2013 3:11 PM PST), any request of conversion rate from/to ZWD currency returns 0, this is not expected because it is not possible and can cause problems. The only reason this test case's priority is set on Low, is because ZWD is not being noticeably used. But it is recommended to check all other minor currencies and fix this defect as soon as possible.


Major test conditions
Test Condition
Test Case
Successful conversation from USD to INR & vice versa
1-USD2BRIC
Successful conversation from USD to RUB & vice versa
1-USD2BRIC
Successful conversation from USD to BRL & vice versa
1-USD2BRIC
Successful conversation from USD to CNY & vice versa
1-USD2BRIC
Successful conversation from INR to RUB & vice versa
2-BRIC2BRIC
Successful conversation from INR to BRL & vice versa
2-BRIC2BRIC
Successful conversation from INR to CNY & vice versa
2-BRIC2BRIC
Successful conversation from RUB to BRL & vice versa
2-BRIC2BRIC
Successful conversation from RUB to CNY & vice versa
2-BRIC2BRIC
Successful conversation from BRL to CNY & vice versa
2-BRIC2BRIC
Unsuccessful conversion from XYZ to USD & vice versa
3-USD2XYZ
Unsuccessful conversation from empty currency values
4-Null-Test
Constant conversation test result from same currency (e.g. USD to USD)
5-Currency2Itself-Check
Unsuccessful conversion from ZWD to any other currency
6-ZWD-Test-Case
7. Features not to be tested
·         Web service’s basic functionality necessary to pass and get data from service.
·         Correctness of the conversion rates.
·         Requesting conversion rates for countries which are not required (except ZWD as an extra test case)
8. Performance to be tested
            NA
9. Performance not to be tested
            NA
10. Installation to be tested
Web service (http://www.webservicex.net/CurrencyConvertor.asmx?op=ConversionRate) should be tested by Python script using SOAP client. Python and relevant libraries and Selenium IDE and Selenium Web Driver should be installed on test machine,
11. Installation not to be tested

            NA

No comments:

Post a Comment