SOFTWARE TESTING/TESTER

Question 1: SQL Syntaxes

This code creates a database called “student” if there is no other database with the same name. If there a database with the name as “student” it returns an error.

Creating a database

The code above selects a database called student for modification, then creates a table called “students” with four columns, which include “fName”,”sName”,”studentID” and “course” which cannot accept empty values. The primary key, which cannot be entered more than twice, is “studenID”.

This code selects a database called “student” and inserts data into a table called “students”. The code inserts “John” into a column called “fName” and “Dow” into a column called “sName”. Additionally, “1” and “Bsc. Computer Science” are inserted in columns “studentID” and “course” respectively.

This command changes the value of a column called “fName” to “Jane” where the studentID is 1.

The two commands above shows all the data contained in students table. However, the command below returns a specific row (“fName” and “sName”) where the studentID is 1.

Left join for data selection 

The command above deletes a the first name (fName), second name (sName), course, and student id details from the database whose studentID is 2.

The SQL command above selects the first and second names of students from table “students” and joins this information to the respective department they belong.

Right join

The code above selects the first name of the student from table student and joins them to the course and department of the student.

Inner join


Question 2: The Importance of Databases for Test Analysis 

The code above selects that is in both “students” and “course” table.

By definition, a test analyst refers to an individual who checks computer hardware or software before it sold or shipped to the customer. Databases are a critical part of computer software that should be tested to ensure that the application meets the specified needs of the customer. In essence, computer applications are extremely complex nowadays, require keen attention from all developers. Specifically, the more the complex the front end becomes, the more the backend develops intricacies. Consequently, it is crucial to test database from all angles to identify potential programming or computational errors that can easily be overlooked during development phase.

As a developer, the choice of database used to implement the backend determines significantly the amount of testing to be done. Further, the manner in which the database is implemented can also decrease the amount of testing. In other words, certain databases are prone to specific than others. Therefore, as a test analyst, it is imperative to select a database that makes it easy to identify errors.

A relational database is the best choice for any test analyst. With hierarchical or navigational structures to organizing data, the relational database contains relations. In this databases, every table, which is also known as an entity, has columns which are known as attributes. By definition, an entity refers to the object about which data is stored in the database. An example of an entity can be student or employee. Generally, attributes refer to the characteristics of the entity. In other words, they can be viewed as a field or columns that hold information about entities. For instance, a student might have a name and student identification number which characterize him or her. Therefore, it is possible to model data of a student and store it in a relational database that can be modified and retrieved systematically while ensuring integrity of the information.

The first reason why relational databases are the best choice for test analysts is that they enable developers to create relationships between entities as it is the case in the real world. For instance, students have a direct relationship with universities and their courses. Through relational databases, it is possible to represent such relationships in the database. In particular, these relationships are created using the primary key which is an attribute that is unique to each entity. For example, each student has a student identification that uniquely identifies him. Consequently, the identification number can be viewed as the primary key. The relationship between tables can be established through the use of foreign keys which are fields that link to the primary key of another table. By using primary keys, it becomes impossible to insert two records that share the same unique characteristic, speeding up queries.

The second reason why relational databases are important to test analyst is data integrity. According to , relational databases make it easy for developers to enforce data integrity based in integrity rules or constraints. The three forms of integrity constraints, which can be implemented in relational databases, include entity, referential, and domain. Entity integrity is enforced by ensuring that every table has a primary key field that cannot be null. By implementing such a constraint, the relational database prevents the entry of duplicate data or rows which can waste disc space and slow down queries. Referential integrity is concerned about foreign key, and this rules states any foreign key can only one of two states. The first state is that the key refers a value of primary key of another table in the database which increases dependencies between tables. The second state is that the foreign key can be null which implies that there is no relationship between the two entities. Lastly, domain integrity rule states that all fields in a relational database ought to be declared upon a defined domain.

Question 3: API versus Web Services

Definitions

An application programming interface (API) refers to a specification envisioned to be utilized communication between computer components. Typically, an API can comprise specifications for routines, object classes, variables, and data structures (Ong et al. 2015). When using Java programming language, for instance, there are several APIs, including the date API that can be imported using the code below which enables the developer to use the routines and classes within it (Ong et al. 2015).

