Subscribe via Email

Subscribe to RSS feed

How to Use a Mobile Emulator for Testing

When we start a discussion about Mobile browser testing,  we immediately think of testing on a mobile device. I can suggest a different idea. Emulators.

Nowadays it’s very common that people view websites on mobile devices. So Mobile testing is needed in order to ensure testing.

What is an Emulator? Any Guess?

An Emulator is a device which mimics something close enough so that it can be substituted for real world device. Mobile emulators always supports functional output and will tell you visually, what isn’t working on a website. A mobile phone emulator lets you check the responsiveness and functionality of the website across different mobile platforms, such as iPhone, Android..etc..

Emulation or emulators behave exactly like the same device, in order to result in exact output and performance.

Emulator is – it will always take compile code and it will try executing it but in case of

Simulator is – it is very similar to interpreter that is it actually executes the real code in line by line to mimic original behavior of that device.

Read the rest of this post »

Posted in News

Use XRANK operator to boost the dynamic rank in Sharepoint 2013

In this blog, I’ll introduce a novel ranking algorithm called XRANK as a solution to boost the dynamic rank of items based on certain term occurrences within the match expression in Sharepoint 2013.

In the law firm business, there are lots of matters, and the attorneys always try to find out matters which are similar. For example, another matter is considered similar to the current matter according to the affinity for the following matching values. Any match within a tier trumps matches on subsequent tiers, while multiple matches within a tier would serve as a tiebreaker. Read the rest of this post »

Using Selenium with Java and TestNG (5)

Page Factory

In this blog, I‘ll introduce how to use selenium page factory.

Page factory is the way selenium provided to reuse the web elements.

If you don’t use page factory or the page object model, the test scripts maintenance will take too much effort. The problem is that selenium only gives the page factory to us but does not tell us how to design our framework to use it.

Here is my design: Read the rest of this post »

Posted in Testing

Using Selenium with Java and TestNG (4)

Simple Script

In this blog, I‘ll introduce how to use selenium to create a simple script. You will find that selenium is very easy to use.

Before we start, let me introduce the basics of automated testing. It is very simple, only 3 steps:

  1. Get the expected Result
  2. Get the Actual Result
  3. Assertion, compare the expected result and actual result

For selenium script, there are also 3 steps:

  1. Locate an element
  2. Operate an element
  3. Assertion

Read the rest of this post »

Posted in Testing

Perficient Establishes Domestic Delivery Center in Lafayette, LA

This morning I had the privilege to stand alongside Perficient President and CEO Jeff Davis, as well as Louisiana Governor Bobby Jindal, to announce that Perficient will establish a domestic delivery center in Lafayette, Louisiana.The addition of the Lafayette-based delivery center will augment our global delivery centers in China, India and Macedonia, which for more than 10 years have provided critical offshore capabilities to our customers while complementing our technology, delivery management and industry vertical expertise and capabilities across North America.

Perficient Established Domestic Delivery Center in Lafayette, LAI’m so pleased to share this exciting news with the multi-shoring community. At Perficient we not only strive to provide the best experience to our customers but pride ourselves on being a trusted advisor to our clients as well.

I believe Jeff Davis said it best this morning when he stated that being a trusted advisor to our clients depends on having the capability and the expertise to staff the right skills, in the right place, at the right time. We strongly believe our new Lafayette-based center will broaden our flexibility and capacity to serve our growing roster of clients.

It’s an ideal location with an educated workforce and proximity to several universities and technical colleges, and is well supported by local and state leaders focused on economic growth.

Additionally, the domestic delivery center will be patterned off the same proven global delivery model and Agile methodology that we’ve used in our existing development centers. We’ll meld in best practices that we employ today throughout our existing U.S. office locations, and will add capabilities and improved service levels that cover the entire spectrum of the software development lifecycle, including:

  • Up-front business analysis using leading-edge visualization techniques and high fidelity prototyping
  • Software development using a wide range of platforms from Perficient’s strategic partners such as IBM, Microsoft, Oracle and
  • Quality assurance and testing
  • Up to 24×7 support services through a managed service offering called SupportNet

As we look to the future, Perficient remains committed to providing its clients an optimized global delivery approach. The domestic delivery center will ensure we continually deliver high-quality solutions in the most cost effective way for our customers.

If you are interested in learning more about our plans, timelines and needs, click here.



Tags: ,

Posted in News

Using Selenium with Java and TestNG (3)

