Monday, January 28, 2019

Quality Assurance Vs Quality Control

What is Quality????
Does it means the condition of the item???
So, Do you have any idea regarding what is quality? Before starting software quality assurance, we should get to know what is quality. The fundamental knowledge to begin Software Quality Assurance!!!!!!
Lets Start......!!!!!!!
Cheers.... !!!!!!!
-------------------------------------------------
Do you know that when it comes to the word of 'Quality', there are two elements..
Ohh yes !!!!
01. Quality Assurance. (QA)
02. Quality Control. (QC)
So then, how does this quality can be measured?? Or how we can derive the quality aspects??
01. From the customers point of view
02. From the producers point of view.
What are the quality aspects from customer point of view?
01. There should be the fitness for customer to user.And also customer needs should be fulfilled to achieve high quality from the customer point of view.
So, What are the quality aspects from producer point of view?
01. The main aspect is to meet the requirements.
Software quality includes activities related to both PROCESS and PRODUCT.
So simply, The activities related to software work process are defined in Quality Assurance.
Also, the activities related to software or the particular product is defined in the Quality Control.

Wednesday, January 10, 2018

Page Object Model

Page Object Model

Page Object Model has now a days become very popular test automation framework in the industry and many companies are using it because of its easy test maintenance and reduces the duplication of code.
The main advantage of Page Object Model is that if the UI changes for any page, it don’t require us to change any tests, we just need to change only the code within the page objects (Only at one place). Many other tools which are using selenium, are following the page object model.

In the above screen shot, we have first identified the locators and defined it on the top after the class. In this way we can achieve readability of test scripts and we can easily identify locators and change them if needed at only one place.
Page Object model is writing all the functionalities / reusable components of a page that we want to automate in a separate class. Say now if we consider four pages as Home page, Login page, Create Account and Forgot password page etc.
As per Google Wiki Page Object
"Within your web app’s UI there are areas that your tests interact with. A Page Object simply models these as objects within the test code. This reduces the amount of duplicated code and means that if the UI changes, the fix need only be applied in one place."
For the above pages we will create classes as HomePage.class, LoginPage.class, CreateAccountPage.class and ForgotPasswordPage.class. In each class we will identify and write reusable methods which are specific to a page.

Here in The first page 'google home page' which will have many options like Search, Sign In, +You, Images, privacy etc links. based on the user action it navigates to respective page. Now all functionalities that we want to automate should have reusable methods/components for each page.
Now as our main page is google page we can navigate to other pages by clicking on any link from the google page. When ever we are navigating to other page, we need to return that page object. Else Return the current page object as this action doesn't navigate to a other page represented by another Page Object
The Page Object model provides the following advantages.
1. There is clean separation between test code and page specific code such as locators (or their use if you’re using a UI map) and layout.
2. There is single repository for the services or operations offered by the page rather than having these services scattered through out the tests.
In both cases this allows any modifications required due to UI changes to all be made in one place. Useful information on this technique can be found on numerous blogs as this ‘test design pattern’ is becoming widely used. We encourage the reader who wishes to know more to search the internet for blogs on this subject. Many have written on this design pattern and can provide useful tips beyond the scope of this user guide. To get you started, though, we’ll illustrate page objects with a simple example.
Example: Lets us take a simple login example:
  /***
   * Tests login functionality
   */
   public void loginTestCase() {
        driver.navigate().to(URL);
        driver.findElement(By.name("signIn")).click();
        driver.findElement(By.id("username")).sendKeys("testuser");
        driver.findElement(By.id("password")).sendKeys("testpassword");
        driver.findElement(By.name("loginbtn")).click();
          
        WebDriverWait wait = new WebDriverWait(driver, 10);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("profile")));
        String Expected=driver.findElement(By.id("message")).getText();
        Assert.assertEquals(Expected, "Welcome");
   }
If you observe the above test, there is no separation of test and test locators. If this is the case, in future if the UI changes, it must be changed in multiple places. It will also become difficult to identify where these locators are used as the chances of locators are being used in multiple tests are more.
We will try to rewrite the above example by implementing the page object model:
/***
 * Tests login functionality
 */
       public void loginTestCase() {
 // To go to home page
  homePage.gotoHomePage();
 //To click on SignIn link
  accountLoginPage = homePage.clickOnSignIn()
 //To verify if user is navigated to sign-in page
  Assert.assertTrue(accountLoginPage.verifyPage());
 //Login to the account
  accountLoginPage.userLogin(username,password);
 //To verify if user is navigated to user home page after successfull login
  Assert.assertTrue(userHomePage.verifyPage());
 }
In the above test, we have not used any locators. It is completely separated by driver.findElement 's, waits, exceptions and no static values in the code etc.We will be working only with the methods which are defined in multiple pages. Based on test, we will navigate to the required page and access those page methods.

Wednesday, April 6, 2016

Cucumber Feature Files Configuring for automation Testing

Cucumber is a tool based on Behavior Driven Development (BDD) framework which is used to write acceptance tests for web application. It allows automation of functional validation in easily readable and understandable format to Business Analysts, Developers, Testers, etc.Cucumber can be used along with Selenium, Watir, and Capybara etc. Cucumber supports many other languages like Perl, PHP, Python, .Net etc.

When configuring cucumber in to Eclipse there should be kept some downloaded files from maven repository.
After importing these prerequisites to the project, should download cucumber plugin for Eclipse for having cucumber features in to Eclipse. Download cucumber eclipse plugin to install in the feature file in eclipse by using the following link by moving to the help tab in eclipse and then selects install new software and download the plugin and save it in eclipse.
After you creating your project and feature files, you should remove one external jar file before run the feature file. If you forget to remove that jar file, the feature file will not be successfully executed and there will be an unexceptional error. For avoiding this error message, you should remove the imported cucumber jar file which displayed from the below.

 

