Wednesday, May 25, 2022

Types of Software Testing

 Software Testing:

  •  The process of finding errors in the developed product.
  •  Testing the software whether it is working according to the requirement.


Two ways of Testing:

 1. Manual Testing

 2. Automation Testing


Manual Testing:

  •  Manual testing is verifying the software manually and finding errors without the intervention of any tools.
  •  The tester has to execute each test case one by one.
  •  They give input and manually verify the output.


Automation Testing:

  •  Automation Testing is testing the software with the help of some automation tools like Selenium.
  •  The code is run for automating tests and the input data is given to the tool.
  •  The output data is compared with the expected results.
  •  Automation testing is generally performed for repeated tasks so that time can be saved.


Levels of Testing:

 1. Unit Testing

 2. System Testing

 3. Integration Testing

 4. Acceptance Testing


1. Unit Testing:

  •  Unit testing is the first level of testing usually performed by the developers.

Advantage: Error can be detected at an early stage saving time and money to fix it.


2. System Testing:

  •  Complete application testing.
  •  Done by Testers.
  •  Black Box Testing Techniques.
  •  FRS and test case document.

System Testing Categories:

  •  Usability Testing
  •  Functional Testing
  •  Performance Testing
  •  Security Testing


3. Integration Testing:

  •  Combining/merging modules.
  •  Done by Developers.
  •  White box testing technique.

4. Acceptance Testing:

  •  Getting approval from the client.
  •  Done by the client.
  •  Satisfying client requirements.


Types of Testing:

 1. Functional Testing

 2. Non-Functional Testing


1. Functional Testing:

  •  Testing the behaviour of the application.
  •  Based on how well the system is working.

Alpha Testing:

  •  The application is tested for the first time.
  •  Done under the supervision of developers.

Beta Testing:

  •  The application is tested a second time.
  •  Before the final release of the software is released to users for testing.

Smoke Testing:

  •  Testing the primary functionality of the application.

Sanity Testing:

  •  Testing the minor functionality of the application.

Regression Testing:

  •  Testing the whole application to check whether new requirement changes affect previous functionality.

Retesting:

  •  Testing only the bugs fixed by the developers.


2. Non-Functional Testing:

  •  Based on how well the system is performed.
  •  Testing the performed to verify the non-functional requirements of the application.

Usability Testing:

  •  User Friendly
  •  Look and Feel
  •  Ease of use
  •  Speed in Interface
  •  Context Sensitiveness

Performance Testing:

  •  Load Testing
  •  Stress Testing
  •  Data/Volume Testing

Security Testing:

  •  Protecting from unauthorized access.

Compatibility Testing:

  •  OS Compatability - Testing in multiple OS.
  •  Browser Compatability - Testing in multiple Browsers.


Software Testing Interview Questions and Answers:

1. STLC - stands for Software Testing Life Cycle.

  Requirements and analysis, test planning, test design, test execution, error report, solving the error, re-test, test close.

2. Software Quality:

  •   Quality is ensured by two sets of activities. verification and validation.

  Verification - It involves activities like document review, test case review, walk-throughs, and inspections.

  Validation - It involves activities like functional testing and automation testing.

3. Workflow of Functional Testing:

  •   Create input values.
  •   Execute test cases.
  •   Compare actual and expected output.

4. Client Expectation:

  Completeness, correctness, quality.

5. Tester Responsibility: (Zero bugs and 100% quality)

  •   Execute test cases
  •   Positive and Negative Conditions.
  •   Manual or Automation tools.

 6. Error - Done by the developer in code

   Bug - Tester identifies the errors.

7. Quality - Meeting client requirements.

   Customer needs or expectations.

8. How to measure Quality:

  Functionality, Usability, Reliability, Performance, and Scalability.

9. Bug - unexpected or incorrect result.

10. Main Goal of Testing:

  Expected Result = Actual Result (Test Pass)

  Expected Result != Actual Result (Test Fail)

11. Severity - the impact of a bug on the software.

   Priority - is how soon a bug needs to be fixed.

Friday, May 20, 2022

