11 Ways to Market Your App Online

It takes an enormous amount of effort to turn a mobile app idea into a winning one as 100s of apps are being launched to the app stores every day. To make your app stand out from the crowd and to reach your targeted users, an effective marketing strategy is obligatory.

app marketing

Let me tell you some of the ways through which you can spread the awareness of your app and boost your sales. I have categorized them into paid and unpaid ways so that your marketing strategist can easily work on.

#1. Build a Website/Microsite

One of the best and easiest ways to promote your app is to have a simple one-page website or a microsite that showcases complete details about your App. These days, many users prefer to search online before downloading an app as there is only minimal information provided on the app store page. Therefore, a simple website highlighting key elements of the app will not only help in your SEO rankings but also increases your app downloads. Moreover, with the advanced tools like WordPress, Drupal, Wix, Joomla, etc., it’s no longer hard to create a website.

#2. Create Blogs

Write interesting blogs on the topics related to your app and try to steer users to your app page while persuading them to download the app. You can also promote these blogs at various places such as social media, blogging sites, etc., to increase the reach of your app.

#3. App Store Optimization

This is one of the most important things to look at. Be it in the Play Store or iTunes Store, your app needs to be optimized in the best way to get discovered by the users promptly. Nearly, 60 percent of the app downloads actually come from browsing through app stores. So, here are few things to follow for better app store optimization:

  • A little bit of keyword planning- Use tools like Adwords Keyword Planner, SEMRush or Spyfu to list out potential keywords for your app and incorporate them while uploading your app to the app store. These tools will show you the number of searches for each keyword. Add these keywords to the keywords section and keep optimizing them according to the search trend.
  • Make sure your title is aptGive an appropriate title to the App. Ensure that there’s no misspelling. Adding a keyword to the title can help you in SEO rankings.
  • A meaningful descriptionInclude your app key functionalities, features, and related keywords in the app description. But please don’t stuff your description with inappropriate keywords.
  • Target locationIf your app is targeted towards a specific geographic region, make sure you are selecting the right country while uploading the app. If your app is not geography-centric, then target it globally. This could bring more visitors to your app store page.
  • Link to your websiteIt is likely that people will download an app that has a website linked to it.
  • Promo VideoAdd an informative promotional video to drastically improve the download rates. Videos create an impression in the mind of users and could impact their purchase decision.
  • ScreenshotsMake sure screenshots are clear and show functionalities and UIs to the user while having his first look.
  • IconsDesign an attractive and visible icon for your app. Research shows that apps with better icons get more downloads.
  • Previous AppsIf you already have any apps in the app store with a good download rate, it is better to upload the new app using the same developer account. This will enhance your app visibility by suggesting it to the previous app users.

#4. Exploit Social Media

  • Create a Facebook Page

Create a business page on Facebook for your app. Update the profiles with fresh content and link it to your app page, website, and other social profiles. Keep posting regularly with attractive images and blog posts related to your app and share them in relevant groups.

  • Twitter Profile

Twitter is one of the largest social media platforms to connect with a massive number of users. The trending hashtag option from Twitter will help you in reaching the targeted customer. Also, make sure you link your App Website to the Twitter profile.

  • Google Plus Profile

Just like other social media, create a profile on Google Plus with appropriate details. This can act as a high PR backlink for the promotion of your Website. Also, share posts in communities for better reach.

  • Instagram Business Profile

Create an Instagram profile and convert it to a business profile. The business profile will facilitate easy call making options for users and helps showcase your linked website.

  • LinkedIn Profile

LinkedIn allows you to make professional connections and acts as a great backlink for your website. You can also use paid ways to boost your app marketing; we will discuss this later in this blog.

  • Same with Pinterest, Tumblr, Vkontakte & other Social Media. Explore and make the most of it.
  • Create Gifs and short videos from platforms like Vine and share them on social media for greater reach.

#5. Email Campaigns

Conduct Email Campaigns using email marketing platforms like MailChimp. If you have an email database of potential app users, inbox them attractive newsletters and offers with app download buttons or buttons that link to your website, and social media. Most of these platforms will allow you to track opens, bounces, and even get the location-specific data.

#6. Create “How to” videos on the app usage & benefits and share it on video hosting sites like Youtube, Dailymotion, Ustream etc.

Facebook allows you to link your YouTube Channel to the Facebook profile. These Video streaming sites will allow you to submit your website information in the profile, video descriptions or to incorporate into the video. You can even share the videos on your social media profiles.

#7. Submit Backlinks to your Promotional Website/Microsite

Use social bookmarking sites that allow you to submit website details to them for free.

#8. Reach out to Editors, Journalists of Press and Magazines and Discuss your App Details

Persuade them on how the app usage is going to change the lives of people. And convince why it is worthy of being published. Get your content published!

#9. Include Promotional Website Link in your Email Signature

#10. Submit your Apps to App Review Websites like Feedmyapp, Appadvice, 148Apps, Appstorm, etc.

# 11. Pay for Ads  

If you are already done with the free promotions and if you want to expand your user base more, then you can always go for these paid ways to boost your app downloads or traffic.

  • Facebook Ads/ Instagram AdsA very worthwhile platform with lots of users and effective targeting. Since Instagram is owned by Facebook, you can even set up your Instagram sponsored ads from here. This allows you to target customers and give clickable links to your Instagram posts.
  • Twitter AdsTwitter Ads campaigns are based on business goals. Discover which objective-based campaign is right for you, based on your business needs and focus on that.
  • Google AdwordsThis allows you to set a budget and pay for your ad when a user searches for a keyword and finds your add. Google Adwords can be also used to display your ads in other apps.
  • Apple Search AdsApple Search Ads is an advertising option for promoting your app in the apple app store.
  • Bing AdsIt is a Yahoo’s advertising service similar to Google Adwords.
  • Pinterest Ads – Promote your best pins to appear in the most relevant places.