Wednesday, March 30, 2016

Installation of Mantis Bug Tracker

MantisBT is a web based bug tracking system that was first made available to the public in November 2000. Over time it has matured and gained a lot of popularity, and now it has become one of the most popular open source bug/issue tracking systems. MantisBT is developed in PHP, with support to multiple database backends including MySQL, MS SQL, PostgreSQL and DB2.

MantisBT can be downloaded from the following link.
https://www.mantisbt.org/download.php

Then MantisBT should be configured as follows for web based accessing through team members.

smtp.gmail.com
$g_log_destination         = 'file:C:\mantisbt.log';
$g_smtp_port = '587';

   $g_phpMailer_method = PHPMAILER_METHOD_SMTP;
   $g_smtp_host = 'smtp.gmail.com';
   $g_smtp_username = 'username@gmail.com';
   $g_smtp_password = 'yourpassword';
   $g_smtp_connection_mode = 'ssl';
   $g_smtp_port = 465;


Now MantisBT can be used for bug tracking and reporting in software Quality Assurance.

mStudio in Microimage Mobile Media (Pvt) Ltd

Microimage Holdings is a well reputed company for the business domains of Human Capital Management, Broadcast media and digital convergence and digital Agency as Microimage Mobile Media (Pvt) Ltd, Microimage HCM (Pvt) Ltd and Antyra (Pvt) Ltd. Microimage is recognized for its Achievements as a Business and IT Leader and a responsible Business Entity.

 
Microimage mStudio is a fully fledged automation solution to completely automate the media supply chain of a radio station. The solution encompasses Library maintenance, Scheduling, DJ Console to invoicing. The core of a radio station can be backboned by the solution with minimum involvement of users, where human input is required to provide the ‘personality’ to the channel.

The features of this mStudio can be listed as below.
  • mTraffic 
mTraffic provides comprehensive commercial traffic management & scheduling. And ensures the commercial play list without product /competitor clash and allowing DJ’s to focus on creativity and enhance their personality aspect.

  • mLogger 
mLogger is used to record radio station broadcast on an external drive or computer hard drive. This is an on air transmission logger.
  • mStreaming 
mStreaming delivers live streaming over the internet by using the casting methods of SHOUT cast, ICE cast, WMA cast in making the connection with the streaming server.
  • mInfoCentre 
mInfoCentre is a web based application component which is used for comprehensive reporting, analysis and business intelligence.
  • mCollector 
mCollecter is innovative media collecting software which stored all the media in a one central location and distribute to the entire channels request at a given time. It is used as a module for comprehensive rule based music scheduling.
  • mNews 
mNews is a web based application that provides workflow based solution for news room operations. 
  • mConsole 
mConsole is an impressively innovative playout console with multi-mode play-out options and responsible for pumping media according to the schedule or requests to the listeners mixed with the presenter’s personality together with infotainment items.
  • mEdit 
mEdit is an audio editing module which is tightly integrated to mCollector.

  • mBilling 
mBilling provides required features for invoicing and client management and is mainly used to register work orders of clients. In addition for registering work orders, this is used to register clients, marketing personals, agency, services, time belts, commercial clocks, durations and product categories.

90% of the broadcasting companies uses Microimage mStudio for their end to end broadcast automation platform. And the next release of mStudio is shaping up to deliver a great user experience with social, digital and visual features.

Tuesday, December 22, 2015

How to install monkey Runner and work on it.

1.monkeyrunner

monkeyrunner is a automation tool which provides us to conduct BlackBox testing on android applications.
The monkeyrunner tool provides a Python API for writing programs that control an Android device or emulator from outside of Android code. With monkeyrunner, you can write a Python program that installs an Android application or test package, runs it, sends keystrokes to it, takes screenshots of its user interface, and stores screenshots on the workstation.
The monkeyrunner tool is primarily designed to test applications and devices at the functional/framework level and for running unit test suites, but you are free to use it for other purposes.

2.What all we need before we get it started?

We need the below:

1. Windows 7/8 OS
2. Java 6
3. Eclipse
4. Android device running min android version 2.3.4
5. Python
6. Jython
7. Application to be tested

3.How to setup monkeyrunner in Eclipse?

1. First download Python from this site: http://www.python.org/getit/
2. Second download Jython.jar file from this site: http://www.jython.org/downloads.html
3. Download the Jython Installer from this site: https://wiki.python.org/jython/DownloadInstructions
3. After downloading the above files install Python.

4. Basic Install for Jython:

After downloading Jython installer, either double click the jython_installer-
2.5.2.jar
or run java with the -jar option Quote:

java -jar jython_installer-2.5.2.jar

5. Now after completion of this we will move to Eclipse and download PyDev from Eclipse market place as shown below:

6. When finished install, Go to Window->Preferences->PyDev->Interpreters - Jython interpreters : Click [new...] and got o the path where you have installed Jython.

For me it is at C:/jython/jython.jar - Libraries : Click [New Jar/Zip(s)] and enter your ANDROID_SDK_PATH/tools/lib/monkeyrunner.jar as shown below:

7. After this Go to Window->Preferences->PyDev->Interpreters-> - Python interpreters :

Click [new...] and got o the path where you have installed Python.
For me it is at C:/Python33/python.jar as shown below:

4. How to write and execute monkeyrunner Script? 1. Go to File-> New -> PyDev Project -> Give any project Name and select Jython as shown below:

2. Now right click on the newly created project -> New -> PyDev Module

3. Give any Name to the project but leave the package field empty as shown below:

Friday, December 4, 2015

2015.12.04

I have created the database design document for Employee Management System. The Documentation is attached to my google drive.