Common problems in the software development process?

Posted on

There are 5 common problems in software development process

Poor Requirement: –   Unclear details, Incomplete requirement, and too general.

Inadequate testing: – No one knows whether your program is any good till the customers complains or system crashes.

Features: – A request to pile on new features after development is underway, Actually this extremely common.

Miscommunication: – If developers don’t know what’s needed or customers have erroneous expectations problem are guaranteed


Read Excel data from .xls and .xlsx file type using POI

Posted on Updated on

As we know that file is very most important in our day to day life, we frequently use to create a file, open it and update or delete something from file. Same thing in selenium automation as well we need to manipulate the file.

So, In this blog we will learn how to install the poi jar file, what jar file are required for that and how to perform the read operation on excel with the help of JAVA IO package and APACHE POI library.

POI library is enough to read write both XLS and XLSX file.

Note : For .XLS file read write, we can use .JXL jar file but it won’t support to .xlsx file.

Let’s begin the journey: – 

Step 1. If you haven’t eclipse then Install the Eclipse latest version.

Step 2. If you haven’t added WebDriver then download the webdriver jar file and add to library.

Step 3. If you are using Maven then use the following dependencies.

<!– https://mvnrepository.com/artifact/org.apache.poi/poi –>







Or else you can directly download latest POI jar file from https://poi.apache.org/download.html

Step 4. Once the downloaded jar file then unzip the file and add library file into your project.

Right click on your project -> Build Path -> Configure Build Path->Library -> Add External Jar-> select the below listed jar file from unzip file -> ok



Add all the listed jar file below.








Below are java interfaces and classes that we will use for read/write xls and xlsx file in POI

XSSFWorkbook : – Is a class representation of XLSX file.

HSSFWrokbook  : – Is a class represent of XLS file.

XSSFSheet :- XSSFSheet classes implement this interface represent XLSX file’s sheet.

HSSFSheet : – HSSFSheet classes implement this interface XLS file’s sheet.

XSSFRow :- XSSFSheet classes implement this interface represent to a row of XLSX file.

HSSFRow : – HSSFSheet classes implement this interface represent to a row of XLS file.

XSSFCell :- XSSFSheet classes implement this interface represent a cell in a row of XLSX file.

HSSFCell : – HSSFSheet classes implement this interface represent a cell in a row of XLS file.

For Example.


Read Data from Excel file to Login with Salesforce


package Account;


import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;


import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;

import org.apache.poi.xssf.usermodel.XSSFCell;

import org.apache.poi.xssf.usermodel.XSSFRow;

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import org.apache.poi.xssf.usermodel.extensions.XSSFCellFill;

import org.apache.poi.ss.usermodel.Workbook;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;