These are all the different ways to market your app(s) online. You can also work on promoting your app offline through Word of mouth, Banners and Posters with QR codes and other Augmented Reality enabled contents. Sending SMS to Play store or iTunes store links could even get you some more downloads. Make sure you are tracking your online statistics through Google Analytics. This could give you a detailed idea of where to target and where your ad spends should focus on. Thanks for reading.

FacebookTwitterGoogle+Share
Test cases and workflow for in-app purchase of android app

In-app purchase

In this blog, I would like to share android in-app product types, workflow of in-app purchases, and the set up of the test releases by a developer. These 3 things are essential for a tester to start in-app purchase testing.

In-App Product Types

The android in-app billing supports the managed in-app products and subscriptions.

Managed product: Once you purchase a product, that item cannot be purchased again until you consume the item, by sending consumption to Google play.

Subscriptions: This product type offers sell features, content, and services to users from the app with recurring weekly or monthly or annual billing.

In-app purchase workflow and settings for releasing apps to test:

The Google Play Console provides several tools to test the in-app billing. There are three stages of app deployment in android in-app purchase:

  1. Alpha
  2. Beta
  3. Production

Alpha and Beta Release (Sandbox account):

Publish app directly to Google Play’s alpha and beta release channels for testing purpose. The app will be available only to the tester who can download and install the app to the device from Play Store.

To release a test app, first, the developer should create and add test-user Gmail accounts to ‘Tester List’ group in Alpha/Beta release section.

Both the alpha/beta release is same; the only difference is adding the number of tester accounts.

  • Alpha test – we can create a small group of testers.
  • Beta test – we can create up to 50 lists per track and can add up to 2000 users in each track.

Testing in-app purchase (In-app billing – Subscription type)

To test in-app purchase, we need to publish the app to an Alpha or Beta channel in Google Play. You can choose any user to be a test account and any user of test account can make test purchases with any available payment methods, without any actual charges to their accounts.

First, the developer has to upload and publish in-app products in play console before publishing the APK itself. Then, add user account ID (Gmail ID) to License testing section in the developer console and we can add up to 400 test-user accounts to test in-app purchase products.

Steps to add: Login to developer console and Go to Settings –> Accounts details then add the addresses to License Testing field.

Note: The address should belong to Google account. It will not accept other accounts to add as license tester.

Once you add the users as license tester accounts and saved the changes, within 15 minutes those users can make a test purchase of your in-app products. After publishing the app, the tester needs to opt-in the alpha/beta release of the app using the provided opt-in URL before making test purchases. In this case, the developer will provide an opt-in link to the test users.

The opt-in URL will generate once the developer has created and added the license test users in the license section. Before that, the developer will send an invitation to users to become a part of tester group and then copy and send generated “opt-in URL” to all test-user accounts.

Once test-users get authorized test access, they can make a purchase without any actual charges. After all the processes have completed, the app will be available in tester’s Play Store who were all added as the Alpha/Beta tester.

Test purchase is auto-renewable on daily basis for any actual duration. The app will automatically renew every day until you cancel the purchase.

Important note: Licensed account must be on the user’s android device. If the device has more than one account, the purchase will be made with the account that downloaded the app. If none of the accounts have downloaded the app, the purchase is made with the first account. Users can confirm the account that is making a purchase by expanding the purchase dialog.

Steps to start an in-app purchase (Subscription) test:

  1. The user will receive an invitation to become an Alpha/Beta tester. Click on ‘Become a Tester’ button in the mail to be a part of the tester group.
  2. Later, the tester will get detailed mail along with opt-in URL link of test application from Google Play Console.
  3. Click on ‘opt-in URL.’ It will redirect to your Play Store app and shows test app with all the information.
  4. You can download and install the app to your phone from Play Store using licensed tester account.
  5. To add payment methods for purchasing the app, select Slider Menu in Google play store –> choose Account option –> Select Payment methods –>  then add your valid international Credit/Debit Card or Net banking detail along with your name and address.
  6. Click on Save in the popup window.
  7. The Payment method will be successfully saved. If you did not add your Payment method, it will ask the card details while doing the purchase.
  8. Once the payment details are successfully added, an amount of ₹50.00 will be debited from your account for Debit/Credit card verification but after few minutes, the amount will be credit back to your account. It will be debited while adding the card detail only. It will not debit while subscribing to the app (If you are a licensed test-user).
  9. Next, you can start testing subscription function in your app
  10. The following message will be displayed on Google popup when you make a payment. “This is test subscription. It will recur daily. You will not be charged.”
  11. You will get a receipt for your purchase order from Google Play Store on successful purchase.
  12. The subscription will auto-renew and send email every day until you unsubscribe the purchase.

Test Cases:

  1. Pricing info should be displayed based on region-specific currency and needs to verify whether the mentioned price has tax included or excluded.
  2. Span time of billing period and description about your subscription should be shown as per requirement.
  3. To verify, the app will deduct given price while purchasing the subscription.
  4. Services or Features should be accessible after successful purchase.
  5. Check whether the purchase auto-renews in the specified duration because it should be continuously renewing the purchase until you cancel the purchase.
  6. Check whether the subscription is expired once the specific subscription period is over. The subscription will expire only if the user canceled auto-renewal or subscription (Auto-renewable product).
  7. Check whether the app is expired on time and make sure that the users should not access purchasable content or features (Non-auto renewable product).
  8. Subscription features should be automatically restored while re-install/updating the app. If it is a Non-consumable product, the app should have restore button for restoring the purchases.
  9. Use the same purchase id to multiple devices and verify whether the app has subscribed state.
  10. Use different accounts (ID doesn’t have a subscription) to Google Play and install the app and verify that the app has Un-subscribed state.
  11. Subscription features should continue to users after canceling the auto-renewal or subscription and until it expires.
  12. Check the status of in-app purchase when users purchase while there is no network on the device. ‘No internet connection’ should be shown when the user tries to purchase a product and while accessing purchasable features.
  13. Once the network connection comes back, check the status of previously attempted purchase at that time of network failure.
  14. The app should validate the purchases on the update
  15. Check the subscribe function of product that was already purchased. It should not allow purchase again.
  16. Verify that the users get purchase receipt from Google play until they cancel the subscription.

 

