This page is hosted for free by zzz.com.ua, if you are owner of this page, you can remove this message and gain access to many additional features by upgrading your hosting to PRO or VIP for just 41.60 UAH.
Do you want to support owner of this site? Click here and donate to his account some amount, he will be able to use it to pay for any of our services, including removing this ad.

 QA interviews most popular questions and answers

Named most popular kinds of testing?

Manual functional, load testing, stress testing, volume testing, performance testing,  regression, acceptance, security and access control, cross-browser, cross-platform;

What is bug?

A software bug is an error, flaw, failure or fault in a computer program or system that causes it to produce an incorrect or unexpected result, or to behave in unintended ways. Most bugs arise from mistakes and errors made by people in either a program’s source code or its design, or in frameworks and operating systems used by such programs, and a few are caused by compilers producing incorrect code.

Which test cannot be automated?

Really hard to automate test connected with UI, so as for me correct answer is UI test. But now possible to compare screens of web pages so even UI test could be automated, so you will can say none and start discussion

When to Automate User Stories?

Already wrote article about this question, so just review it

Of course all interview contains short practice, and you must be prepared, all questions which was described connected with Manual QA interview and a litle bit with automation. More about Automation QA  interview questions we will review in the next article
3d white people lying on a question mark

Shutter like default tool for QA screenshots

Only Ubuntu only hardcore, Shutter installation sudo:

  1. You can add a PPA to your system with a single line in your terminal. Open a terminal and enter:
sudo add-apt-repository ppa:shutter/ppa

2. Now, as a one-off, you should tell your system to pull down the latest list of software from each archive it knows about, including the PPA you just added:

sudo apt-get update

3. Install Shutter

sudo apt-get install shutter

more info here

shutter-menu

If you are using the latest Ubuntu (or any other debian-based distribution) you will notice that some features of Shutter are disabled by default.

You need to install two additional packages to enable these features again:

  1. Quit any running instance of Shutter
  2. sudo apt-get install libgoo-canvas-perl gnome-web-photo
  3. Launch Shutter

Dropbox like best tool to store your shutter screenshots

Dropbox most convenient and easy to use cloud to store your screenshots.  Even free account have a lot of space, adn with small *.png files of shutter, use dropbox and dotn’t think about disk spase problem, plus you could share your screen with a lot of users.Dropbox advantages: over 500 million people around the world use Dropbox to work the way they want to, on any device, wherever they go. With 200,000 businesses on Dropbox Business, they’re transforming everyday workflows and entire industries.

Dropbox ads

 

Jira better but Redmine free for all

 

Jira VS Redmine round 1

Selection_324

Jira wins 1 round!

atlassianlogo-720x495

Jira VS Redmine round 2

According to official Redmine web site http://www.redmine.org/projects/redmine/wiki/Download it is totally FREEE!  and what about JIRA?

Selection_327

So this round behind

.Redmine_logo_0

 

Jira VS Redmine round 3

And winner is… No one. Because both system useful and need to understood when you need wide functionality but payed Jira and when Redmine with free functionality. But fight was pretty interesting.

 

Automation Trends of 2016 and Security testing

According to the seventh edition of the World Quality Report, co-sponsored by Capgemini, Sogeti, and HP based on a global market research study conducted with 1,560 senior IT executives and testing leaders from 32 countries:

  • Continuous and automated security testing will be a key strategy
  • Agile and DevOps will take a front seat in testing
  • Predictive Analysis will be a major enabler to ensure on-time and efficient application delivery

Customer and business assurance will be the focus area
Functional Security Tests.
These are essentially the same as automated acceptance tests, but targeted at verifying that security features such as
authentication and logout, work as expected. They can mostly be automated using existing acceptance testing browser automation tools like Selenium/WebDriver.

Specific non-functional tests against known weaknesses.
Includes testing known weaknesses and mis-configurations

SQL injection is a code injection technique, used to attack data-driven applications, in which nefarious SQL statements are inserted into an entry field for execution (e.g. to dump the database contents to the attacker).SQL injection must exploit a security vulnerability in an application’s software, for example, when user input is either incorrectly filtered for string literal escape characters embedded in SQL statements or user input is notstrongly typed and unexpectedly executed. SQL injection is mostly known as an attack vector for websites but can be used to attack any type of SQL database.

