In this post you will find mainframe testing interview questions and answers (part1), most commonly asked interview questions for mainframe.
1. What is mainframe Testing?
—> Testing mainframe based application is nothing but mainframe testing. Process wise it is not different than other types of testing but the difference is of technology. Mainframe testing covers batch testing and online testing.
2. Difference between mainframe testing and manual testing?
—> Process wise it is not different than other types of testing but the difference is of technology. In other manual testing we do testing on let us say web application or any desktop application having GUI. But in case of mainframe application, there is no GUI, all you can see is blue screens that can be a mainframe host for batch testing or it can be CICS Screens for online testing.
3. What and all can be tested under mainframe testing?
—> It has huge scope. This depends on your project & requirement, But at high level, you can do batch testing and online testing. In batch testing, you can run jcl, validate files, validate databases etc. where as in case of online testing, noting about back-end, all is you need to work on front end. where you can enter some values & check for response based on system. Online system is real-time systems.
4. what is difference between batch testing and online testing?
—> In batch testing, It is purely back-end testing. you can run jcl, validate files, validate databases etc. where as in case of online testing, noting about back-end, all is you need to work on front end. where you can enter some values & check for response based on system. Online system is real-time systems.
5. What to test in mainframe batch application testing?
—> Again this is having huge scope and is application to application dependent. In general, batch processing is dealing with JCL, you need to run JCL & check for output files / tables or front end screens. Batch processing is mainly used to process huge volume of data at a time. ex – Interest calculation in bank on month end.
6. What to test under mainframe online application Testing?
—> In case of online application testing, you need not to deal with back-end. Just in front-end, you need to enter data & check for application response (just as like web application) Example – Account opening system in bank
7. What is scheduler? have you used it anytime?
—> As the name suggest, it is used to schedule the jobs based on certain condition. The condition could be time & day specific or can be dependency with some other job. Various scheduler available in mainframe are – CA7, OPC. It also do continuously automatic monitoring of jobs and completion notification
8. what is difference between fixed length file and variable length file?
—>In Fixed length file,
1.Every record in the file has exactly same size (in byte)
2.It take huge memory.
3.Access become fast.
4.Computer knows exact location of records so easy access.
5.slow in transferring the records it has large size.
In Variable length file,
1.Different record in the file have different size.
2.It take least memory.
3.access become slow.
4.computer does not know exact location of record so slow access.
5.fast transferring as it is small in size.
9. What is JCL?
—> JCL is a Job Control Language used to describe a UoW (Unit of Work) on a mainframe computer (O/S 390, Z/OS etc . . . ). In case of JCL, everything works in background. However the operating system manages interactive (foreground) user requests that initiate units of work. In general, foreground work is given priority over background work.
10. What is jobcard in jcl?
—> First statement in any JCL is nothing but JOB CARD. It is used to identify job or unit of work (UoW) for mainframe operating system to perform. Only one jobcard is allowed per job. it starts with //.
example – //job-name JOB jab-card-parameters
Before we start we Keyword driven framework in selenium, let us try to understand what is framework.
What is Framework?
In a very simple language, it is a structure and design which help others to write test cases easily by using re-usability, readability, maintainability
What is Keyword driven framework?
in KDF, every action which we perform on the UI elements is been written in terms of keywords. These keywords will define what action should be taken on UI.
Advantages of Keyword Driven Framework –
Since all test cases are in excel file, it is very easy to know which test cases are covered for non technical person as well. It helps great for writing detailed test plan because you can show in excel sheet what and all you are going to cover.
Less technical knowledge required once framework is setup. Once framework is set, manual tester can even use the keywords and write test cases.
Easy to understand since it is well structured.
code re-usability
Automation test case preparation can start early during development phase.
Before we start with data driven framework, let us understand few important things.
Why not to hard code in Test Automation Framework?
–>Let us take an example of testing web application. In actual, you may need to run test cases in various environments like Unit Testing, System Testing, System Integration Testing, UAT & can be in Production. So for all these regions, URL will be different, username and password can be different. So if you are hard coding these things, you need to change them for each environment. So its not good practice to hard code the things which are used at multiple places.
Data Driven Framework:
It is nothing but to execute one test case with multiple set of data, with multiple conditions. When you wanted to execute similar flow (let us say account opening procedure) with various data combinations, it is not good idea to create separate test case for each data set, so this is how data driven frameworks came in to picture.
Components of Data Driven Framework:
Create a folder Structure for your framework, refer below screenshot in which i have shown a sample folder structure for data driven framework.
1. Package for Page Object –>
This package will contain all page object. For each page there should be one class containing all objects / web-elements from that page. This helps to keep changing web-element away from our actual test cases. This is to achieve Page Object Model (POM) in our Test Automation Framework.
2. Package for Properties file –>
This package will contain all properties file to store data like URL, credentials & other. So that any changes in dynamic parameters like URL, username, passwords need not to change the values in code. Just change in these properties file, should update it in all test cases.
3. Package to keep Test Data –>
This package is to keep test data of data driven testing. This data can be kept in excel file format. Apache POI / JXL api can be used to read this data & use it for test cases during execution. Test data can also be kept in notepad, any database. But preferred one is Excel.
4. Package to write actual Test Cases –>
In a framework, code for actual test cases should be isolated from other commonly used methods & files. So this package is to write the actual test cases. Other classes from other packages can be called while writing test cases.
5. Utilities used for framework –>
As i said above, in framework, only actual test cases should be kept in one package & rest other common methods should be kept in another one. This utilities package will contain all common methods that are required for Test Automation Framework. For Example – Take Screenshot, logging, common skeleton to launch driver, listeners, reporters etc.
6. Create one folder to keep all jar files (If you are not using Maven in your project)
7. Create one folder to store log information (with the help of log4j & listeners)
Now, refer the below code from each of the module for complete Data Driven Framework
Step 1: Create the folder structure as shown above. Step2: Create config.properties file in propFiles package, refer below properties file
Step3: Create Log4j.properties file under src folder which is used for logging information. Refer below code for log4j.properties
// Here we have defined root logger
log4j.rootLogger=ALL,CONSOLE,R
// Here we define the appender
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.dest1=org.apache.log4j.RollingFileAppender
log4j.appender.dest1.maxFileSize=5000KB
log4j.appender.dest1.maxBackupIndex=3
// Here we define log file location
log4j.appender.R.File=./log/testlog.log
// Here we define the layout and pattern
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= %5p [%t] (%F:%L)- %m%n
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d - %c -%p - %m%n
Step4: Identify and write page objects which you require for your test case. This will achieve Page Object Model (POM). For my sample example, i have identified objects for login test case. Refer below objects. HomePageObjects:
package com.demowebshop.pageObjects;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
public class HomePage {
public static String LoginLinkXpath = "//a[@class='ico-login']";
public static WebElement LoginLinkWebElement(WebDriver driver){
return driver.findElement(By.xpath(LoginLinkXpath));
}
}
LoginPageObject:
package com.demowebshop.pageObjects;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
public class LoginPage {
public static String EmailFieldXpath = "//input[@id='Email']";
public static String PasswordFieldXpath = "//input[@id='Password']";
public static String LoginButtonXpath = "//input[@class='button-1 login-button']";
public static WebElement EmailFieldWebElement(WebDriver driver){
return driver.findElement(By.xpath(EmailFieldXpath));
}
public static WebElement PasswordFieldWebElement(WebDriver driver){
return driver.findElement(By.xpath(PasswordFieldXpath));
}
public static WebElement LoginButtonWebElement(WebDriver driver){
return driver.findElement(By.xpath(LoginButtonXpath));
}
}
Step5: Now, its time to write utilities.
First one is to read properties file. Data stored in properties file like URL, browser & other need to be used in test cases. So below class will help to read properties file.
package com.demowebshop.utilities;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
public class ReadPropertiesFile {
Properties prop = new Properties();
String filePath = "C://Users//Prakash//workspace//ddf//src//com//demowebshop//propFiles//config.properties";
public String ReadPropertiesFileByKey(String key) throws FileNotFoundException{
File file = new File(filePath);
FileInputStream fis = new FileInputStream(file);
try {
prop.load(fis);
} catch (IOException e) {
e.printStackTrace();
}
return prop.getProperty(key);
}
}
Now, once we get browser value from properties file, select the browser using below class
package com.demowebshop.utilities;
import org.apache.log4j.Logger;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
public class SelectBrowser {
Logger log = Logger.getLogger("BrowserSelection");
public WebDriver selectBrowser() throws Exception {
ReadPropertiesFile prop = new ReadPropertiesFile();
WebDriver driver = null;
String browser = prop.ReadPropertiesFileByKey("browser");
while (browser == null) {
log.fatal("Browser is not specified in Configuration file. Terminating process !!!");
System.exit(0);
}
if (browser.equalsIgnoreCase("firefox")) {
driver = new FirefoxDriver();
log.info("Browser selected for testing is : Mozilla Firefox");
} else if (browser.equalsIgnoreCase("chrome")) {
System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");
driver = new ChromeDriver();
log.info("Browser selected for testing is : Google Chrome");
} else if (browser.equalsIgnoreCase("ie")) {
System.setProperty("webdriver.ie.driver", "C:\\IEDriverServer.exe");
driver = new InternetExplorerDriver();
log.info("Browser selected for testing is : Internet Explorer");
} else {
log.fatal("Selected browser value should be either firefox or chrome or ie --> Update in Configuration file is required");
System.exit(0);
}
return driver;
}
}
Since we are using data driven testing, our test data is stored in excel file. This excel file need to read & process the test cases based on test data. Use below class to read excel file –
package com.demowebshop.utilities;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.testng.log4testng.Logger;
public class ExcelReader {
static ReadPropertiesFile prop = new ReadPropertiesFile();
Logger log = Logger.getLogger(ExcelReader.class);
static FileInputStream fis = null;
public FileInputStream getFileInputStream() throws FileNotFoundException{
String filepath = prop.ReadPropertiesFileByKey("filepath");
File srcfile = new File(filepath);
try {
fis = new FileInputStream(srcfile);
} catch (FileNotFoundException e) {
log.fatal("TestData File is not found. terminating process !!! Check Configuration file for file path of TestData file");
System.exit(0);
}
return fis;
}
public Object[][] getExceData() throws Exception{
fis = getFileInputStream();
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sheet = wb.getSheetAt(0);
int TotalNumberOfRows = (sheet.getLastRowNum()+1);
int TotalNumberOfCols =2;
String[][] arrayExcelData = new String[TotalNumberOfRows][TotalNumberOfCols];
for (int i = 0; i<TotalNumberOfRows; i++){
for (int j=0; j<TotalNumberOfCols; j++){
XSSFRow row = sheet.getRow(i);
// String cellData = row.getCell(j).toString();
arrayExcelData[i][j] = row.getCell(j).toString();
}
}
wb.close();
return arrayExcelData;
}
}
Its time to create a common skeleton (to use driver from another class, which will be common for @BeforeMethod and @AfterMethod annotation. Refer below code –
package com.demowebshop.utilities;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
public class BaseTest {
SelectBrowser select = new SelectBrowser();
ReadPropertiesFile prop = new ReadPropertiesFile();
protected WebDriver driver = null;
@BeforeMethod
public void launchBrowser() throws Exception{
String url = prop.ReadPropertiesFileByKey("URL");
driver = select.selectBrowser();
driver.navigate().to(url);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
}
@AfterMethod
public void closeBrowser(){
driver.close();
driver.quit();
}
}
Once all this is done, Its time to write actual test. Use dataprovide annotation to pass the data which we read it from excel reader.
I am using demowebshop.tricentis.com & its login functionality to demonstrate.
Refer below code –
package com.demowebshop.Tests;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import com.demowebshop.pageObjects.HomePage;
import com.demowebshop.pageObjects.LoginPage;
import com.demowebshop.utilities.BaseTest;
import com.demowebshop.utilities.ExcelReader;
public class LoginTest extends BaseTest{
@Test(dataProvider = "TestData1")
public void LoginTestCase( String username, String password){
System.out.println(username);
System.out.println(password);
HomePage.LoginLinkWebElement(driver).click();
LoginPage.EmailFieldWebElement(driver).sendKeys(username);
LoginPage.PasswordFieldWebElement(driver).sendKeys(password);
System.out.println(driver.getTitle());
}
@DataProvider(name = "TestData1")
public Object[][] LoginTestData() throws Exception{
ExcelReader ER = new ExcelReader();
return ER.getExceData();
}
}
Once this is done, Update your test data file (for Data Driven Framework) with your username and passwords, as shown below –
Now, you are good to run Test. Right click on your actual test case, Run it as TestNG Test.
You should good results.
To learn how the same can be achieved using Map and HashMap, refer –
Integration of Selenium test case with TestNG Framework helps in many aspects such as better reporting, organizing test cases in better way & many other.
Working on Input Text Box and buttons is a very first step of selenium. We use sendKeys method to send value to text box where as click / submit method to click on button.
customized XPath is most popular locator strategy in selenium now a days. Though it will not work in Internet Explorer many times, but people prefer it because it is simple.