What is Food Safety Management and Why Do We Need It?

Food Safety and Hygiene becomes an emerging demand in the food industry and is a universal concern. Therefore, maintaining food safety & hygiene is a compelling requisite for food entrepreneurs to sustain in today’s competitive market.

 Food safety management

The International Organization for Standardization created ISO 22000 standard to manage food safety and security and specifies the essentials for a food safety management system that involves:

  • Interactive communication
  • System management
  • Prerequisite programs
  • HACCP principles

The food safety management system identifies, evaluates, and controls food hazards, at all levels of the food supply chain; be it during ingredient supply, food preparation, packaging, storage, transportation, etc.

Why is Food Safety Management Imperative?

  • Food safety and hygiene are crucial to reducing the risk of food-borne illnesses that may cause through biological hazards such as pathogenic bacteria, viruses, and parasites, or chemical hazards or natural toxins.
  • If the food safety guidelines are not followed precisely, people can fall sick and may even lead to death.
  • If the food is improperly stored, handled, cooked, or refrigerated, bacteria can grow leading to food contamination.
  • At times, there would be issues like product recall, where seller may request consumers to return a product after the discovery of any product defects or safety issues that might endanger the consumer or put the seller at risk of legal action

Hence, complying food safety guidelines is essential to maintain the quality as well as the shelf life of the food products.

How does Food Safety Management System help?

An effective food safety management system that is based on seven principles of HACCP can help businesses to identify and control hazards before they threaten the safety of your food and customers.

Here are the seven principles of HACCP:

 Food Safety Program

Hazard Analysis

Hazard Analysis is a preventive approach to food safety, which identifies biological, chemical, and physical hazards in the production process that may lead to an unsafe finished product and defines controls to reduce these uncertainties to a safe level.

Critical Control Point (CCP)

The points that can be applied at stages of the process to eliminate or reduce the hazards to an acceptable (critical) level. Say, for example, if rice is cooled too slowly, it may result in food poisoning. Here, cooling is the critical control point.

Critical Limits

The safety limits that determines a maximum and minimum value for each CCP. It separates the acceptable (safe) product from the unacceptable (unsafe) product. Critical limits can be monitored by measurement or observation. Example – Time, Temperature, Chemical, etc.

Monitoring

Monitoring procedures include observations or measurements to assess whether the CCP is being met. And that appropriate steps are being followed to ensure food safety.

Corrective Action

The actions that need to take if there is any deviation from the established critical limit. Corrective actions ensures that the products are not injurious to health or otherwise adulterated as a result of the deviation enter commerce

Verification

The important aspect of verification is to determine that the food safety management plan is properly implemented and all the hazards were identified. Verification monitors whether the plan & guidelines are functioning as designed and are effective.

Record Keeping & Documentation

Record Keeping & Documentation contains complete records & forms to show that checks have been carried out at appropriate intervals in line with the Food Safety Policy. The food industries can be audit ready by following the appropriate documentation & record keeping procedures.

The food hygiene and safety management software solution like ionhaccp will help food industries to handle, store, and sell safe food to customers while ensuring compliance with the necessary standards like Safe Quality Food (SQF) initiative, Hazard Analysis and Critical Control Points (HACCP), and ISO 22000.

IndexedDB Support in Chrome Browser

What is IndexedDB?

  • IndexDB (Index Database) is a low-level API for storing significant amount of data in the client-side, including file/blob.
  • It is a document database (NoSQL or Object) that exist in sandbox context entirely within the browser and provides a way to store large amounts of data on your user’s browser.
  • The below figure highlights the structure of database in IndexDB.

indexdb

  • You can also choose cookies and local storage for storing data but they don’t offer database usability the way IndexDB do.

Why use IndexDB?

  • IndexDB is a transactional database system similar to an SQL-based RDBMS. However, unlike SQL-based RDBMS, IndexDB is a javascript-based object oriented database, which does not use fixed column tables,
  • IndexDB stores key-value pair and let you store and retrieve objects that are indexed with a key.
  • The data stored in IndexDB is persistence. It offers rich query abilities and is available both in online and offline mode.
  • IndexDB also offers a powerful indexed based searching API to retrieve the data you need.

Checking IndexDB Compatibility in Chrome Browser

To open and configure database operations, you need to assure that your browser supports IndexDB. Implement the below code in your application in order to check the IndexDB compatibility in chrome browser.

window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;

if(!window.indexedDB){

console.log("Your Browser does not support IndexedDB");

}

If the browser is supporting IndexDB, you can open and configure the database.

Issues While Checking IndexDB Compatibility

While checking IndexDB compatibility in chrome browser, we have faced one issue. When we were using older chrome version, the code which we implemented to check IndexDB compatibility was working fine.

Here is the code snippet we used on older version.

window.indexedDB = window.$indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;

if(!window.indexedDB){

console.log("Your Browser does not support IndexedDB");

}

But, after we upgrade our chrome version to 57.0.2987, the IndexDB is not supporting the latest chrome browser. To fix this issue, we made one small change in the above OR condition. We removed ‘$’ symbol from window.$indexedDB. After making this change, the IndexDB is supporting the latest browser.

Find below the working code snippet.

window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;

