Recent Posts

Search Upgrade: How we went through changing search architecture along with elasticsearch version upgrade from 1.x to 2.x

Technology upgrade rollouts are too frequent these days, so are the requirements and expectations from a product. We need to keep up with this pace to take advantage of the changes and enhancement in technology and also able to fulfill the needs and expectations of a user. For this the product should be robust and architecture should be scalable to meet the growing demands from a product. So we took a step to upgrade elasticsearch from v1.x to 2.x. Let's start with a small brief on why we decided to go for upgrade and architectural changes. Why we need to do this? To take advantage of... Read More

Sending Mails Through SMTP Servers ( Gmail/Yahoo/Outlook )

Every website or web application needs to send transactional emails at one time or another. A user may request a password reset that sends them an email, or you may need to notify a user through email. So it is necessary to use the right tool when you don’t want to handle everything by yourself. So Let’s discuss what are the options we have got here. Whatever language you are working with you do need a mail server. So you can 1.Host your own mail server It is as complicated as it sounds. There are so many components to handle like Mail transfer agent DNS records Security... Read More

All Errors in One Place

When we release an Android app on Play Store, we constantly track error logs, crashes and ANRs via different mediums. 1. Playstore: We check our Playstore console regularly for statistics and crash reports. 2. Our common error logging system (Newmonk): To ensure our app is working fine and users are not facing any technical issues, we collect error logs using our own error handling module. We regularly check this interface as well. We follow a Roster programme wherein the team members take turns to monitor app health and constantly look for solutions to optimize the efforts being spent by... Read More

How we define our Minimum Viable Product @Naukri, India’s No.1 Job Site?

Source Minimum Viable Product, or if I say Minimum Buy-able product. Sounds good ? If not lets go deeper with what it actually means. Minimum viable product is simply defined as : The minimum product features that can be bought or you can say that minimal which can get the early adopters and help you attain feedback from them to build the finished product. Wikipedia says “In product development, the Minimum Viable Product (MVP) is a product with just enough features to gather validated learning about the product and its continued development.” When we get a... Read More

Static Framework for iOS

Why we need framework: Fast iterative compilation times (up to 3x faster). Easy distribution and packaging. No modifications to Xcode. Simple set-up for third-parties. Support for building the framework as a dependent target (i.e. modifying source in the framework and building an app will automatically rebuild the framework and relink as expected). Works with the latest version of Xcode. Constraint to support .framework: There are a few constraints that we want to satisfy when building a .framework: Fast iterative builds when developing the framework. We may... Read More

Naukri API Testing Framework

Framework is like blueprint for test automation. A good automation framework design helps in achieving more reusable, scalable, beneficial testing and reduce maintenance cost. Automation test framework provides environment for structured automated testing which includes test scripts writing with the help of reusable functions, test data generation and reporting. In case of API automation, framework become more challenging because of following tasks Handling JSON/XML based request or response parameter/body. Handling connection with API with different HTTP method. Validating API... Read More

Lean Apps

At Naukri we always target to keep the the app lean in terms of size. Size can be measured as:- -APK download size: Users often avoid downloading apps that seem too large, particularly in emerging markets where devices connect to often-spotty 2G and 3G networks or work on pay-by-the-byte plans. -App size on phone : Smaller the app size, more are the chances when competing with remaining apps for staying in the user’s phone for a long time. We regularly analyze the components which we can optimize or remove to reduce both. Some of the best practices we use are: Remove unused... Read More

Selenium Grid Using Docker

From quite a long time, we have been using selenium grid for parallel testing at Naukri. The purpose of using Selenium Grid is to reduce the total test execution time of an automation suite. This is achieved by running the automated test scripts in parallel on multiple machines. Refer to blog http://engineering.naukri.com/2015/10/parallel-testing-at-naukri/ for more insights on implementation of Selenium Grid for parallel testing at Naukri. Problem Statement: Although Selenium Grid has helped us in a significant manner over normal execution but every tool implementation comes with some... Read More

Challenges Using Appium for Mobile App Testing

Mobile automation poses different types of challenges in comparison to the automation of Web browsers. New tool sets are making it easier and easier to engage in genuine agile development on Mobile. In particular, true test-driven development—which was formerly a hard, upstream slog on Mobile—is becoming increasingly attainable. 2 years back, At Naukri we used to test the Mobile Applications manually. With the increase in technology and functionality in mobile apps we were facing many challenges while doing manual testing like: There is huge fragmentation of both devices and... Read More

Verify Colour of Elements using Selenium WebDriver

QA folks need to do Regression Testing as part of their Job. Since doing Regression on daily/weekly basis is cumbersome, we automate the functional flows of our application and these are called FTs (Functional Tests). Apart from executing the FTs, we do manual testing mostly to validate the alignment, font size, colour etc. Since, manually verifying the colour of all controls/elements is a tedious and time-consuming job, we should automate it also. How? We can automate it by using Selenium Webdriver itself. For example, I am taking Java as a language of choice with Selenium... Read More