In the context of web development, an API is characteristically defined as a collection of Hypertext Transfer Protocol (HTTP) request messages, coupled with the specification of structure of response messages, which is often in an Extensible Markup Language (XML) or Javascript Object Notation (JSON) format.

 A web service refers to a standards-based, language-skeptical application entity which accepts particularly designed formatted requests from other software on remote machines through transport or neutral communication protocols (Elmasri & Navathe 2016). Simply, a web service can be viewed as an application which offers Web API. In essence, web services utilize the web execute application-to-application integration (Ong et al. 2015). The specific examples of web services include Web Services Description Language (WSDL), Simple Object Access Protocol (SOAP), Resource Description Framework (RDF), and Really Simple Syndication (RSS).

Differences Between APIs and Web Services

Web services and APIs are ways communication between clients and servers. In fact, they are often utilized mistakenly as a synonym for each other but there are various different between them (Coronel & Morris 2016). The table below presents the difference between them.

APIs

Web Services

Not all of them are web services

All of them are APIs

Can be used within an internet information system or an application

Can only be used on internet information system

Can utilize any form of communication

Only uses SOAP, REST, and XML-RPC form of communication

It is open source, and it can be deployed by any clients which understands XML or JSON

It is not open source, although it can deployed by any client that understands XML

 

For web services, the tools that can be utilized for testing include SoapUI, TestingWhiz, SOAtest, Postman, vRest, HttpMaster, SOAPSonar, Storm, WebInject, and Runscope. For APIs, testing tools include Karate DSL, HttpMaster Express, Rest-Assured, RestSharp, Rest Console, RoboHydra, Hippie-Swagger, Pyresttest, Airborne, ZeroCode, and Citrus Framework (Ong et al. 2015). Generally, some tools, such as Postman and SoapUI can be used in both web service and API testing.

Question 4: Mobile Testing, Mobile Native App, and Mobile Web App

Mobile Testing

Mobile testing refers to a process used to assess solutions that are developed for mobile devices for functionality, consistency, and usability. In several respects, mobile testing is extremely different from other forms of IT testing (Serrano-Guerrero et al. 2015). From methodology to the actual testing tools, general IT testing can be applied to mobile testing. However, there are specific and critical areas that should be given more attention when conducting mobile testing as compared to non-mobile testing (Elmasri & Navathe 2016). The area is connectivity given that most mobile applications rely significantly on a network for communication. Therefore, automated network simulations as well as manual testing in real network are needed to guarantee reliable behavior. The second aspect of mobile testing that differs from non-mobile testing is physical hardware examination (Serrano-Guerrero et al. 2015). Essentially, the physical characteristics of mobile devices vary significantly from the non-mobile solutions. Consequently, it is important to consider the screen size, touch and gesture capabilities, orientation, camera, and Global Positioning System (GPS) of the mobile solution when testing (Serrano-Guerrero et al. 2015). Notably, it is also to pay attention to the relationship between the mobile application and third parties. The majority of mobile applications are distributed through public and open application stores, such as Google PlayStore, Apple Appstore, and Microsoft Store (Ong et al. 2015). If a mobile application fails to conform to the requirements of third party, it might be rejected. Additionally, the updates provided by these third parties should be compatible with the mobile application without leading to failures.  

Differences between Mobile Native App and Mobile Web App

By definition, a web app is an internet-enabled software which is accessible to the user through he web browser of a mobile device. In this case, it is not necessary for the user of the mobile device to download the software before accessing it (Kaur & Sehra 2015). A good example web mobile application is website, such as Facebook and Gmail, which can be executed through the web browser of a mobile device (Serrano-Guerrero et al. 2015). By contrast, a native app refers to a solution developed mainly for one particular mobile device, and it is downloaded and installed. Usually, the native apps are provided to users through app marketplace, such as Google Play store and Apple Appstore for Android and iOS devices respectively. Some examples of native mobile applications include Whatsapp and word processor for mobile phones (Gao et al. 2014). However, some developers develop both native and web mobile applications to serve a wide array of user needs. For instance, Facebook has both native app and web app. In general, the main difference between the two forms resides in their ability to be downloaded and installed in the device.