if(!window.indexedDB){

console.log("Your Browser does not support IndexedDB");

}

IndexDB is appropriate to handle large amounts of data and to perform complex search queries. It uses indexes to store the data and transactions to perform operations.

Why temperature monitoring and control is necessary across industries and how to manage it?

Temp-Humidity-Icon-Blog-800x500Industries have different specifications, requirements, and motives when it comes to temperature control of its product or environment. Let’s see some industries where temperature needs to be constantly regulated and why.

Food & Beverage Industry

Companies dealing with manufacturing, processing, packaging, transporting or storage of food ingredients/materials/products need constant monitoring of the food temperature levels. The operations of these industries are controlled by regulatory bodies like FDA to prevent contamination, spoilage or other hazards, some of which could even turn deadly for people. These regulations are implemented to safeguard the health of consumers/general public which has to be mandatorily followed by the businesses. Unless food products are monitored and their temperature levels are maintained, the bacterial growth cannot be curbed and could result in casualties. Therefore, the companies should constantly monitor the temperature to prevent harmful bacteria & pathogenic microorganism growth.

Breweries require specific temperature conditions for yielding best results in beer fermentation process. Coolers and fermenters are to be monitored constantly to prevent temperature from going too high or low.

Airline & Cruiseline catering services are involved in serving high-quality food to passengers from different regions of the world. They should be certain in the quality of food they are providing and food temperature plays a vital role in the food quality.  It is essential to track the temperature of food at the time of cooking as well as serving in these industries.

Healthcare:

Pharmaceutical companies need to maintain the temperature levels in a warehouse between 68°F and 78°F to maximize shelf life of their products. The companies also require tracking of their humidity levels to ensure that medicines are kept in the best environment.

Laboratories with sophisticated medical instruments require the environment temperature to be controlled for accurate results and performance. Humidity changes to laboratory environment may result in corrosion or micro corrosion of mission critical equipments, increased maintenance cost, inaccurate readings, and replacement.

Blood Banks store blood bags at adequate temperatures to ensure safety in transfusion practices. Blood transfusion could cause serious consequences if the transfused blood is not safe. Due to power disruptions and equipment failures sometimes blood banks throw away blood bags that are unsafe for transfusion.

ICU Room temperatures need to be maintained between predefined ranges to ensure the wellbeing of patients. To patients whose temperatures fall outside of the normal range, healthcare professionals should use temperature management tools to restore normal body temperatures, such as heating or cooling blankets. ICU Rooms require careful and constant monitoring of its room temperature for the comfort of the patient as well as for slowing down the growth of bacteria and other microorganisms.

Retail Industry:

Malls & Supermarkets needs to maintain their floor temperature in an adequate range for the comfort of people visiting the malls as well as for maintaining a safe temperature for increasing the shelf life of products. Supermarkets must control and monitor its environment temperature to ensure the quality of food products being stored and to prevent spoilage. A supermarket will have a variety of products that includes vegetables, fruits, milk items, meat, beverages and other perishable food products which make it essential for temperature and humidity regulations inside the stores.

Real Estate

Apartments and property management communities may require continuous monitoring of various critical control parameters including air temperature, moisture content, pressure, motion, pollution, fuel storage, contamination, etc., are well interpreted and red-pinged when needed assuring safety and well-being to its inmates at all times.

Managing the temperature parameters:

Even though businesses set up the air conditioning, chilling & cooling systems for temperature control, it needs to be monitored 24*7, to prevent any incidents from happening. A fully automated system that notifies the assigned user whenever the temperature fluctuates from the required range must be installed in these facilities. Fully operating temperature control and monitoring system with real-time data on temperature and humidity levels will allow effective management of food safety, ICU rooms, Malls & retails, Laboratories, blood banks, etc.

Software solutions like Ionhaccp will allow you to record and track the temperature and humidity details of a room or product. Its workflow is designed to ensure strict verification and constant watch on the temperature levels. Any deviations will be notified by Email as well as SMS which allows the assigned field staff to take corrective measures.

6 Scenarios for Testing Beacon Integrated Application
Beacon Testing

What is Beacon?

Beacons are small Bluetooth-powered radio transmitters that can trigger real-world actions by relaying contextual information to nearby smart devices.

Beacon Identifiers

The parameters UUID, Major, and Minor are the Beacons identifiers. These parameters together makeup iBeacon’s unique identifier and plays a key role in beacon deployment.

  • UUID: The purpose of the UUID is to distinguish beacons in your network from all other beacons in networks outside your control.
  • Major: The major field identifies and distinguishes a group, for example, all beacons in on a certain floor or room in your venue could be assigned a unique major value.
  • Minor: The minor field identifies and distinguishes an individual beacon, for example, distinguishing individual beacons within a group of beacons assigned a major value.

Beacon Application Developed by Vmoksha

Vmoksha developed a beacon integrated iOS application that assists users to discover the nearest meeting room in their office on preferred date and time.

How does it work exactly?

Beacons were fixed in the meeting rooms. We have assigned a single UUID to the group. It will notify users the nearest available meeting rooms first just by referencing the UUID. The application developed scans for beacons and displays the availability of rooms with date and time. The user should choose and book the convenient room and can invite people from the contact list to the meeting.

Android iBeacon

Pre-requisites

  • App installation on the iOS device
  • Beacons to place/fix in the meeting room (Used Kontakt beacons)
  • Internet connectivity should be on
  • Bluetooth (BLE) has to be activated in the mobile device

Testing the Beacon Application

For testing the application, we used two beacons to book the meeting room either by date and time or availability of particular meeting room.

Search by date and time: The app allows a user to set the time slot of a meeting for a minimum of 15min with no maximum limit. When we set the preferred date and time in the app, the app displays a list of rooms with the nearest room first, followed by the succeeded one.

