Posts

Showing posts with the label DevOps

DevOps FAQ

Image
What is DevOps? "DevOps is the combination of cultural philosophies, practices, and tools that increase an organization’s ability to deliver applications and services at high velocity. This speed enables organizations to better serve their customers and compete more effectively in the market. DevOps moves the focus from development to delivery—a subtle but important distinction." What is DevOps? In a simpler term, DevOps is a ‘Soch’ (a philosophy) which encourages frequent feedbacks from customers and accordingly make changes to plan, design or deliverables. It discourages HiPPOs (Highest Paid Person’s Opinion) culture in the company. For frequent feedbacks, release should be available to customers frequently in the production environment. This implies, goal of DevOps is to minimize time elapsed from ‘accepta

Testing in Production (TiP) Approaches and Risks

Image
What & Why of TiP "Testing in production (TiP) is a set of software testing methodologies that utilizes real users and production environments in a way that both leverages the diversity of production, while mitigating risks to end users. By leveraging the diversity of production we are able to exercise code paths and use cases that we were unable to achieve in our test lab, or did not anticipate in our test planning" A to Z Testing in Production: TiP Methodologies, Techniques, and Examples "In today’s world, testing in production is not only important, but also critical to ensure complex applications work as we expect them to. Particularly with the move to devops and continuous delivery, testing in production has become a core part of testing software" An Introduction to Testing in Production TiP Approaches TiP is a growing

Where is Manual Testing in Continuous Deployment?

Image
Transformation from Waterfall to Agile methodology is almost over. Most of the companies are bracing Agile methodology for their release management. Some have perfected and others are catching up. Few have moved forward and took Agile to the next steps following approach of Continuous Delivery / Continuous Deployment. All these changes are suggesting a clear pattern where end users expectations are being valued and served quickly with quality delivery. Days might not be very far, when users can track delivery of their favorite features or changes similar to items being tracked via FedEx (or any other courier service) :). Does it suggest that there won’t be any place for manual testing in future? In this blog, we will try to explore this answer. Before we delve into details, it important to understand the difference between Continuous Delivery & Continuous Deployment. In Continuous Delivery, decision of releasing to production is manual and release can be delaye

How QA can benefit when application is deployed using Dockers / Containers?

Image
What is Docker Container? "A container image is a lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it: code, runtime, system tools, system libraries, settings. Available for both Linux and Windows based apps, containerized software will always run the same, regardless of the environment." What is Container? What is the difference between a Virtual Machine and a Container? "VMs and Containers differ on quite a few dimensions, but primarily because containers provide a way to virtualize an OS in order for multiple workloads to run on a single OS instance, whereas with VMs, the hardware is being virtualized to run multiple OS instances. Containers’ speed, agility and portability make them yet another tool to help streamline software development." Docker containers vs. virtual machines: What’s the difference? Hidden benefits of Docker / Container for QA Quite a few companies started de

A Brief on DevOps

Image
"The most powerful tool we have as developers is automation." – Scott Hanselman In a simpler term, DevOps is a ‘Soch’ (a philosophy) which encourages frequent feedbacks from customers and accordingly make changes to plan, design or deliverables. It discourages HiPPOs (Highest Paid Person’s Opinion) culture in the company. For frequent feedbacks, release should be available to customers frequently in the production environment. This implies, goal of DevOps is to minimize time elapsed from ‘acceptance of change request’ to ‘availability of quality code to customers’. Companies can achieve nirvana in DevOps by automating everything in their delivery process. But DevOps is not all about automation, some companies can minimize the deployment time by just changing the culture (e.g. removing red tapes during handover of work to different teams, a concept of Go-NoGo manual approval). What is DevOps? DevOps is the combination of cultu

Integrating Automated Testing into DevOps

DevOps is neither a tool nor a methodology.  It is a philosophy for how people in the software development supply chain interact.  DevOps practices include processes and tools that streamline software delivery by continuously improving feedback from production development and automating delivery activities. Tools required for streamlining the delivery Tools to automate and manage builds Tools to automate testing and results reporting Tools to provision environments (physical, virtual, private and cloud) Tools to orchestrate continuous delivery of applications Common Tools Source Control (Git, Subversion, CVS etc.) Build Automation (Ant, Anthill, Maven, Make etc.) CI Tools (Jenkins, CruiseControl, Bamboo, TeamCity etc.) Test Tools – Static Analysis Java Stack (Checkstyle, PMD, FindBugs, JDepend etc.) .NET Stack (Stylecop, SourceMonitor, CloneDetective, NDepend etc.) Ruby Stack (rubocop, Rails best practices, Cane, Reek etc.) Test Tools – Unit Tests (JUnit, TestNG, NUnit

Build Automation - Tools for Improving Engineering Process

Build Tools Build automation involves scripting or automating the process of compiling computer source code into binary code.   These tools are particularly useful for continuous integration (CI) builds where frequent calls to the compile process are required and incremental build processing is needed. Core activities involved in build automation: Compiling source code into binary code Packaging of binary code Running of tests Deployment of binary code to test environments / production environment Creation of documents or release notes Advantages: Accelerate compile and link processing Eliminate redundant tasks Have history of build and releases in order to investigate issues Features of build tools that need to be considered before picking it: Frequent / Scheduled Builds Support for Source Code Management system Incremental Build Processing Reporting on build’s status Generation of release notes and other documentations Some Popular Ope

Continuous Integration (CI) - Tools for Improving Engineering Process

CI is one of the modern software development practices for applying quality controls in small pieces.  CI involves automatically building and testing an application at frequent intervals on a dedicated integration server.  Developers regularly commit small updates and are notified rapidly if their changes cause the build to fail. Core activities involved in CI: Maintaining a code repository Committing the code to the baseline everyday Automating the build process Deploying the build to test environment Making the build self-testing Reporting the build status to the team Advantages: Reduces the risk of integration issues appearing late in the project Improve communication between team members Reduce the time needed to prepare a release Most fundamental feature of CI tool is the automatic build cycle.  The CI tool, either at a scheduled time or whenever any changes are detected in the source code repository, fetches the source code latest version