Vagrant makes the QA Professional’s Life Easier

Previously on the Betica blog, we talked about Docker, a software container application used to package programs with their dependencies. In short, it makes the QA process go more smoothly, especially when migrating applications between servers dedicated to development, testing, and production. It is a fine example of the maturing concept of virtualization throughout the IT industry.

As shops try to fit more virtual environments and software containers onto a server, managing them can become a headache. Enter Vagrant. This open source management software helps you to run and configure virtual machines of all kinds, ultimately making the software development task an easier one.

Vagrant supports the Entire Software Development Process

Vagrant serves as essentially a lightweight software container — similar to Docker. Instead of encapsulating a software application, however, Vagrant packages an entire development environment. It provides a simple to use workflow easily supporting the way software gets written today.

Working with most major virtualization frameworks — KVM, VMware, AWS, and more — Vagrant belongs in the toolbox of any software development shop looking to facilitate the management and portability of development environments. Considering its status as an open source project, expect continued updates as the overall development world evolves. The application is compatible with today’s most popular operating systems — Linux, Mac OS X, and Windows.

Setting up a Vagrant virtual machine is a breeze. Simply tell the application the desired machine type, any software to be installed, and the means for accessing the VM. After a single command line entry, the new machine is installed and configured, and most importantly, the process is easily replicated on the desktop computer of every team member — software engineer or QA.

Even though Vagrant is written in Ruby, the tool is compatible with projects leveraging many other popular programming languages, including C#, Java, Python, PHP, and JavaScript. The application also provides an architecture that supports plug-ins, which means enterprising developers can add their own functionality to the software. Over Vagrant’s six-year history, many enhancements have been developed as plug-ins, which is another testament to the usefulness of the open source community.

Vagrant as a Compliment to Docker

While some feel Vagrant and Docker are competitors, essentially performing similar virtual functions, many shops leverage the two tools in a complimentary fashion. The infographic on this website clearly illustrates how to use both applications together to streamline the configuration and management of virtual machines as well as the virtual environments containing the application (in addition to its libraries and dependent components) to be coded and tested. Depending on the specific scenario, choosing one tool over the other is also warranted.

As the software development process continues to operate at an increasingly faster pace in this era of Agile and DevOps, smart shops need the tools that allow them to make enhancements and bug fixes at the speed of business. Vagrant is another application worthy of further exploration for those involved with software development and the QA process.

Keep tuned to the Betica blog for additional insights into the wide world of QA and software development.

A Device Lab helps the Mobile QA Process

Mobile QA can be a convoluted and complex process, as we’ve noted before. Mobile platforms, especially the ubiquitous Android, typically contain a multitude of devices and operating system versions. Even the relative “walled-garden” of iOS isn’t immune to this issue.

While emulators help QA professionals somewhat deal with the differences in device types and OS versions, they really aren’t a replacement for the real thing. Testing on an actual piece of hardware remains the best way to truly benchmark a mobile app’s performance. Any mobile QA shop would benefit from setting up a device lab to handle app and website testing on hardware.

With better mobile software testing in mind, let’s take a closer look at building a mobile QA device lab.

Acquiring Mobile Devices for Hardware Testing

It is important to acquire a wide array of devices for your mobile QA lab. Obviously the underlying platform plays a big role in device procurement — an iOS-only shop probably doesn’t need a host of Samsung or HTC smartphones and tablets. Also, try to leverage any analytics data to see what kinds of devices are accessing your mobile website or using your apps.

A good cross-section of screen dimensions, processors, and manufacturers (for Android) helps to ensure your team is able to test apps and websites in as many different hardware configurations as possible. Checking for overall performance on older devices is vital as well.

Use everything from eBay and other online vendors, to a local smartphone store offering used gear when sourcing devices. Trying to get as many different devices as possible while staying within a reasonable budget should be your goal.

Additionally, assume each device will be reset to factory defaults; using one common lab account for activation purposes helps make that process go smoothly.

Building the Lab Itself

Having a dedicated area for a mobile device lab is a must. Trying to accomplish significant testing on multiple devices using individual cubicles adds too much confusion and clutter. Spend enough on power strips and USB hubs to sufficiently run every device, but remember that testing mobile apps in low-power situations can be useful as well for software validation.

A cart or two for the lab helps move devices around when necessary, and consider using stands so your QA professionals don’t spend too much time hunched over while testing. You may want to contemplate setting up a separate WiFi network to keep device lab traffic separate from the rest of your office. Additionally, if lab energy consumption is an issue, timed power strips help to save on costs over time.

Finally, be sure to keep enough spare cables on hand — USB, power, etc. — since you never want a faulty cord to adversely impact the testing schedule. Soon enough, the mobile device lab will be making a positive contribution to software quality at your organization.

If you need any additional insights on creating a mobile device lab for your company, check out this detailed website and eBook on the topic authored by two engineers who work for the arts and crafts eCommerce site, Etsy.

Keep an eye on the Betica blog for future posts on this and other topics of interest to the QA world.

Docker — Another QA Tool of the Trade

We recently discussed the advantages of using the KVM open source server virtualization tool to facilitate the creation of QA environments during a software development project. Virtualization also brings a myriad of conveniences to other areas of modern IT. Docker, an even newer virtualization technology, leverages a container framework to provide other significant advantages compared to KVM and older virtualization tools.

In addition to an improved virtualization model, what does Docker bring to the table for the QA professional? Is it something your team needs to consider implementing on a trial basis? Let’s take a closer look at the details.

Docker encapsulates Applications within Software Containers

In its simplest definition, Docker allows you run applications within their own software-based container. It is a relatively new open source project that saw an initial release in March 2013. Over the past three years the tool has rapidly grown in popularity among IT professionals of all stripes.

A major difference of Docker’s container model compared to a typical VM is applications are able to share binaries and libraries as well as the underlying server operating system. This lets you encapsulate an application’s entire infrastructure in one package, making deployments of all types — including QA — an easier process. This is one of the reasons for Docker’s wide popularity in the Agile era of enterprise development; IT departments are able to accomplish more with less.

In fact, the financial industry was an early adopter of the nascent container technology, with three large banks using version 1.0 of Docker, according to company vice-president, James Turnbull, in a discussion with ZDNet. The conservative financial IT world still has COBOL apps in production, and to see it embrace Docker so quickly truly speaks to the efficacy of the technology.

A More Efficient Form of Virtualization

Docker’s container technology uses less server horsepower than standard VM virtualization. This allows companies to run four to six times as many applications on one server instance inside a container compared to using virtual machines. All container apps need to use the same operating system, though, unlike VMs which can each run its own guest OS.

The potential for significant cost savings in server hardware is immense.

Docker’s Advantages for the QA Process

The container model leveraged by Docker makes an application highly portable.  Deploying software on different servers now becomes easier, which is a boon for QA professionals needing to run an app through performance and acceptance testing. This standardization of containers also enhances interaction between the different roles of a software development team, as the Docker model is supported by many other collaboration tools like Chef or Vagrant.

QA engineers are also able to run Docker on their own local machine, which provides another mechanism for accomplishing more without having to depend on network engineers to manage their own test environments. Ultimately, Docker is a tool that fits perfectly with the new methodologies ushered in by the DevOps era. Expect its popularity in the technology world to continue to grow.

Watch for future posts on the Betica blog as we take a closer look at the ever-changing world of the QA professional.