Search by availability: The app allows users to search for availability of a particular meeting room and enables them to book that room when it is unoccupied.

To test the beacon application, we followed the following steps:

  1. Installed the app on multiple iOS devices (iPhone 6, 6+, iPad)
  2. Attached  beacons  to different rooms
  3. Followed various test scenarios

We have followed several scenarios while testing the application. Here, I have mentioned the major 6 test scenarios that we followed during the testing.

Scenario 1: Book a room based on date and time and send invite

Case 1: Device connected to Wi-Fi and Bluetooth

  • Select the date and time
  • The app displays a list of rooms with the nearest room first
  • Select the room and invite people to attend meeting

Result: App should allow booking of a room and inviting people

Case 2: While booking the room, disconnect mobile device from the Wi-Fi

Result: App should display the error message ‘please check the network connectivity’

Case 3: While searching the room, disconnect the Bluetooth connectivity

Result: The app should display an error message as we need Wi-Fi to get the status of the meeting rooms and availability. BLE is required to navigate and identify the meeting room using Beacons.

Scenario 2: View rooms based on available timings of the specific room and send invite

  • Connect device to Wi-Fi and Bluetooth
  • Select the ‘search by available meeting room’
  • The app displays the available timings of the specific room with the nearest room first
  • Select a room and invite people to attend meeting

Result: App should allow booking of a room and inviting people

Scenario 3:  Book a room that was already booked

  • Connect the device to Wi-Fi and Bluetooth
  • Book the ‘room 1’ on May 10th, 2017 @10:00 A.M
  • Again try to book the same room for the same date and time

Result: In the available room(s) list, it should not display the ‘room 1’

Scenario 4: Book a room for the past /present/future date and time

Case1: Book a room for the past date and time

Result: App should not allow the booking of a room for the past date and time

Case 2: Book a room for present date and time

Result:  App should allow the booking for present date and time

Case 3: Book a room for future date and time

Result: App should allow the booking for future date and time

Scenario 5: Book a room while mobile is in airplane mode

  • Connect the device to airplane mode
  • Make sure the device is connected to Bluetooth and Wi-Fi
  • Book a room either by Search by date and time or Search by available room options

Result: App should allow the booking of a room

Scenario 6: Book a room when mobile battery is draining (charge less than 20%)

Result: App should allow the booking of a room

Challenges

  1. At times, the nearest available room was showing next in the availability list.
  2. Beacons not working:
    • Battery is not properly placed
    • Battery might be discharged

3. User calendar is not mapped to the app to see whether he or she is available to send the invite.

Conclusion

Beacon is a low cost, low powered and low energy Bluetooth device that uses low-frequency for transmitting weak signals to other Bluetooth-enabled devices. When people pass through the beacon integrated meeting room the app will detect the nearby available meeting room.

Performance Test of Web Application using Apache JMeter

Apache JMeter is one of the best open source tools for Load and Performance testing. It can be widely used for a variety of applications. In this blog, I would like to share how to do the performance and load testing of a web application using JMeter Recording Tests (GUI mode) on Windows Operating System. Before that, I would like to share about Apache JMeter features and installation process.

Apache JMeter Features:

  1. It has the ability to load and performance test many different applications, server, and protocol types such us HTTP, HTTPS, FTP, TCP, Web Services, etc.
  2. It allows to recording scripts, building, and debugging.
  3. It has compatibility with Windows, Linux, Mac OS, etc.
  4. Complete portability and 100% Java purity.

Downloading and Running Apache JMeter:

Requirements:

JMeter is a pure java application. It requires the system that is compatible with java and a fully compliant JVM 7 or higher version. Download and install Java Development Kit (JDK 7 or higher) from here.

Downloading JMeter:

  1. Download the latest version of Apache JMeter x.x from here.
  2. Choose Binaries file and either zip or tag file to download the JMeter

Configure JMeter

Running JMeter:

There are three modes to start JMeter

GUI Mode: It can be used for recording test script and running their script to JMeter itself. Run the Jmeter.bat file for Windows system and JMeter file for Linux. These files are found in the bin folder. After that, JMeter GUI will appear.

Command Line Mode (Non-GUI): For load testing, use this mode to get optimal results.

Server Mode: For distributed testing, use this mode to run JMeter in Sever on the remote node and control the servers from GUI.

Test Script Recording of Web Applications

Steps to Configure JMeter:

#1. Go to apache-jmeter-3.1/bin folder and start the jmeter.bat (Batch) file.

Jmeter configuration

#2. Select “Test plan” on the Tree

JMeter Proxy

#3. Right click on Test Plan and go to Add > Threads (Users) > Thread Group

Once Thread Group is added, configure the JMeter.

Jmeter configuration

Above figure shows JMeter configuration for 10 users, 5 seconds ramp-up and 1 Loop count.

Number of Threads: The number of users going to hit the server. Ramp-Up Period: Time given for each user to hit the server. For Example:

  • 100 users, 50 seconds ramp-up – start with 1 user, each second 2 users added
  • 100 users, 100 seconds ramp-up – start with 1 user, each second 1 user added

Loop count: Execute the same process ‘N’ number of times continuously and increase the loop count value.

#4. Right click on Thread Group and go to: Add > Config Element > HTTP Request Defaults

Configure JMeter

Add the following three things to this window.

Server Name or IP: Server Name or IP is nothing but URL of the website on which you have to perform the load test.

Port Number: Add the default port number 8080 to the Port Number field. To change the number, edit it under Global settings.

Protocol: Here you can mention your required Protocol, http or https. Don’t mention as in Caps.

#5. Right click on Thread Group and go to Add > Logic Controller > Recording Controller

JMeter Proxy

You can watch recorded samples of your actions while you are browsing the web applications. Each Https request will be recorded.