Java Programming Examples

 1. Java Syntax:
package selenium;
public class Java_Examples {
  public static void main(String[] args) {
System.out.println("suriya parithy");
}
}

2. Data types and variables:
package selenium;
public class Java_Examples {
  public static void main(String[] args) {
  // type variableName = value;
  String name = "suriya";
  int myNum = 15;
  float myFloatNum = 5.99f;
  char myLetter = 'S';
  boolean myBool = true;
  
  System.out.println(name);
  System.out.println(myNum);
  System.out.println(myFloatNum);
  System.out.println(myLetter);
  System.out.println(myBool);
  }
}

3. Java Operators:
package selenium;
public class Java_Examples {
  public static void main(String[] args) {
  int sum1 =100 + 200;
  int sum2 = sum1 + 300;
  int x = 4;
  int y = 6;
  System.out.println(sum1);
  System.out.println(sum2);
  System.out.println(x-y);
  System.out.println(x == y); // returns false because 4 is not equal to 6
  System.out.println(x != y); // returns true because 4 is not equal to 6
  System.out.println(x > y); 
  System.out.println(x < y);
  System.out.println(x > 3 && x < 10); // returns true because 4 is greater than 3 AND 4 is less than 10
  System.out.println(x > 3 || x < 5); // returns true because one of the conditions are true(4 is greater than 3)
  }
}

4. Java Strings:
package selenium;
public class Java_Examples {
  public static void main(String[] args) {
  String name = "suriya parithy";
  System.out.println("The length of the name string is:" + name.length());
  System.out.println(name.toUpperCase()); // Outputs "SURIYA PARITHY"
  System.out.println(name.toLowerCase()); // Outputs "suriya parithy"
  }
}

5. Java Math:
package selenium;
public class Java_Examples {
  public static void main(String[] args) {
  System.out.println(Math.max(15, 20));
  System.out.println(Math.min(5, 10));
  System.out.println(Math.sqrt(64));
  }
}


Wednesday, May 18, 2022

Selenium Java - Shadow DOM, TestNG, Properties File, Extent Reports, Screenshot

 package selenium;

import java.io.File;

import java.io.FileReader;

import java.io.IOException;

import java. text.SimpleDateFormat;

import java.util.Date;

import java.util.Properties;

import java.util.concurrent.TimeUnit;

import org.apache.commons.io.FileUtils;

import org.openqa.selenium.By;

import org.openqa.selenium.OutputType;

import org.openqa.selenium.TakesScreenshot;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

import org.testng.ITestResult;

import org.testng.annotations.AfterMethod;

import org.testng.annotations.AfterTest;

import org.testng.annotations.BeforeMethod;

import org.testng.annotations.BeforeTest;

import org.testng.annotations.Test;

import com.relevantcodes.extentreports.ExtentReports;

import com.relevantcodes.extentreports.ExtentTest;

import com.relevantcodes.extentreports.LogStatus;

import io.github.sukgu.Shadow;



public class Job_Failure_Login_Page_NG {

public WebDriver driver;

public ExtentReports extent;

public ExtentTest extentTest; 



@BeforeTest

public void setExtent(){

  extent = new ExtentReports(System.getProperty("user.dir")+"/test output/result/LoginPageReport.html", true); 

//To add system or environment info by using the add system info method.

extent.addSystemInfo("User Name", "Suriya");

extent.addSystemInfo("Environment", "Automation Testing");

extent.addSystemInfo("Application","Job"); 

extent.addSystemInfo("Test Scenario","Login Functionality");


}


@AfterTest

public void endReport(){

extent.flush(); 

      //extent.close(); 

}



public static String getScreenshot(WebDriver driver, String screenshotName) throws IOException{

String dateName = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date());

TakesScreenshot ts = (TakesScreenshot) driver;

File source = ts.getScreenshotAs(OutputType.FILE);

// after execution, you could see a folder "FailedTestsScreenshots"

// under src folder

String destination = System.getProperty("user.dir") + "/FailedTestsScreenshots/" + screenshotName + dateName  + ".png";

File finalDestination = new File(destination);

FileUtils.copyFile(source, finalDestination);

return destination;

}