EventFiringWebDriver & Listener

In this blog, I‘ll introduce how we use EventFiringWebDriver and listener to create an auto-logging system for the test framework.   Why use EventFiringWebDriver and the event listener?
If we use it, we can easily know what a web driver instance will do with a small listener, and what operation  it does when an event fires.

  1. Using Selenium with Java and TestNG (3)We can use log4j to print log when the web driver performs an operation. That means when the test cases are executing, the logs will get printed automatically. What we need to do is to add only a few lines of code in the listener.
  1. We can add some functions to capture a screenshot in the listener, and the screenshot can be captured automatically when an event is firing. For example, it can capture the screen when you get an exception or capture the screen when selenium navigates to a new page.
  1. We can add some explicit waiting methods to slow down the test execution.

How to use EventFiringWebDriver and the event listener:

  1. We can create an EventFiringWebDriver as following, and it also registers the listener:

WebDriver driver = new EventFiringWebDriver(new FirefoxDriver()).register(new LogEventListener());

  1. We need to create the LogEventListener class which we used in the first step.

Read the rest of this post »

Tags: , ,

Posted in Testing

Using Selenium with Java and TestNG (2)

DataProvider in TestNG

In this blog, I‘ll introduce how to use TestNG’s DataProvider to create a data driven test. DataProvider is a feature of TestNG which makes TestNG easier to create data driven tests than Junit. It’s pretty easy to use DataProvider. First, let’s add the DataProvider into a test annotation like this: Read the rest of this post »

Tags: ,

Posted in Testing

Using Selenium with Java and TestNG (1)

Parallel Test Execution & Multi-thread

In this blog, I‘ll introduce how we use Selenium and TestNG to execute the test cases in parallel. If you’re using selenium and testNG, it would help reduce the test execution time.

As we know, testNG has the feature of parallel test execution. We could run testNG test cases on parallel by adding some property in the testng.xml.

For example: Read the rest of this post »

Get R Running over YARN-based MapReduce

Out of the mathematical and statistics language and tools such as SAS, SPSS, Matlab, etc. R language is a pretty good tool which provides the environment and essential packages for statistical computing and graphics. It is free and it offers an open environment and the means to allow users to develop custom package.

In addition to R, there is an IDE called RStudio, which is a powerful and web based user interface for R. It’s also free (the advanced options and support require some licenses),  open source, and works great on Windows, Mac, and Linux. RStudio has a desktop and server version.


We know that if we aim to perform data mining and machine learning from big data in the Hadoop environment, Mahout can be a great option which offers core algorithms like clustering, classifying and collaborative filtering. Compared to Mahout, R has its own advantages in  algorithm and computation speed. Furthermore, Mahout Community has announced that it will reject the new MapReduce algorithm implementations beginning in  May of this year.

Recently GDC China’s big data lab team established the R and RStudio in the Hadoop clustered environments. We obtained some experience and learned lessons on putting these components together. The  steps for doing this are as follows. Read the rest of this post »

Tags: , , , ,

Posted in BI&Database

Two “shipping” ways of using docker

Docker is a platform for developers and sysadmins to develop, ship, and run applications. Ship the “Dockerized” app and dependencies anywhere – to QA, teammates, or the cloud – without breaking anything. It’s one of the most important purposes to use docker.

Two shipping ways of using dockerIn Vernon Stinebaker‘s earlier post “Docker, mobile, and putting things in boxes“, he introduced the background of the Library system, the corresponding mobile applications (Andriod version and iOS version) and the need of dockerization. As one of the team members working in this ‘Library in a box’ project, I mainly focus on the part of “putting things in boxes”.

In this article, I am not going to introduce the detail steps of dockerization. Instead, I am going to introduce two “shipping” ways via using docker.


The target is to dockerize the application. By given the pressure from the project schedule, another team member and I decided that firstly we just used the interaction mode to install all the necessary software, Java 7, Liferay, and mysql to get the infrastructure set up. And then deployed the library application war file into the container. All of these steps were just same as an usual environment preparation and the application deployment. The only difference was that the installation and deployment wass done upon a docker container instead of a virtual machine. As highlighted in below command, the arguments “-t” and “-i” enable you to interact with the container.

$ docker run -t -i ubuntu:trusty/bin/bash

Once this was done, we committed the container as a docker image. At the first two Sprints, we delivered the docker images to the PO (Vernon Stinebaker) using the docker save command.

Read the rest of this post »