---
url: 'https://metadrop.net/en/methodology/quality-assurance'
title: 'Drupal Quality Assurance | CI/CD & Testing'
author:
  name: Root
  url: 'https://metadrop.net/es/sobre/metadrop'
date: '2019-05-26T12:25:20+00:00'
updated: '2026-06-10T12:53:16+00:00'
type: article
summary: 'Metadrop enforces code quality via CI/CD pipelines, automated testing (Behat, PHPUnit), static analysis, and peer review on every Drupal project.'
published: true
og:
  determiner: Automatic
  site_name: Metadrop
  street_address: 'Calle Manuel Luna, 12, 3 Dcha'
  locality: Madrid
  region: Madrid
  postal_code: '28020'
  country_name: España
  email: hola@metadrop.net
  phone_number: '910053180'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      '@type': Organization
      '@id': 'https://metadrop.net/#organization'
      url: 'https://metadrop.net/'
      name: Metadrop
      sameAs:
        - 'https://www.drupal.org/metadrop'
        - 'https://twitter.com/metadrop'
        - 'https://asociaciondrupal.es/partner/metadrop'
        - 'https://www.linkedin.com/company/metadrop'
      logo:
        '@type': ImageObject
        url: 'https://metadrop.net/themes/custom/mdrop_radix/logo-metadrop-500-500.jpg'
        width: '500'
        height: '500'
    -
      '@type': ItemPage
      '@id': 'https://metadrop.net/en/methodology/quality-assurance'
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Home
            item: 'https://metadrop.net/en'
      publisher:
        '@type': Organization
        '@id': 'https://metadrop.net/#organization'
---
# Quality Assurance

 



   



  

 

 

 

## GIT version control



We use GIT as a version control system. We work with separate branches that allow us to have control over what is deployed in different environments and to be able to deploy it quickly in production.



 

 



 

 

 

 

## Unified development environments with all necessary tools



We unify our development environments with Docker and integrate all the necessary tools for local development.



 

 



 

 

 

 

## Test driven development



We develop **TDD / BDD** tests of what is expected of the required functionality. In this way we automate the acceptance criteria, reducing ambiguities and resolving and anticipating the difficulties that may arise initially in the coding phase and later in the testing phase.



 

 



## Code review (Pair review)

Our code is always **reviewed by another team membe**r before being integrated with the main development branch through **Merge Request**. This improves the quality of each delivery and reduces eventual human errors.

 

 





 

### Jenkins

We use Jenkins as a continuous integration tool to **automate** the different processes and calculate quality metrics, obtain a professional deliverable and avoid regressions by means of code analysis and test execution. Each **branch** of code is **analyzed** and its result is published and **notified** to the team.



 

 

 

 

 

## Static code analysis



We integrate **objective tools** that measure the status of the developed code (modules, libraries, themes) and provide information to know its quality. This way we can **detect and prevent problems**: duplicated functions, overly complex methods, low-quality code, and non-standard coding style.

These tests are automated in the continuous integration system (Jenkins) and are **executed in each new version of the software** allowing to have a history of its **evolution**.



 

 



 

 

 

 

## Visual Regression Testing



Integrated BackstopJS as a visual regression tool: compares different browser resolutions with the previous version to detect differences and possible regressions and unwanted effects on other parts of the system.



 

 



Metadrop

 

## We are committed to Open Source



 

- [Drupal - Aljibe (DDEV)](https://github.com/Metadrop/ddev-aljibe/)
- [BDD - Behat Contexts](https://github.com/Metadrop/behat-contexts)
- [BDD - Nigthwatch API Steps](https://github.com/Metadrop/nightwatch-api-steps)
- [Static Analysis - Grumphp Drupal Check](https://github.com/Metadrop/grumphp-drupal-check)
- [Dev Tool - Drupal Scripthor](https://github.com/Metadrop/scripthor)
 
 

 

 

 

## Our Methodology



How Metadrop runs complex Drupal projects: Scrum ceremonies, Kanban boards, quality assurance, and full deliverables at project close.



 

- [**Kanban board**](https://metadrop.net/en/methodology/agile-kanban-board "How Metadrop structures Kanban workflows for Drupal development: task states, WIP limits, and quality checkpoints.") How Metadrop structures Kanban workflows for Drupal development: task states, WIP limits, and quality checkpoints.
- [**Tools**](https://metadrop.net/en/about/methodology/tools "The agile and DevOps tools Metadrop uses: version control, CI/CD, communication, and project management platforms across all projects.") The agile and DevOps tools Metadrop uses: version control, CI/CD, communication, and project management platforms across all projects.
- [**Deliverables**](https://metadrop.net/en/about/methodology/deliverables "Full handover of source code, documentation, credentials, and accesses so your team is completely self-sufficient at project completion.") Full handover of source code, documentation, credentials, and accesses so your team is completely self-sufficient at project completion.
- [**Agile Scrum meetings**](https://metadrop.net/en/methodology/agile-scrum-meetings "How Metadrop implements Scrum ceremonies — stand-ups, sprint planning, reviews, and retrospectives — within our agile Drupal projects.") How Metadrop implements Scrum ceremonies — stand-ups, sprint planning, reviews, and retrospectives — within our agile Drupal projects.