3.1. Use Case Diagrams
Fig. 3
3.2. Activity diagram (diagram correction)
Fig.4
3.3. ER Diagram
Fig 5.
3.4. Project Algorithm:
The algorithm code for comparison of locations to find the nearest mechanic/fueler:
double x2 = Double.parseDouble(latitute.getText().toString());
double y2 = Double.parseDouble(longitute.getText().toString());
double x1 = location.getLatitude();
double y1 = location.getLongitude();
double distance = Math.sqrt(Math.pow(x2 – x1, 2) + Math.pow(y2 – y1, 2));
double theta = y1 – y2;
double lat = Math.toRadians(x2-x1);
double lng = Math.toRadians((y2-y1));
double a = Math.sin(lat / 2) * Math.
sin(lat / 2) + Math.cos(Math.toRadians((x1))) * Math.cos(Math.toRadians(x2)) * Math.sin(lng / 2) * Math.sin(lng / 2);
double b = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 – a));
distance = Math.sqrt(Math.pow(6371 * b * 1000,2));
3.5. Used Technologies
3.5.1. PHP:
PHP is a general-purpose scripting language that is especially suited to server-side web development, in which case PHP generally runs on a web server. Any PHP code in a requested file is executed by the PHP runtime, usually to create dynamic web page content or dynamic images used on websites or elsewhere.
3.5.2. My SQL:
MySQL is an open source relational database management system. Information in a MySQL database is stored in the form of related tables. MySQL databases are typically used for web application development (often-accessed using PHP). A MySQL database can be accessed (queried) directly using; C, C++, Eiffel, Java, Perl, PHP and Python computer languages. There is also third party support for connection in a Windows environment. MySQL databases are queried using a subset of the standard Structured Query Language (SQL) commands.
3.5.3. ANDROID STUDIO
Visual Studio Code is a lightweight but powerful source code editor, which runs on your desktop and is available for Windows, MacOS and Linux. It comes with built-in support for JavaScript, Typescript and Node.js and has a rich ecosystem of extensions for other languages (such as C++, C#, Python, PHP, Go) and runtimes (such as .NET and Unity).
CHAPTER NO 4
4. Project Planning
4.1. Project Timeline Summary
Project Phases:
? Creation of Database and hosting
? GUI of the project
? Consuming the database API for login and signup purposes.
? Web service for send/receive notifications to mechanics/fuelers
? Map integration and getting current location of user
? Ratings and reviews
? Admin panel
4.2. Project Timeline Details
Creation of database:
First of all we have created the database so that we can code for login and signup easily as we would already have the database hosted. And the hosting of database is done due to efficiency of the project as it is a mobile application so local database usage might cause storage issue for users.
Web service for send/receive notifications to mechanics/fuelers:
Notifications are send and received by using web service. So that, mechanics or fuelers are notified that they have got a request from any customer. Which they would accept or reject.
Map integration and getting current location of user:
Google map is integrated so that customers can see the distance of some nearest mechanics or fuelers by themselves. The current location of customer is also picked up using maps. Which later on will be used to compare with locations of mechanics or fuelers as per user need.
Ratings and Reviews:
Ratings and reviews about each and every mechanic and fuelers are taken from customer when they have ended their job so that they can see their ratings on their profile which will help them in improvement of their work and reviews are being check at admin panel which will be beneficial for the improvement of application.
Admin panel:
Admin panel is build on web to maintain the database and update fuel prices as they get change time to time and also to check the reviews about mechanics and fuelers and delete their account on fake account creation so that not anybody can create their profile as mechanic or fueler but can create their account just as customer.
4.3. Black-box Testing
Black Box Testing, also known as Behavioral Testing, is a software testing method in which the internal structure/ design/ implementation of the item being tested is not known to the tester. These tests can be functional or non-functional, though usually functional. Testing, either functional or non-functional, without reference to the internal structure of the component or system.
This technique is the procedure to derive and/or select test cases based on an analysis of the specification, either functional or non-functional, of a component or system without reference to its internal structure.
Black Box testing method is applicable to the following levels of software testing:
Integration Testing
System Testing
Acceptance Testing
The higher the level, and hence the bigger and more complex the box, the more black box testing method comes into use.
.
4.3.1. System Testing
System Testing is a level of the software testing where a complete and integrated software is tested. The purpose of this test is to evaluate the systems compliance with the specified requirements. The process of testing an integrated system to verify that it meets specified requirements. System testing is the testing of a complete and fully integrated software product. Usually software is only one element of a larger computer based system. Ultimately, software is interfaced with other software/hardware systems. System testing is actually a series of different tests whose sole purpose is to exercise the full computer based system. System testing involves testing the fully integrated applications including external peripherals in order to check how components interact with one another and with the system as a whole. This is also called End-to-End testing scenario. Verify thorough testing of every input in the application to check for desired outputs. Testing of the user’s experience with the application. .
That is a very basic description of what is involved in system testing. You need to build detailed test cases and test suites that test each aspect of the application as seen from the outside without looking at the actual source code.
4.3.2. Integration Testing
Integration Testing is a level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units. Test drivers and test stubs are used to assist in Integration Testing. Testing performed to expose defects in the interfaces and in the interactions between integrated components or systems. Component integration testing, system integration testing. Component integration testing performed to expose defects in the interfaces and interaction between integrated components. System integration testing the integration of systems and packages; testing interfaces to external organizations (e.g. Electronic Data Interchange, Internet).
4.3.3. Unit Testing
Unit testing is a level of software testing where individual units/ components of a software are tested. The purpose is to validate that each unit of the software performs as designed. Unit is the smallest testable part of software. It usually has one or a few inputs and usually a single output. In procedural programming, a unit may be an individual program, function, procedure, etc. In object-oriented programming, the smallest unit is a method, which may belong to a base/ super class, abstract class or derived/ child class. Unit testing frameworks, drivers, stubs, and mock/ fake objects are used to assist in unit testing. Unit Testing is normally performed by software developers themselves or their peers. In rare cases, independent software testers may also perform it.
4.3.4. User Acceptance Testing
User acceptance testing (UAT) is the last phase of the software testing process. During UAT, actual software users test the software to make sure it can handle required tasks in real-world scenarios, according to specifications. UAT is one of the final and critical software project procedures that must occur before newly developed software is rolled out to the market. UAT is also known as beta testing, application testing or end user testing. UAT directly involves the intended users of the software. UAT can be implemented by making software available for a free beta trial on the internet or through an in-house testing team comprised of actual software users.
4.4. Test Cases
A test case is a set of conditions or variables under which a tester will determine whether a system under test satisfies requirements or works correctly. The process of developing test cases can also help find problems in the requirements or design of an application.
TEST CASE # 1
Test Case Title: Login Process
Preconditions SignUp
Actions Enter correct username and password
Expected Results Account login succesfully
Tested By Syed Hamza Ali, Ramisha Mukhtar
Result Pass
TEST CASE # 2
Test Case Title: Fuel Order
Preconditions Logged In, Enter current location, enter amount of fuel
Actions Click on need fuel button to send request
Expected Results Request sent successfully
Tested By Syed Hamza Ali, Ramisha Mukhtar