5 Factors Affecting Home Loan Interest Rates

Many first time borrowers are hastily impressed by the interest rates advertised in newspapers and television ads. However, most people don’t get their home loan at those advantageous rates. There are a few factors to bear in mind to get the ideal home loan rates possible for your brand new home.

• Credit history

This factor is all about financial standing. It allows the lenders to see your repayment ability, which is one of the most important factors. The smart thing to do before you apply for a home loan is to improve your credit history. Get rid of those credit card debts and personal loans. There are a number of things that you can do to show yourself as a reliable candidate for a home loan. Hence, you should take all the necessary steps to let these factors work in your favour.

• Nature of employment

Since your income is the means of repaying your EMIs, the nature of your employment is essential to your lenders. If you’re working in a smaller organization, you may come across as a less reliable candidate as compared to someone working for a public sector bank or a government job since their income is considered more consistent. Thus, your organization, years of experience and appraisals affect your credibility and repayment ability. If you compare a professional to a SME business owner with the same income, a professional is sometimes deemed more credible. You can certainly make this bias work in your favour. Today, most employees are job-hopping only for a 5 to 10 percent increment in salary. You can either choose to work with a more established organization or apply for a loan along with a co-applicant, who is working in a reputed organization.

• Your lender and home loan market

Many banks and housing finance companies are offering home loans today. There is a huge market and substantial competition. So it makes sense to apply to several organizations and let the competition work in your favour. If you get an approval from more than one organization, you are in a good position to negotiate and get the best possible housing loan interest rates .

• RBI

There are some factors that affect your home loan rates considerably; however, these factors are not under your control. The Reserve Bank of India has several rules and regulations that affect rates for all kinds of loans such as SLR (Statutory Liquidity Ratio) Rate, Repo Rate, Cash Reserve Ratio (CRR), etc., which you need to be aware of.

• Economy

The economy of India can also affect interest rates significantly. It is possible, though, to anticipate the possible changes to an extent and use them to your favour. So, make sure you use these factors where you can.

Difference between Test Planning and Test Strategy

Test Plan is a road map to testing. A test plan defines the blue print or approach to testing. Following questions are answered in a test plan:

How the testing will be carried out
What will be the approach
How we will proceed with testing
Testing strategy
Features to be tested
Features not to be tested
Hardware requirement
Software requirement
Man power requirement
Manual OR automation will be implemented
Build schedule (when the build will be given for testing)
Test schedule (when the testing will be completed for the given build)
When the retesting will be performed
What will be the regression plan
What features will be tested in regression (regression suite) and so on
Scope of testing is defined in test planning
Types of testing like API, compatibility, UI, functional, non functional
Test deliverables
Test artifacts
Test environments
Risk involved
Risk mitigation
Entry criteria
Exit criteria
Responsibilities (roles and responsibilities of each member)
Staffing and training need.

What is Test Strategy?

Test strategy is a set of guidelines or guiding principles to carry out a particular testing task. It is a subset of the test plan. It features preconditions before carrying out a particular testing task.

For e.g. what would be the strategy when a build comes for testing?

1. We might say we’ll be requiring a ‘Release note’ mentioning the features and bug IDs addressed in the build along with other details.

2. Then we must carry out a smoke test on the build to accept it for more rigorous testing.

3. The 70% pass percentage of the smoke test would be the acceptance criteria for the build.

4. Once the build is accepted, the test case execution will begin and

5. The bugs identified will be logged in the respective project management tools.

6. A test summary report will be shared upon completion of testing.

All these low-level guidelines documented is a test strategy document.

While test planning goes hand in hand during the project planning phase and initiation of the project, test strategy on the other hand keeps evolving during the project development process and may change on a conditional basis as per the progress of the project. Test strategy is more of conditional execution of testing task – “if this then that.” The test strategy document contains protocols and instructions which determine the execution of a testing task. There are numerous things that can be strategized in a software test plan. Strategizing automation plan, strategizing stress and load testing plan, Strategizing nonfunctional testing, Strategizing functional testing, and so on.

In some cases, a test strategy is defined in the test plan document itself. But in larger projects where the scope of testing is immense and lots of non-functional testing also needs to be done, in such cases, a separate test strategy document is prepared which list down the approach and guidelines for carrying out the testing.