security

Sauce labs, how to start?

Code example of simple test with usage of Sauce labs

public class Settings {
    public static final String USERNAME = "sanya_tolok";//your user name from https://saucelabs.com
    public static final String ACCESS_KEY = "7f92d543-541f-4214-a49d-24cdae1bb705";//access key taken from user settings inside your dashboard (https://saucelabs.com/beta/user-settings)
    public static final String URL = "http://" + USERNAME + ":" + ACCESS_KEY + "@ondemand.saucelabs.com:80/wd/hub";
    public static void test_title() {
        {
            DesiredCapabilities caps = DesiredCapabilities.chrome();
            caps.setCapability("platform", "Windows XP");
            caps.setCapability("version", "43.0");
            WebDriver driver = null;
            try {
                driver = new RemoteWebDriver(new URL(URL), caps);
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            driver.get("https://ddi-dev.com");//set your link
            System.out.println("title of page is: " + driver.getTitle());//thist test just print to console title of your page
            driver.quit();
        }
    }
    public static void waitInSeconds (int seconds)
    {
        try {
            Thread.sleep(1000*seconds);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

}
}

Result

Selection_183

And if you don’t understood my comments, place where you could get your  ACCESS_KEY

Selection_181

How to RUN YOUR OWN Selenium-Grid

What is Selenium-Grid?

Selenium-Grid allows you run your tests on different machines against different browsers in parallel. That is, running multiple tests at the same time against different machines running different browsers and operating systems. Essentially, Selenium-Grid support distributed test execution. It allows for running your tests in a distributed test execution environment.
How Selenium-Grid Works–With a Hub and Nodes

A grid consists of a single hub, and one or more nodes. Both are started using the selenium-server.jar executable. We’ve listed some examples in the following sections of this chapter.

The hub receives a test to be executed along with information on which browser and ‘platform’ (i.e. WINDOWS, LINUX, etc) where the test should be run. It ‘knows’ the configuration of each node that has been ‘registered’ to the hub. Using this information it selects an available node that has the requested browser-platform combination. Once a node has been selected, Selenium commands initiated by the test are sent to the hub, which passes them to the node assigned to that test. The node runs the browser, and executes the Selenium commands within that browser against the application under test.

RUN YOUR OWN Selenium-Grid

java -jar selenium-server-standalone-2.53.0.jar -role node -hub http://localhost:4444/grid/register
sudo java -jar selenium-server-standalone-2.53.0.jar -role hub

Selection_151

How to run same test few times?

images (2) To run same test few times just use parameter invocationCount, in the example below you will see test which runs 5 times, it has default priority equal to 0

@Test(priority = 0,invocationCount=5)

Plus you could use threadPoolSize

threadPoolSize( parameter for load testing ) set the size of the thread pool . The method with this parameter will be invoked from multiple threads as specified by invocationCount.
Note: this attribute is ignored if invocationCount is not specified

@Test(invocationCount = 2, threadPoolSize = 3)
public void load_test(){Load_test.loadTest();}

LoadTest()

public static void loadTest()
{
    System.out.printf("%n[START] Thread Id : %s is started!",Thread.currentThread().getId());
    some_link.click();
      System.out.printf("%n[END] Thread Id : %s",Thread.currentThread().getId());
}

HOW TO RUN TESTS IN PARALLEL(SELENIUM WEBDRIVER /JAVA/TESTNG)

If you want to run test in parallel  in the same time just change your your testng.xml(Note, if you use this variant to run test in parallel both test classes must have own setting)

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Parallel_test_runs_ddi_dev" parallel="tests" thread-count="2">

    <test name="ddi_dev">
        <classes>
            <class name="TestCases_ddi_firefox"/><!--first class with tests inside -->
        </classes>
    </test>
    <test name="ddi_dev_2">
        <classes>
            <class name="TestCases_ddi_2"/><!-- second class with tests inside-->
        </classes>
    </test>
</suite>

TestNG Framework

images (2)imagesimages (1)

Talking about our requirement to introduce TestNG with WebDriver is that it provides an efficient and effective test result format that can in turn be shared with the stake holders to have a glimpse on the product’s/application’s health thereby eliminating the drawback of WebDriver’s incapability to generate test reports. TestNG has an inbuilt exception handling mechanism which lets the program to run without terminating unexpectedly.

Both TestNG and JUnit belong to the same family of Unit Frameworks where TestNG is an extended version to JUnit and is more extensively used in the current testing era.

Features of TestNG

  • Support for annotations
  • Support for parameterization
  • Advance execution methodology that do not require test suites to be created
  • Support for Data Driven Testing using Dataproviders
  • Enables user to set execution priorities for the test methods
  • Supports threat safe environment when executing multiple threads
  • Readily supports integration with various tools and plug-ins like build tools (Ant, Maven etc.), Integrated Development Environment (Eclipse).
  • Facilitates user with effective means of Report Generation using ReportNG

TestNG versus JUnit

There are various advantages that make TestNG superior to JUnit. Some of them are:

  • Advance and easy annotations
  • Execution patterns can be set
  • Concurrent execution of test scripts
  • Test case dependencies can be set

Annotations are preceded by a “@” symbol in both TestNG and JUnit.So now let us get started with the installation and implementation part.

Creating a TestNG test class

  1. In the Project tool window, right click the directory where you want to create a new test class.
  2. Select New | Java Class from the context menu.
  3. In the Create New Class dialog, specify the class name and click OK.
  4. In the editor, write the code for your test class. Use the TestNG annotations where necessary. For example, you may want to annotate the whole class or individual methods:
    @Test ()
    public class NewClassForTesting {}
    @DataProvider public Object[][] data(){ return new String[][]{ new String[]{"data1"}, new String[]{"data2"} }; }
    @Test(dataProvider = "data") public void test(String d ){ Assert.assertEquals("First Line \n Second Line", "Third Line \n Fourth Line");}

    Here is a quick overview of the annotations available in TestNG for @Test along with attributes.

    @Test Marks a class or a method as part of the test.
    alwaysRun If set to true, this test method will always be run even if it depends on a method that failed.
    dataProvider The name of the data provider for this test method.
    dataProviderClass The class where to look for the data provider. If not specified, the data provider will be looked on the class of the current test method or one of its base classes. If this attribute is specified, the data provider method needs to be static on the specified class.
    dependsOnGroups The list of groups this method depends on.
    dependsOnMethods The list of methods this method depends on.
    description The description for this method.
    enabled Whether methods on this class/method are enabled.
    expectedExceptions The list of exceptions that a test method is expected to throw. If no exception or a different than one on this list is thrown, this test will be marked a failure.
    groups The list of groups this class/method belongs to.
    invocationCount The number of times this method should be invoked.
    invocationTimeOut The maximum number of milliseconds this test should take for the cumulated time of all the invocationcounts. This attribute will be ignored if invocationCount is not specified.
    priority The priority for this test method. Lower priorities will be scheduled first.
    successPercentage The percentage of success expected from this method
    singleThreaded If set to true, all the methods on this test class are guaranteed to run in the same thread, even if the tests are currently being run with parallel=”methods”. This attribute can only be used at the class level and it will be ignored if used at the method level. Note: this attribute used to be called sequential (now deprecated).
    timeOut The maximum number of milliseconds this test should take.
    threadPoolSize The size of the thread pool for this method. The method will be invoked from multiple threads as specified by invocationCount.
    Note: this attribute is ignored if invocationCount is not specified

Bamboo CI, how it works

From what to start?

Start from installation of JAVA newest version (to use Bamboo like CI you will need at least java 8). Instruction with configuration(for Ubuntu) on the image below

Install-JAVA-8

Result:

Selection_123

BAMBOO Configuration

Step 1 : Download and install bamboo server from here bamboo

Step 2 : Set bamboo home directory(it must be outside installation directory, and name must be without special symbols), example in the image below

Selection_002

Step 3: Run server

Selection_004

Step 4: Open http://localhost:8085/ and if all correctly done before you will need to set licence(you can buy it or get some free, I am will be using free licence)

Selection_125

Step 5: After configuration of server you will need to create your first build plan

Step 6: Run your plan.

VIEW VIDEO