public class excelSheetReadWrite {

WebDriver driver;

public static void main(String[] args)throws IOException {

// TODO Auto-generated method stub

String file=”D://Selenium Projects//Credential.xlsx”;

FileInputStream fis= new FileInputStream(file);

XSSFWorkbook workbook= new XSSFWorkbook(fis);

XSSFSheet sheet= workbook.getSheet(“Sheet1”);

/*Reading data from Excel



String userName=sheet.getRow(1).getCell(1).toString();




//Open Chrome browser

WebDriver driver;



driver = new ChromeDriver();


//Login With Salesforce using Webdriver


//XSSFRow r= sheet.getRow(1);

int noOfColumns = sheet.getRow(1).getLastCellNum();

String[] Headers = new String[noOfColumns];

for(int i=0;i < noOfColumns ;i++){



for(int j=0; j< noOfColumns;j++){




if(Headers[j].equals(“Password”)){                     driver.findElement(By.id(“password”)).sendKeys(sheet.getRow(1).getCell(j).getStringCellValue());











How to Validate Salesforce Login page using page object model in selenium Webdriver

Posted on Updated on

What is Page Object Model(POM)?

It is a design pattern to create object repository for web UI elements. Under the POM for each web page in the application, there should be a corresponding page class. This Page class will find the WebElements of that web page and contains Page methods which perform operations on those WebElements. This Page class will find the WebElements of that web page and contains Page methods which perform operations on those WebElements.


Advantage of Page Object model

The main advantage of Page Object Model is that if the UI changes for any page, it doesn’t require us to change any tests, we just need to change only the code within the page objects (Only at one place).

POM creates our testing code maintainable and reusable.

How to design the page object model.

Step 1 If eclipse not installed in your PC then click on download

  • Double click on downloaded .exe file.
  • Select Eclipse IDE for Java Developers.
  • Click on Install
  • Open the eclipse

Step 2 Create a Java project (SalesforcePMO)


Step 3 Right click on Project and Create a package(PageObjectModule).


Step 4 Add the selenium Library files your package.

  • Download selenium latest version
  • Right click on the project
  • Select the properties from open window
  • Select java build path and then click on the libraries
  • Click on the Add External JAR’s
  • Open your downloaded selenium jar file.
  • Click on Apply and close button.


Step 5 Add TestNG library file.

  • Right click on the project
  • Select the properties from open window
  • Select Java build path and then click on the libraries
  • Click on the Add Library
  • Select TestNG
  • Click on Next
  • Click on finish button
  • Click on Apply and close button.


Step 6 Inside the PageObjectModule Package create one class LoginPOM.java

Note: – Each page in the application will contains separate class


Step 7 Create one more package with name TestPackage.

Step 8 Create a class LoginTest.java inside the TestPackage.

Step 9 Copy the below code and paste into the related java file.


package PageObjects;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;


public class LoginPOM {

//All web element which are used on the Login page

WebElement usernameBox;

WebElement passwordBox;

WebElement cookiesCheckBox;

WebElement loginButton;

WebElement verifyButton;

public LoginPOM(WebDriver driver) {

//for maximize the window size


//Find the web element by id

usernameBox = driver.findElement(By.id(“username”));

passwordBox = driver.findElement(By.id(“password”));

cookiesCheckBox =driver.findElement(By.id(“rememberUn”));

loginButton = driver.findElement(By.id(“Login”));


//Login with cookies method

public void LoginwithCookies(String username, String password) {






// Login without cookies

public void LoginWithoutCookies(String username, String password) {







package Tests;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

import org.testng.annotations.*;

import PageObjects.LoginPOM;

public class LoginTests {

WebDriver driver = null;

String testUrl = “https://login.salesforce.com/&#8221;;


//Browser open

public void setUp(){

//Download the ChromeDriver. To download click here

//Set the system property to open the chrome browser.

System.setProperty(“webdriver.chrome.driver”,        “C:\\Users\\Lenovo\\Downloads\\SeleniumDrivers\\chromedriver.xe”);

driver = new ChromeDriver();


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



public void validLoginPOM() throws InterruptedException {

LoginPOM loginpage= new LoginPOM(driver);

loginpage.LoginWithoutCookies(“Enter user name”, “Enter password”);

Thread.sleep(25000); // wait 25 second, meanwhile you will get email verification code.

//Enter verification code manually which you received on email

WebElement verifyButton = driver.findElement(By.id(“save”));




public void validLoginPOM1() throws InterruptedException {

LoginPOM loginpage= new LoginPOM(driver);

loginpage.LoginwithCookies(“Enter Username”, “Enter Password”);


//Enter verification code manually.

WebElement verifyButton = driver.findElement(By.id(“save”));


driver.quit();// close your browser



public void TestClose() throws Exception {




Note: If the user doesn’t want to enter verification code then user have to login with developer Org and Go to setup-> type profile in quick find box -> open system administrator profile -> click on Login IP Ranges -> click on new button. set the IP ranges from to and save the IP Rang.

Sources: –

SeleniumHQ, Guru99Eclipse


SDLC (Software Development Life cycle)

Posted on

A Software development life cycle is composed of a number of clearly defined and distinct work phases which are used by Software engineers and Software developers to plan for, design, build, test, and deliver Software. Like anything that is developed on an assembly line, an SDLC aims to produce high-quality software that meet or exceed customer expectations, based on customer requirements, by delivering software which move through each clearly defined phase, within scheduled time frames and cost estimates.

The SDLC is not a methodology, but rather a description of the phases in the life cycle of a software application. These phases (speaking) are

  1. Requirement Gathering
  2. Analysis
  3. Design
  4. Coding (Development)
  5. Testing
  6. Implementatiion
  7. Maintenance / Services


Requirement Gathering

In this Phase, Business Analyst will gather the all requirement from the client/customer and prepare Business requirement specification (BRS) or Customer requirement specification (CRS) or User Requirement Specification (URS). Senior business Analyst will prepare the System/Software requirement Specification (SRS) documents.

Rule for Successful requirement gathering

  1. Always Ask – don’t assume you know what user wants.
  2. Include the users from the starting.
  3. Define and agree on the scope of the project.
  4. Requirement should be SMART – specific, Measurable, Agree upon, Realistic and Time-based.
  5. Gain clarity if there is any doubt.
  1. Create clear user requirement document and share with the customer (play them back).
  1. Avoid talking about technology or solutions until the requirements are fully understood.
  2. Get the requirements agreed with the stakeholders before the project starts.
  3. Create a prototype model, if necessary, to confirm or refine the customer’s requirements.


It is a method that allows the analyst to understand the system and its activities in a logical way. It is a systematic approach to analyse and refine the existing system and develop a new system specification which can be easily understandable by user.

Note: –The features and the functions that need to be put in the project are determined/analysed.


It will be done by the very experienced person like Chief Architect or technical Team Leader or Architect.

Architect will have prepared the HLD (High Level design) and LLD (Low Level Design).

HLD: – High Level Design

  • List of modules and a brief description of each module.
  • Brief functionality of each module.
  • Interface relationship among modules
  • Database tables identified along with the key element.
  • Overall architecture diagrams along with technology details.

Example1.1: Data flow diagram for high level designshashikant_Dataflow

LLD: – Low Level Design

  • Detailed functional logic of the module.
  • Database table, with all elements, including their type and size.
  • All dependency issue Error Message Listings.
  • Complete input and Output for a module.

Example1.2: Data flow diagram for high level designShashikant_LowLevel


Based on the HLD and LLD document, small modules are summed together and developed.



If testing is done correctly, it increases the overall software quality. This phase done by Test Engineers. Different types of testing performed by test engineers.

  • Functional Testing and Non-Functional Testing.
  • Black-Box Testing and White-Box Testing.
  • Static & Dynamic Testing
  • Unit testing
  • System testing
  • Performance Testing
  • Load Testing




The Implementation phase is when the end user of your software is foremost in your mind. During this phase, you create the documentation and tools the customer uses to make informed decisions about how to deploy your software securely. To this end, the Implementation phase is when you establish development best practices to detect and remove security and privacy issues early in the development cycle.



The Maintenance Phase occurs once the system is operational. It includes implementation of changes that software might undergo over a period of time, or implementation of new requirements after the software is deployed at the customer location. The maintenance phase also includes handling the residual errors that may exist in the software even after the testing phase. This phase also monitors system performance, rectifies bugs and requested changes are made.

A Maintenance, often turned support, is a crucial activity for linking the experiences of users/customers with the product delivery organization. We consider perspectives on high tech maintenance from bug fixing through to design focused activities.

Key Deliverables:

  • Keep system live
  • Maintain code
  • Update software when required

Sources: –




APEX basic concept

Posted on Updated on

Apex ?

It is a Strongly typed Object-oriented programming language. It allows developers to execute flow and transaction control statements on the Force.com platform server in conjunction with calls to the Force.com​ API. Its Syntax looks like the Java and Database stored procedures.


  • Apex enables developers to add business logic to most system events including button clicks, related record updates, and Visualforce pages.
  • Apex allows developers to attach the business logic to the record save process.
  • It supports for unit test creation and execution.
  • Apex code can be initiated by Web service requests and from triggers on objects.
  • Apex is Integrated, Easy to use, Multitenant aware, automatically upgradable, easy to test, Hosted and Versioned.

Apex Architecture

Apex is compiled, stored, and run entirely on the Force.com platform


When a developer writes and saves Apex code to the platform, the platform application server first compiles the code and saves in the form of metadata.

End users can send the request from the Visualforce pages(UI) and retrieve results from the salesforce servers.

Capabilities of Apex

  • Apex provided build in support for:
  • DML calls to insert, update and delete records.
  • Inline SOQL or SOSL statements for retrieving records.
  • Looping control structures that help with bulk processing.
  • A record locking syntax that prevents record update conflicts.
  • Custom public API calls.
  • Send and receive Emails.
  • Web services or XML request/response integrations.
  • Warning and Errors to prevent objects referenced by Apex from being notified.

7 Reasons to Choose APEX Programming Language for Your Next Salesforce based Application.

1   Quick access to Salesforce’s existing thousands of company’s users base and Salesforce Apps.

2   Ride on Salesforce’s cutting-edge existing functionality, including:

  • Administrative interface
  • User management and authentication
  • Reporting and analytics
  • Dynamic API
  • Toolkits and integrations for other languages and platforms

3   No worries about server maintenance or architecture as this is a PaaS platform

4   Security, both because of code review and because of high degree of control on the platform

5    Speed to learn the language as this is Java-like syntax, based on familiar Java idioms, such as variable and expression syntax, block and conditional statement syntax, loop syntax, object and array notation and much more, that speeds up the learning curve for new developers.

6    Native “Visualforce” elements allow fast and smooth information output

7    Connecting with one of the most active software development communities across the planet. Vast knowledge base with active participation from Salesforce staff.

What is Apex class and Triggers?

Apex class

It is a collection of variables and library of methods that can reused.

To define a class, specify the following:

  1. Access modifiers:
    • You must use one of the access modifiers (such as public or global) in the declaration of a top-level class.
    • You do not have to use an access modifier in the declaration of an inner class.
  2. Optional definition modifiers (such as virtual, abstract, and so on)
  3. Required: The keyword class followed by the name of the


private | public | global

[virtual | abstract | with sharing | without sharing]

class*** ClassName*** [implements InterfaceNameList] [extends ClassName]


// The body of the class


Apex Triggers

A trigger is Apex code that executes before or after the following types of operations:

  • insert
  • update
  • delete
  • merge
  • upsert
  • undelete

For example, you can have a trigger run before an object’s records are inserted into the database, after records have been deleted, or even after a record is restored from the Recycle Bin.


trigger ***TriggerName*** on ObjectName (trigger_events) {   code_block}



Software Testing Basic Concept

Posted on Updated on

What is testing?

In general term testing is finding out how well something works. In terms of human beings, testing tells what level of knowledge or skill has been acquired. In Hardware and software, testing is used at key checkpoints in the overall process to determine whether requirements are being met.

What is Software Testing?

  1. It is stated as the process of validating and verifying that a software/Program/Application or Product:
  •  Works as expected according to the business and technical requirements.
  •  Works Consistently and Predictably.
  1. It is not sufficient to demonstrate that the software is doing what it is supposed to do. It is more important to demonstrate that the software is not doing what it is not supposed to do.
  1. It is process of finding defects i.e. variance between Expected result and Actual results. And process of executing a software program application with intent of finding errors.

Why is Testing necessary?

User don’t like bugs, so testing

Software testing is necessary to make sure the product or application is defect free, as per customer specifications. Software testing identifies faults whose removal increases the software quality and increases the software reliability.

Testing effort is directly proportional to the complexity of the program. More complex the program, more the testing effort is required.

Software Testing is necessary, because software should be: –

–          Error Free

–          Efficient

–          Secured

Software Testing is important as it may cause mission failure, Impact on operational performance and unreliable if not done properly.

When Testing Start?

Testing start right from the requirement phase and continue till the release time. The main objective of early starting, if requirement related defects caught later in the SDLC result in higher cost to fix the defect.

How we can do Testing?

There is two way for testing.

  1. Manual Testing: – In Manual Testing, Testers manually execute test cases and find defect  without the uses of any tools or Automation scripts.


2.  Automation Testing: – It is a process of instructing a tool to perform an operation on an      application under test. Test automation is the use of software to control the execution of  tests & the comparison of expected v/s actual result.