Finding locators in selenium

Before performing any operation on any web element or any web component we need to tell the web driver where exactly that element resides on the web page. We can see the web element with our eyes but webdriver can’t. We need to tell it, that go to this particular location and perform this particular operation. To do so we make use of XPath. XPath is the XML path of a web element in the DOM. When you visit a website in google chrome and right click on the web page and select “view source”, you’ll see an HTML page with huge chunks of HTML, CSS, javascript code. You’ll find that the web page is developed with huge chunks of HTML tags

Some common HTML tags are:

div=division
span=span
p=paragraph
a=anchor tag
tr=table row
td=table data
ul=unordered list
li=list item
ol=ordered list
h=heading
label
input
and so on.

These elements also have some attribute and their corresponding attribute values.

For e.g. a div tag also has a ‘class’ attribute, or ‘id’ attribute, etc. An anchor tag ‘a’ must have an ‘href’ attribute. These attributes must have some values like class name, or id name.

So we can make use of these elements to find the xpath of our web component. You can find xpath without using any additional addon like firebug or firepath. Open the website in google chrome and right click on the element for which you want to find the xpath and click inspect element.
Now on the inspect element window press ctrl+s.

The basic format of xpath is

//tag[@attribute name="attribute value"]

Suppose there is a division in html whose class attribute value is “abcd”, so we’ll write like this: //div[@class="abcd"]
It means, find a division tag in the html whose class attribute value is “abcd”.

If we write like this //*[@class="abcd"] i.e. putting an asterisk in place of tag, this means, find any tag in the html whose class attribute value is “abcd”.
If we write with a dot operator like .//*[@class="abcd"] here the dot represents the child node. It means the processing starts from the current node. To be more precise find any tag in the html whose class attribute value is “abcd” and start processing from current node. If we do not use dot and simply write //*[@class="abcd"] then it will search class with value “abcd” in the entire document.
If you further want to go inside a parent tag, then you can use a single slash in the middle of the xpath //div[@class="abcd"]/ul/li/a this means under the parent division whose class value is “abcd” find an achor tag which is under ul and li tags. All these xpaths represents either an element or a list of elements on the web page.

XPATH AXES

Axes are the methods used to find dynamic elements. There are instances when you’ll find that the attribute of an html tag gets changed. Due to this your previously written xpath won’t work if the attribute value of any of the tag gets changed. To overcome this, xpath axes have been introduced. These are nothing but the functions which can be used inside our xpath to fetch the correct location even if the attribute is dynamic. The first such function is

1. contains().

suppose there is an attribute value “btn123″, and the numeric figure keeps changing, the numeric part is not constant it keeps changing. so you can write .//*[contains(@name, 'btn')] this means find any tag starting from the current node whose name contains “btn”. OR and AND: You can use ‘or’ or ‘and’ inside your xpath. For e.g. //*[@type='submit' or @name='abcd'], this means select any tag whose type is submit or name is “abcd”. //*[@type='submit' and @name='abcd'], this means select any tag whose type is submit and name is “abcd”. The satisfaction of both conditions is necessary.

2. starts-with()

//label[starts-with(@id,'abcd')]
It means find a label whose id starts with “abcd”.

3. text()

.//td[text()='abcd']

4. following:

Find all elements in the DOM starting after a particular node For. e.g.
//*[@class='post-content']//following::a This means find all the anchor tags after ‘post-content’ class.

You can see, it is giving 18 anchor tags after ‘post-content’ class.

But what if you want a particular tag? For this you can specify the index as below.

5. ancestor:

Find all elements in the DOM starting before a particular node For. e.g.
//*[@class='logoCotainer']//ancestor::div
This means find all the div before ‘logoCotainer’ class.

6. descendant

All elements after current node
//*[@class='uppermenubar']//descendant::div
This means find all div after ‘uppermenubar’ class.

7. preceding

//*[@class='navigation']//preceding::div
This means find all div before class “navigation”

8. child

//*[@class='uppermenubar']//child::div
This means find all child divisions (div) of class ‘uppermenubar’

9. parent