@BeforeMethod

public void setup() throws InterruptedException, IOException {

System.setProperty("webdriver.chrome.driver","C:\\Selenium\\chromedriver\\chromedriver.exe");

driver = new ChromeDriver(); 

driver.manage().window().maximize();

driver.manage().deleteAllCookies();

driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);

driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

driver.get("URL");

Thread.sleep(3000);



}

  @Test(enabled=true,priority=0)

  public void user_and_password_correct() throws InterruptedException, IOException {

  extentTest = extent.startTest("Enter correct username and password");

  Shadow shadow = new Shadow(driver);

  WebElement element = shadow.findElement("amplify-form-section");

  //File Read

  FileReader reader=new FileReader("datafile.properties");

  Properties p=new Properties();  

  p.load(reader);

  

  extentTest.log(LogStatus.INFO, "Enter valid Username");

  element.findElement(By.id("username")).sendKeys(p.getProperty("username"));

  extentTest.log(LogStatus.INFO, "Enter valid Password");

  element.findElement(By.id("password")).sendKeys(p.getProperty("password"));

 

  extentTest.log(LogStatus.INFO, "Click on the SIGN IN button "); 

  WebElement signin = element.findElement(By.cssSelector("[class=button][type=submit]"));

  signin.submit();

  extentTest.log(LogStatus.INFO, "Home Page Open");

  Thread.sleep(3000);

  driver.findElement(By.linkText("LogOut")).click();

  Thread.sleep(5000);

   

 }


  
  @AfterMethod

public void Down(ITestResult result) throws IOException{


      if(result.getStatus()==ITestResult.FAILURE){

       extentTest.log(LogStatus.FAIL, "TEST CASE FAILED IS "+result.getName()); //to add name in extent report

extentTest.log(LogStatus.FAIL, "TEST CASE FAILED IS "+result.getThrowable()); //to add error/exception in extent report

            String screenshotPath = getScreenshot(driver, result.getName());

extentTest.log(LogStatus.FAIL, extentTest.addScreenCapture(screenshotPath)); //to add screenshot in extent report

//extentTest.log(LogStatus.FAIL, extentTest.addScreencast(screenshotPath)); 
    //to add screencast/video in extent report

}

else if(result.getStatus()==ITestResult.SKIP){

extentTest.log(LogStatus.SKIP, "Test Case SKIPPED IS " + result.getName());

}

else if(result.getStatus()==ITestResult.SUCCESS){

extentTest.log(LogStatus.PASS, "Test Case PASSED IS " + result.getName());


}

extent.endTest(extentTest); //ending test and ends the current test and prepare to create html report

driver.quit();

}

}

    

Wednesday, May 4, 2022

Types of Test Automation Framework

Framework:

  A testing framework is a set of rules used for creating and designing test cases.  

Different types of frameworks:

1. Linear Scripting Framework:

  •   Linear Scripting Framework is a basic level test automation framework that is in the form of ‘Record and Playback’ in a linear fashion.
  •   This framework is also known as the ‘Record and Playback’ framework.
  •   This type of framework is used to test small-sized applications.

2. Modular Testing Framework:

  •   In the modular testing framework, testers create test scripts module-wise by breaking down the complete application under test into smaller, independent tests.
  •   In simple words, testers divide the application into multiple modules and create test scripts individually.

3. Data-driven Framework:

  •   The data-driven test automation framework is focused on separating the test script logic and the test data from each other.
  •   It allows us to create test automation scripts by passing different sets of test data.
  •   The test data set is kept in external files or resources such as MS Excel Sheets, MS Access Tables, SQL Database, XML files, etc.,

4. Behavior-Driven Development Testing Framework:

  •   The purpose of this Behavior Driven Development framework is to create a platform that allows everyone (such as Business Analysts, Developers, Testers, etc,) to participate actively.
  •   It requires increased collaboration between Development and Test Teams.
  •   It doesn’t require the users to be acquainted with a programming language. We use non-technical, natural language to create test specifications.