#6. Right click on Thread Group and go to Add > Config Element > HTTP Cookie Manager

To use cookies on your web application, add HTTP Cookie Manager to the Thread group. Test Script Recorder #7. Next, select Workbench. Right click on Workbench and add the Recorder: Add > Non Test Elements > HTPP(S) Test Script Recorder

JMeter Proxy

Check whether the port 8080 is open or busy in your system. If it is busy, you should change to the other port number that is always open in your system. On HTTP(s) Test Script Recorder, click the Add button in “URL Patterns Include.” Enter “*”. It has to record everything.

To restrict any image types and web pages while recording the scripts, we need to enter the pattern in “URL Patterns Exclude” which is not being recorded in JMeter.

Example patterns: .*\.png .*\.html .*\.jpg

#8. Right click on “HTTP(S) Test Script Recorder” and Listener: Add > Listener > View Results in Tree.

JMeter Proxy

We need to add at least one Listener in the workbench so that we could see results of JMeter while recording. In JMeter, there are many listeners to view results. We can generate the report in Graph or Table.

Add Listeners: Right click on “Recording Controller” > Add > Listener > View Results in Table. Right click on “Recording Controller” > Add > Listener > Summary Report. Right click on “Recording Controller” > Add > Listener > Graph Results.

#9. Finally, click the “Start” button in the Script recorder window. Then the JMeter Proxy server will start on your system. When the JMeter starts, ApacheJMeterTemporaryRootCA.crt certificate will be created in the bin directory. Click OK and continue.

JMeter

Configure JMeter

Note: If you are testing from behind a firewall/proxy server, you may need to run the jmeter.bat file from a command line mode to use following parameters (If you are working under proxy network in office, use this method.)

Go to jmeter/bin directory and enter this:

jmeter.bat -H <Hostname or ip address> -P <Server port> -N <Non proxy hosts> -u <Username for proxy – If required> -a <Password for proxy – if required>

Example: jmeter.bat -H my.proxy.server -P 9090  -u username -a password -N localhost

Configure Browser to use the JMeter Proxy:

We will use Firefox to test the application. For this, we need to do the following proxy setup in the browser.

Steps to Configure Mozilla Firefox with JMeter Proxy:

  1. Open the browser. At that time, don’t close the JMeter window.
  2. Click Menu button from the Navigation bar.
  3. Choose “Options” menu.
  4. Click “Advanced” tab on the left and then select “Network” tab.
  5. Click on “Settings” button in the Connection section.
  6. Choose “Manual Proxy Configuration.”
  7. Type HTTP Proxy as localhost or enter IP Address of your system and then set port as 8080 (Check whether this port is free. If not change the port)
  8. Check “Use this proxy server for all protocols” option.
  9. Click “OK” button
  10. Click “OK” button again.

Now your browser is configured with JMeter Proxy server. Refer the below image to configure the Firefox browser.

JMeter Proxy

Now everything is configured and ready to start recording the user actions in JMeter.

Record the Script:

Before starting the recording, ensure that JMeter was started in your system.

  1. Open Firefox browser and type the URL of your application then hit enter.
  2. Do the actions whatever you want to test in the application.
  3. Now go to JMeter and click “Recording Controller” in the Thread Group. Here you can see the script for whatever actions you did in the browser.

X Configure JMeter

          4. Once you are done with the actions in the browser, click on “Stop” button of the HTTP(S) Test Script Recorder window in JMeter.

Run the Script:

We are ready to run the recorded script. Save the test plan. Run the Test Plan:  Press Ctrl + R (or) Click “Start” button.

While running the script, at the top right corner, a green color square box will display. Once it is completed, the box will change to Grey.

 JMeter Proxy

View Results:

Click on “View Results” in Tree under the Recording Controller.

Jmeter

Click on View Results in Table.

Configure JMeter

Click on Aggregate Graph > Graph

JMeter Proxy

Click on Summary Report.

Configuring JMeter

In JMeter, we have to save recorded scripts in different formats like JMX, CSV, etc. We can upload the recorded script files to third party online load testing tools and get detailed and optimal results from there.

Online tools for load testing:

  1. Blaze meter  -> https://www.blazemeter.com
  2. Redline13  -> https://www.redline13.com
How to Test Native App Performance using Apache JMeter?

In my previous blog, I have elucidated how to test web application’s performance using JMeter. Here, I would like to share how to test mobile app’s performance in JMeter.

JMeter records mobile application requests on HTTP(S) Script Recorder and it has features to prepare and run our mobile application performance test scripts. All we have to do is to configure JMeter and Mobile device. In JMeter, we can test both iOS and Android native applications.

Steps to Configure JMeter:

  1. Go to apache-jmeter-3.1/bin folder and start the jmeter.bat (Batch) file.
  2. Right click on “Test Plan” > Add > Threads User(s) > Thread Group.
  3. Right click on “Thread Group” > Add > Logic Controller > Recording Controller.
  4. Right click on “Thread Group” > Add > Listeners > View Results in Tree.
  5. Add HTTP(s) Script Recorder to Workbench by selecting Workbench > Add > Non-Test Elements > HTTP(s) Script Recorder option.
  6. Add Port value as 8080 and click “START” button in script recorder. The JMeter proxy will be started on localhost.

Note: If you are testing from behind a firewall/proxy server, you may need to run the jmeter.bat file from a command line mode to use following parameters (If you are working under proxy network in office, use this method.)

Go to jmeter/bin directory and enter this:

jmeter.bat -H <Hostname or ip address> -P <Server port> -N <Non proxy hosts> -u <Username for proxy – If required> -a <Password for proxy – if required>

Example: jmeter.bat -H my.proxy.server -P 9090  -u username -a password -N localhost

Next, we need to configure the mobile device as per the following steps.