//*[@class='navigation']//parent::div
This means find parent div of ‘navigation’ class

Now that xpaths are being found, you can now use them in your selenium script as below
driver.findElement(By.xpath(“//*[@class='navigation']//parent::div”));
Here By.xpath(“//*[@class='navigation']//parent::div”) will return a By class object. So ultimately we are passing a By class object in findElement method.

SUMMARY

In this lecture, we’ve learned that before performing any operation on the web elements, first, we need to find the exact location or path of that web element and instruct the web driver to go to this path and perform a particular operation. Unless we find the location or path of the web elements how can we instruct our web driver to perform a particular operation on that particular element? For e.g you want to click a button on the web page, or you need to input some text in the text field. First, you need to find where exactly that element is present on the web page. To do so, we can find the tags, attributes, values of those web elements from the page view source and write our xpath

Getting started with Selenium

GETTING STARTED WITH SELENIUM

To start with selenium webdriver, you need to have the following items installed on your machine.
Prerequisite:

JDK (java 1.8 preferable)

Selenium libraries (Nowadays there is single jar ‘selenium-server-standalone.jar’ is enough unlike earlier period where we need to install multiple jars),

Browser drivers (.exe of chrome driver, ie driver, gecko driver)

Eclipse IDE

Now that you have downloaded the minimum required elements to start writing selenium code, so let’s start by setting up the environment:

Now select a java project:

Give the project name and finish.
Now configure the build path where you need to set your downloaded libraries i.e. selenium jar files, also need to set JDK and JRE path in the java compiler section. Right-click on your project and build path and configure build path.

Now select the libraries tab above and click add external jars. Add your downloaded selenium jars here:

Also now don’t forget to set your compliance level as per your JDK and JRE version.
For all your latest version of selenium, make sure the compliance level under the java compiler section must be set to java 1.8 or above. Ignoring this might lead to a “class not found” run time exception during running your selenium test script.

Now that you have set libraries and compliance levels, it’s time to write your first selenium code using java.
Right-click on your project and select create a new class.

Give it a name, check “public static void main..” , click finish. You are creating a sample test, where we are not using any testNG, cucumber, or maven therefore we need to include public static void main in our first class to run the test as the java execution will begin through the class where the main method is defined. In subsequent lectures, when we use testNG, cucumber, Maven, we will not use or include the main method as our execution will be taken care of by testNG or cucumber.

Now it’s time to write our first test script which simply opens the browser and navigate to the site specified in the script. We’ll write the code and understand the meaning of each one of them.
In our class, first include the required packages and classes which come with selenium libraries.

Now at class level, that is inside the class but before the main method, declare a webdriver instance variable:

Webdriver driver;

Now inside our main method, write code to set system property:

Here setProperty method is accepting two parameters in the form of key and value. The first one is the string parameter in which we are telling that we are going to use a chrome driver, and the second is also a string parameter where we are placing an entire path till the driver’s exe.
Now in the next line, we’ve initialized the driver with chromeDriver. This piece of the line will open the chrome browser upon execution. Now our browser is open, and we want to navigate to any site. This task will be done by driver.get(“”); method. So driver.get(“”) will land us to the specified URL.

INTERVIEW TIP: Why we cannot write Webdriver driver=new Webdriver();

Since webdriver is an interface therefore we can create its instance variable but cannot create its object. i.e. we cannot write Webdriver driver=new Webdriver(); this will throw error. We can rather write Webdriver driver =new FirefoxDriver(); or Webdriver driver=new ChromeDriver(); or Webdriver driver =new InternetExplorerDriver(); These FirefoxDriver, ChromeDriver, and InternetExplorerDriver are the actual classes which implement the webdriver interface and provide implementation to its methods. So we are assigning the instance variable of webdriver to its implementation classes.

SUMMARY

In this lecture, we’ve installed basic minimum items required for running and executing our first selenium script. We’ve installed JDK, eclipse, selenium libraries, drivers exe’s for browsers. We’ve created a java project, set all the libraries in our project’ build path, created a class, and imported the packages and classes needed to execute our test script. We’ve written the code to set system property, initialized our driver object, open the browser, and finally lands at the site specified in the driver.get(“”).