After building the Mobile Application, it's time to test the application's functionality and quality of the product. Mobile application testing is a process by which application software developed for handheld mobile devices is tested for its functionality, usability and consistency. Mobile application testing can be an automated or manual type of testing. Mobile Application testing makes helps to improve the quality of Mobile Apps.There are many types of Mobile Application testing. But here we are going to discuss two among them. Those are,
- Black-Box Testing
- White-Box Testing
Black-Box Testing:
Black box testing is a software testing techniques in which functionality of the software under test (SUT) is tested without looking at the internal code structure, implementation details and knowledge of internal paths of the software. In BlackBox Testing we just focus on inputs and output of the software system.
The following are the functional requirements for the application which we performed the Black Box Testing:
Firstly, We assume that app is opened,
Requirement 1:-
As a User, I should be able to add a new transaction record.
Test Case 1: Select Transaction Type
Expect: New Transaction form should reflect the transaction type I selected
Steps:
- Click new Transaction Button
- Click Transaction Type
- Check if the new transaction form shows the correct transaction type
Test Case 2: Form to enter transaction data
Expect: When I select new transaction type, a form should be opened to enter data
Steps:
- Click new transaction button
- Click desired transaction type
- Check if a form opens with fields to enter transaction data
Test Case 3: Data entered in form should be saved
Expect: When I click the save button, the data entered should be saved
Steps:
- Click new transaction button
- Click desired transaction type
- Fill in the form
- Click save icon on top bar
- Entry should be reflected on the homescreen transaction list
Requirement 2:
As a User,I like to have privacy to application. So I recommend to have password
Test Case 1: Select Manage PIN Lock in settings
Expect: A Popup must be seen on the screen to enter the pin.
Steps:
- Go to Settings
- Click Manage PIN Lock
- Check whether the popup displays or not.
Test Case 2: Enter the PIN and save it for the privacy of the application
Expect: After entering the PIN in desired column, it must save.
Steps:
- Go to Settings and Click the Manage PIN Lock
- Enter the PIN and Save it
- Check whether it saves or not.
Test Case 3: The app must be open with the PIN only.
Expect : Now again open app, then it should ask for the PIN to enter into the app.
Steps:
- Go to Settings and Click the Manage PIN Lock
- Enter the PIN and Save it.
- Check whether it asks for a PIN or not.
Requirement 3:
As a User,I want icons in application so that i can identify my categories easily.
Test Case 1: While entering the transaction, the category should also be selected.
Expect: When selecting the category, there must be so many categories to choose.
Steps:
- Click new transaction button
- Click desired transaction type
- After entering amount, choose the category of desired type.
- Verify either working or not.
Test Case 2: Show the Transaction in the Homescreen with the category icon.
Expect: After saving the transaction, It will display with icon in the Home screen.
Steps:
- Click new transaction button
- After entering amount, choose the category of desired type.
- In homescreen it will show icon for the category which we added the transaction..
- Verify either working or not.
Requirement 4:
As a User,I want the notes so that i can enter my expenses to which i have spent.
Test Case 1: While entering the transaction, we may enter the notes.
Expect: When selecting the category, we may enter short notes for the transaction. It is our choice but it's not compulsory to add
Steps:
- Click new transaction button
- Click desired transaction type
- We can enter the notes for the transaction.
- Test whether it working or not
Test Case 2: Show the Transaction in the Homescreen with the short notes.
Expect: After saving the transaction, It will display with short notes in the Home screen.
Steps:
- Click new transaction button
- Save the transaction
- Display the shortnotes under the transaction we entered.
Requirement 5:
As a User, I want the feature ‘Delete’ because sometimes i may enter my expenditure in wrong category.
Test Case 1:- Select the transaction on the Homescreen to ‘Delete’.
Expect: We should get a popup, to edit or delete the transaction.
Steps:
- Select the transaction
- Long press the selected transaction
- Display poup to edit or delete
- Check if it works or not.
Test Case 2: Delete the transaction after choosing the ‘Delete’ option.
Expect: After choosing the Delete option, the transaction should not display in the Homescreen and balance must also be correct.
Steps:
- Select the transaction
- Long press the selected transaction
- Delete option is choosen and continued
- transaction is deleted in Home screen and the balance is rectified.
White-Box Testing:
White Box Testing is the testing of a software solution's internal coding and infrastructure. It focuses primarily on strengthening security, the flow of inputs and outputs through the application, and improving design and usability. In white-box testing an internal perspective of the system, as well as programming skills, are used to design test cases.
The following are the functional requirements for the application which we performed the White Box Testing:
Requirement 1:
As a user,I want to categorize my expenses so I like to have Different categories to classify a customer, I want to categorize my expenses. So I like to have different categories to classify.
Test Case 1: createNewCategory
Expect: A new category is created in the database
Steps:
- Create a new Category Model
- Call controller's Create Method with the category model as input
- Get an id for the created category
- get the category back from database to compare if they are same
Test Case 2: removeOneCategory
Expect: A category is removed from the database
Steps:
- A Category Model is selected
- Call controller's Remove Method with the category model
- Remove an id for the selected category
- Refer from database to compare if they are same
Test Case 3: fetchOneCategory
Expect: A category is fetched if it matches with category name which is in database.
Steps:
- call getOne function with known category id from database
- check if the known category is returned
- call getone function with unknown id
- check if null is returned
Requirement 2:
As a User,I like to have privacy to application. So I recommend to have password.
Test Case 1: enablePinLock
Expect: User can enable a PIN lock for the application.
Steps:
- Create a PIN
- Call controller's create method for PIN model as input
- Get an id for the created Pin in database
- Refer from database to compare if they are same
Test Case 2: removePinLockIfValidPinEntered
Expect: Remove the PIN Lock if the entered PIN valid from the DataBase.
Steps:
- Enter the PIN
- Call controller's method to validate the PIN
- If it similar with the database,then the PIN is removed.
- Verify if they are same
Requirement 3:
As a User, I like to have small database to manage the app data
Test Case 1: createNewEntry
Expect: The entry must be created in the database.
Steps:
- Create a new entry
- Call controller's Create Method as input for the respective entry
- Get an id from the database.
- compare the database if they are same
Test Case 2: delete
Expect: The specific entry can be removed from the database.
Steps:
- A entry is selected
- Call controller's Remove Method
- Remove an id from the database.
- Refer from database to compare if they are same
Requirement 4:
As a User, I want to know payment method so that i can calculate the payments through different payment options.
Test Case 1: createNew
Expect: A payment type can be created in the database.
Steps:
- Create a new Payment type Model
- Call controller's Create Method with the payment model as input
- Get an id for the created payment type
- get the payment back from database to compare if they are same
Test Case 2: removeOne
Expect: The selected payment type can be removed from the database.
Steps:
- A payment type Model is selected
- Call controller's Remove Method with the payment type model
- Remove an id for the selected payment type
- Refer from database to compare if they are same
Requirement 5:
As a User, I have handle the date and large numbers in application.
Test Case 1: UtilsTest.handleLargeNumbers_TILL_10_000
Explanation: If input is less than 10000, output is the input upto 2 decimal places
Test Case 2: UtilsTest.handleLargeNumbers_TILL_MILLION
Explanation: If input is less than million but more than 10000, then it'll show the input as k, for example, input => 25000, then it'll output "25 K".
Test Case 3: UtilsTest.getSHA1
Explanation: If input is a string, output is a byte array of sha1 encrypted hash.
Test Case 4: UtilsTest.getHumanDatE_from_calendar
Explanation: Takes a calendar object as input and output the date in this format "Day, Month Date, Year", e.g. input Calendar with date set as 26.06.2017, output will be "Mon, Jun 26, 2017".
Summary of Changes:
So far, we had meeting with the customer. The customer has mentioned few changes in the our app. That is,
- Multi select option for category in search
- Enabled recurring transactions