Before starting the configuration on your device, you should install “ApacheJmeterTemporaryRootCA.crt” certificate in your mobile/tab device.

Steps to install the certificate:

1. Go to jmeter/bin directory and find the ApacheJmeterTemporaryRootCA.crt file. (If you cannot find the certificate from bin directory, just go to your HTTP(S) script recorder screen in Jmeter and click ‘Start’ button. It will generate new certificate on your bin directory automatically).

2. Attach that file and send an email to yourself.

3. Download from your mail and then install on your device.

After installing successfully, you will see the notification “Network may be mounted” on android device. Here you can verify whether the certificate has been installed. For iOS device, it will show you the “Profile Installed” pop-up and you can see the ‘Verified’ sign. Tap ‘Done’ at the top right corner to complete the installation.

Note: Ensure to check whether the certificate has been expired or not. Certificate will be expired within 7 days from the date of generated. If it has expired, simply re-generate again and use it.

iOS Device Proxy Configuration:

  1. Go to Settings > Wi-Fi option. (Note: Network should be same for both Mobile and Laptop/Desktop).
  2. Click on the Connected network.
  3. Select “Manual” option from HTTP Proxy.
  4. Set ‘Server value as system IP address and Port value to 8080 as per JMeter setup.
  5. Now start the application on the device and its each request will be recorded in JMeter.

 Android Jmeter

Android Device Proxy Configuration:

#1. Go to Settings > Wi-Fi option.

#2. Press and hold on connected network and Click ‘Modify Network’ option.

#3. This will open advanced settings from where we can modify Proxy.

#4. Change the Proxy to Manual.

Apache JMeter

#5. Set Hostname value as system IP address and Port value to 8080 as per JMeter setup.

Android PAC

#6. Click on ‘Save’.

#7. Now start the application on the device and its each request will be recorded in JMeter.

#8. Before running the application, make sure that HTTP(S) script recorder was started in JMeter.

#9. Once the application is started, the actions of the script will be recorded under “Recording Controller.”

#10. Once actions are done in the application, stop the script recording by clicking ‘Stop’ button in HTTP(S) script recorder screen.

#11. Now, expand the “Recording Controller” in JMeter. You can view all the Recorded scripts of whatever actions are done in the applications.

#12. Finally, click the ‘Play’ button. It will run recorded scripts as per your Threads setup.

#13. Click on “View Results in Tree”. Here you will see the result of your script.

 

Solutions for issues while testing the mobile application:

Here are the solutions for the issues that we have noticed while doing the load test in JMeter.

Issue 1

The application wasn’t getting loaded.

Solution

The issue is caused because our system was enabled with the firewall protection in security software. This is restricting network connection when setup with the proxy. We have disabled the firewall protection in antivirus settings.

Issue 2

Internet was not working with Proxy on the mobile device when we configure the mobile device and JMeter.

Solution

The reason might be that the system IP address is not configured with JMeter properties which mean the current IP address is not added to the JMeter properties file. We have added remote host IP address to property file as per the following steps.

  1. Open the browser and type IP address and Port number that is mentioned in JMeter to check whether it was configured. If browser shows Connect, then it is working fine otherwise if it is continuously loading, then it was not configured. Then we have to follow the below steps:
  2. Open apache-jmeter folder from the local drive and go to the bin folder.
  3. Open “jmeter (.properties)” file and find “Remote hosts and RMI configuration” section on this file.
  4. Under this section, add the system IP to remote hosts with comma delimited and save the file.
Automatic Proxy Configuration using PAC File, Batch Script and Windows Server 2012 GPP

Introduction

The proxy auto-configuration is a technique which defines how & where the web browser and other application requests are redirected. Also, this mechanism is designed to overcome the changes and difficulties of manual configuration. Instead of using the static proxy server address, the web browser or application executes a JavaScript function for every request. This script provides greater flexibility than a manual configuration. This blog explains about automatic proxy configuration using Proxy Auto Config script (PAC), windows batch script, and Group Policy Preference (GPP).

What is a PAC file & what it does?

PAC stands for Proxy Auto Configuration. This file contains a set of rules coded using a JavaScript function FindProxyForURL (url, host) which determines whether web browser requests (HTTP, HTTPS, and FTP) go direct to the destination or forwarded via web proxy server such as squid proxy. Vmoksha uses squid proxy server, which is a fully featured web proxy cache server application.

Before Proxy Automation in Vmoksha:

We were facing following problems and challenges before automatic proxy configuration,

  • Manual Proxy Configuration
  • Speed & Latency Issues
  • No Failover Setup
  • Exception (Proxy Bypass) Configuration
  • Explicitly proxy disables in external networks
  • Internet connectivity outage

Benefits after Proxy Automation in Vmoksha:

The following are the benefits after automating proxy configuration,

  • No Manual Effort
  • Script-driven method of controlling the routing of web requests
  • Proxy bypass configuration for private sub-networks, internal/local hosts, and local domains
  • Support for all major operating systems and web browsers
  • Automatic proxy failover with multiple proxy servers
  • Efficient and automated traffic routing regardless of domain name or IP address
  • Support for wireless networks in mobile devices
  • Supports web traffic load balancing

Procedure:

The following are the steps for automatic proxy configuration

Step 1: PAC File Creation

Create a PAC file script based on the following example.

PAC File Example:

function FindProxyForURL(url, host) {

// If the hostname matches, send direct.
   if (dnsDomainIs(host, "localdomain.com") ||
       shExpMatch(host, "(*.localdomain.com)"))
       return "DIRECT";

// If the protocol or URL matches, send direct.
   if (url.substring(0, 4)=="ftp:" ||
       shExpMatch(url, "http://localdomain.com/folder/*"))
       return "DIRECT";

// If the requested website is hosted within the internal network, send direct.
   if (isPlainHostName(host) ||
       shExpMatch(host, "*.local") ||
       isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
       isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
       isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") ||
       isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0"))
       return "DIRECT";

// DEFAULT RULE: All other traffic, use below squid proxy servers in fail-over order.
   return "PROXY 1.2.3.4:3128; PROXY 5.6.7.8:3128";
}

url – The full URL being accessed in web browser. (http:// or https:// or ftp://)

host – The hostname from the above url. port numbers and sub-location is not included in this

return – Return value can be any of the following

  • DIRECT – Redirects requests directly to the destination
  • PROXY host:port – Redirects requests to Proxy server
  • SOCKS host:port – Redirects requests to SOCKS server

Finally, save the file with .pac extension. Eg. proxy.pac

Step 2: Host the PAC file on a web server for client access

Next step is to host the PAC file on a web server’s home directory such as (/var/www/html for Apache2) or (/usr/share/nginx/html for Nginx) or (C:\inetpub\wwwroot for IIS8) and make sure the file is accessible from intranet clients.

Step 3: AutoConfigURL setting via Group Policy Preference

Context: To configure Internet Explorer with a Proxy PAC file using Group Policy Preferences options.

  • Open your GMPC.MSC console and navigate to User Configuration / Preferences / Windows Settings                 
  • Right Click on the Registry object from the left hand pane and select New > registry Item

Automatic Proxy Configuration

From New Registry Properties, login in the following settings

  • For Hive: HKEY_CURRENT_USER
  • For Key Path: Software\Microsoft\Windows\CurrentVersion\Internet Settings
  • For Value name: AutoConfigURL
  • For Value Type: REG_SZ
  • For Value data: http://mysite/proxy.pac

Screenshot

  Proxy.pac File

Apply and OK to complete this GPP Configuration

The following are steps to auto configure winhttp proxy settings

Step 1: Batch Script Creation

Create two batch scripts with the following content

Script 1: "setproxy.bat"

rem This Batch File sets the WinHTTP proxy settings and bypasses the localhost

netsh winhttp set proxy "proxy.mydomain.com:8080"; 127.0.0.1,localhost

Script 2: "resetproxy.bat"

rem This Batch File resets the WinHTTP proxy settings

netsh winhttp reset proxy

Step 2: Group Policy Object Creation

  1. Open your GMPC.MSC console and create a new Group Policy Object and enter the name of it.
  2. Navigate to User Configuration / Policies Windows Settings / Scripts
  3. Select Logon under Scripts; add the above script “setproxy.bat”
  4. Select Logoff under Scripts; add the above script “resetproxy.bat”
  5. Navigate to Computer Configuration / Policies / Administrative Templates / System / Group Policy
  6. Enable the policy Configure Logon Script Delay, and enter “0″ minute.
  7. Attach this GPO to the appropriate OU of your domain and enable it.
Zapier – Superpower App to Automate Workflows

Zapier is a business automation tool that allows multiple business apps to speak to each other. It is majorly focused on business needs enabling users to repeat the tasks and automate them between different applications. For example, between gmail and mail gun, hot mail and mail chimp, etc.

Zapier is an enormous time saver with handy integrations just like Connect Your Apps and Automate Workflows. Zapier moves information between your web applications automatically so that you can focus on your most important work.

 

Zapier Apps


How to integrate apps in Zapier?

Zapier consists 101 apps, which we can integrate or connect to each other for repeated task automation/ transfer of information.

integrate Zapier apps

 

Note: Every task you automate is called as zap.

Now select the apps that you want to automate. Here, I am trying to automate tasks between Gmail and Google tasks. I’ve just selected both the apps and Zapier suggests me what are the workflows available for automation.

Zapier workflows

 

Select the desired integration

Zapier API

 

Click on “Use this Zap”

Zapier Apps

 

Click on “Use this Zap”

Now, Zapier will load the workflow details and the actual integration between applications will start.

Zapier Integrations

 

Just select the option “Email Matching search” and click on continue

Zapier

 

Select the Gmail Account to Authorise and Test the account (You can add multiple accounts also).

Click on “Save +Continue”

Zapier Apps

 

Mention the subject or from address or label that you prefer while filtering emails and creating tasks.

For example: from:amy OR from:david or subject:dinner label:my-family
Click on “Continue”

Zapier API

Cross-check the details and click onFetch and Continue

Zapier Automate Workflows

 

Click on “Continue” and complete the Gmail integration part.

Google Tasks Integration:

Zapier API

 

Select Create Task and click on “Continue”

Zapier Workflow Automation

 

Add your Google account (it can be the same Google account or different)

Click on “Save + Continue”

Zapier Integrations

 

Arrange the tasks based on your subject, content, and label body. This was the real tricky part of organizing your tasks. You need to identify the pattern of your emails and set accordingly.

Zapier Apps

 

“Click on Continue”

Zapier Workflows

 

Finalize task details. Click on “Create & Continue” or “Skip test & continue”

Note: Sometimes it fails throwing 400 error. Just try again with a proper request.

Zapier premium apps

 

Click on “Continue”

You’re done with the Zapier…

Zapier Apps

 

Navigate to Dashboard: You will see your Zap there. Turn on or off based on your requirement.

 

Now, it’s time for testing your zap!

Send a mail with the similar template that you have set as a key in your zap.

Zapier Workflows

 

Now open your target mail id and check whether you have received the mail.

Zapier Automated Workflows

 

Important: For free account, there are some limitations.

Zapier takes about 5 min to add the content to Google tasks. Wait for 5 min and open Google tasks to check it.

Zapier Apps

 

 

Here we go. Zapier added the mail to Google tasks.

In the same way, we can integrate many applications and design workflows. Zapier has free and premium plans enabled with specific features. So, choose a plan that best suits your business needs.