Public Sector

We've had the pleasure of working with UK and overseas central and local government departments, including Healthcare (NHS and Foundation Trusts), Defence, Education (Universities and colleges), many of the main Civil Service departments, Emergency Services; also public-owned corporations including the BBC, Bank of England, Ordnance Survey, and regulatory bodies such as Ofgem.

We are registered on Crown Commercial Service’s (CCS) Dynamic Purchasing System (RM6219 Training and Learning) and also with numerous tender portals such as Ariba, Coupa and Delta E-Sourcing.

Read more...

Graduate Training Schemes

Framework Training has a strong track record of providing a solid introduction into the working world for technical graduates across myriad industries. We provide the opportunity to learn and gain valuable hands-on experience in a supportive, friendly and sociable training environment.

Attract & retain the brightest new starters

We know it is vital for our clients to invest in the future of their talented grads; not only to provide them with high-quality, professional training essential for their roles, but to embed them within the organisation’s culture and guide them on the right path to a successful career.

After all, your new hires could well be the next leaders and their creative ideas and unique insights are invaluable to your business.

Read more ...

Learning & Development

Our unique portfolio of high-quality technical courses and training programmes are industry-respected. They’re carefully designed so that delegates can seamlessly apply what they’ve learnt back in the workplace. Our team of domain experts, trainers, and support teams know our field — and all things tech — inside out, and we work hard to keep ourselves up to speed with the latest innovations. 

We’re proud to develop and deliver innovative learning solutions that actually work and make a tangible difference to your people and your business, driving through positive lasting change. Our training courses and programmes are human-centred. Everything we do is underpinned by our commitment to continuous improvement and learning and generally making things much better.

Read more...

Corporate & Volume Pricing

Whether you are looking to book multiple places on public scheduled courses (attended remotely or in our training centres in London) or planning private courses for a team within your organisation, we will be happy to discuss preferential pricing which maximise your staff education budget.

Enquire today about:

  • Training programme pricing models  

  • Multi-course voucher schemes

Read more...

Custom Learning Paths

We understand that your team training needs don't always fit into a "one size fits all" mould, and we're very happy to explore ways in which we can tailor a bespoke learning path to fit your learning needs.

Find out about how we can customise everything from short overviews, intensive workshops, and wider training programmes that give you coverage of the most relevant topics based on what your staff need to excel in their roles.

Read more...

Reqnroll: BDD Automation for .NET

Collaborate, Specify, Automate: BDD with Reqnroll.

About the course

Effective collaboration and crystal-clear requirements are the cornerstones of building successful software. Behaviour-Driven Development (BDD) provides a powerful framework to foster shared understanding by defining system behaviour through concrete, collaborative examples. This 3-day hands-on training course is specifically designed for .NET professionals who want to master the automation of these behaviours using Reqnroll, the modern, actively maintained open-source BDD framework and successor to SpecFlow. Participants will gain the practical skills to translate business-readable specifications into robust, maintainable, and collaborative automated acceptance tests that serve as valuable living documentation.

The course begins with a reinforcement of BDD fundamentals and a deep dive into the Gherkin language, equipping participants with the ability to write clear and unambiguous feature files that accurately describe system behaviour. Participants will then transition to mastering the core techniques of automating these specifications with Reqnroll in a .NET environment, learning how to set up a Reqnroll project, link Gherkin steps to executable C# code by writing Step Definitions, and effectively work with data within scenarios using DataTables and the powerful Reqnroll.Assist helpers. A significant portion is dedicated to understanding and applying Reqnroll's Context Injection for safely and cleanly sharing state between steps, a crucial technique for building well-structured and maintainable automation frameworks.

Beyond the core automation mechanics, the course covers essential strategies for structuring and organising Reqnroll assets in larger projects and implementing common automation patterns for interacting with different application layers (such as APIs or user interfaces). Participants will learn how to manage complex data scenarios and leverage Reqnroll's data-driven features like Scenario Outline. The course concludes by demonstrating how to run Reqnroll tests using various methods, interpret the reporting capabilities, and integrate their automated BDD tests into Continuous Integration (CI) pipelines, equipping .NET teams with the comprehensive skills needed to build, maintain, and leverage a powerful suite of automated BDD tests for their applications.

Instructor-led online and in-house face-to-face options are available - as part of a wider customised training programme, or as a standalone workshop, on-site at your offices or at one of many flexible meeting spaces in the UK and around the World.

    • Explain key BDD fundamentals and write clear specifications using Gherkin syntax.
    • Set up and configure a BDD automation project using Reqnroll and its tooling (Extension, CLI).
    • Write Step Definitions in C# that effectively link Gherkin steps to executable code.
    • Work with data in scenarios using Reqnroll DataTables and helper methods (Reqnroll.Assist).
    • Manage and share state safely between steps using Reqnroll Context Injection.
    • Structure and organise Reqnroll feature files and step definitions for maintainability.
    • Implement patterns for automating interactions with different application layers (e.g., API, UI basics) within Reqnroll step definitions.
    • Manage complex data scenarios using techniques like Composite Givens and Scenario Outline.
    • Run Reqnroll tests using different test runners/CLI, interpret reports, and integrate tests into CI pipelines.
  • This 3-day hands-on training course is designed for .NET Developers, Quality Assurance (QA) professionals, and Automation Engineers who work within the .NET ecosystem and want to learn how to effectively automate Behaviour-Driven Development specifications using the Reqnroll framework. It is ideal for:

    • .NET teams that are adopting BDD or need to automate their existing Gherkin specifications.

    • .NET developers and QAs who want to gain practical skills in building robust, maintainable, and collaborative automated acceptance tests.

    • Automation engineers focusing on .NET applications who are looking to learn Reqnroll and best practices for structuring automation frameworks.

    • Anyone involved in defining and verifying requirements for .NET applications who wants to gain practical skills in BDD automation.

  • Participants should have:

    • Practical experience with software development or testing in the .NET environment (preferably using C# as the programming language).

    • Attended our intro to BDD workshop or have equivalent experience - for instance a basic understanding of Behaviour-Driven Development (BDD) principles (what BDD is, why use it, the concept of Gherkin scenarios).

    • A development environment set up for .NET development, with a supported .NET SDK installed and a suitable IDE (e.g., Visual Studio, VS Code with C# and Reqnroll extensions, JetBrains Rider).

    This course is hands-on and focuses on the automation aspects of BDD using the Reqnroll framework in .NET.

  • This BDD with Reqnroll course is available for private / custom delivery for your team - as an in-house face-to-face workshop at your location of choice, or as online instructor-led training via MS Teams (or your own preferred platform).

    Get in touch to find out how we can deliver tailored training which focuses on your project requirements and learning goals.

  • BDD Fundamentals Review

    • Quick review of Behaviour-Driven Development (BDD) principles and benefits.

    • The importance of collaboration (The Three Amigos) and shared understanding.

    • The Discovery phase: Exploring requirements using examples (Example Mapping/Specification by Example).

    • The Formulation phase: Writing good BDD scenarios using the Gherkin syntax.

    • Good and bad scenario writing patterns (The 6 BRIEF principles).

    • Separation of problem domain (Gherkin) and solution domain (automation code).

    • Hands-On Lab: Collaborative exercise on Example Mapping for a feature, writing initial Gherkin feature files.

    Gherkin Syntax Deep Dive

    • The Purpose and Structure of Gherkin Feature Files (Feature, Scenario).

    • Keywords: Given, When, Then - defining context, action, and outcome.

    • Connecting Steps: And, But.

    • Providing Context: Background.

    • Testing Multiple Examples: Scenario Outline and Examples table.

    • Organising Features: Using Tags (@tagname).

    • Writing Clear, Concise, and Unambiguous Gherkin.

    • Hands-On Lab: Writing comprehensive Gherkin Feature files and Scenarios using all key syntax elements, ensuring clarity and adherence to best practices.

    Introduction to Reqnroll

    • What is Reqnroll? Its role as the leading .NET BDD automation framework and successor to SpecFlow.

    • Installing Reqnroll NuGet packages.

    • Setting up a Reqnroll project within a .NET solution.

    • Reqnroll Tooling: Installing and using the Reqnroll Visual Studio/Rider Extension.

    • Reqnroll Tooling: Using the Reqnroll Command-Line Interface (CLI).

    • The role of generated code-behind files (.feature.cs) - how Reqnroll links Gherkin to code.

    • Basic Reqnroll project structure and file naming conventions.

    • Scenario automation workflow (the test-first thinking, outside-in development loop with Reqnroll).

    • Hands-On Lab: Setting up a new .NET project and adding Reqnroll, creating a first simple feature file and running it (demonstrating the framework looking for step definitions), exploring generated files and basic Reqnroll tooling features.

    Writing Step Definitions with Reqnroll

    • What are Step Definitions in Reqnroll? The C# code implementation of Gherkin steps.

    • Matching Gherkin steps to Step Definition methods ([Given], [When], [Then] attributes).

    • Using Regular Expressions vs. Cucumber Expressions for step matching.

    • Parameterising Steps: Extracting data from Gherkin text into Step Definition method parameters.

    • Organising Step Definition files (.cs) and classes.

    • Best practices for writing maintainable and reusable Step Definitions.

    • Hands-On Lab: Writing Step Definitions in C# for the Gherkin scenarios from previous labs, implementing the necessary code to make the steps executable, practicing step parameterisation.

    Working with Reqnroll DataTables

    • Introduction to Gherkin DataTables for structured data within scenarios.

    • Accessing DataTables in Step Definitions using the Reqnroll Table object.

    • Reqnroll.Assist Helpers: Using methods like CreateInstance<T>(), CreateSet<T>(), FillInstance<T>() to easily map DataTable data to .NET objects (POCOs).

    • Performing Table Assertions using helper methods like CompareToInstance<T>(), CompareToSet<T>().

    • Best practices for effectively using DataTables in scenarios.

    • Hands-On Lab: Updating selected scenarios to incorporate DataTables, writing Step Definitions that process and map DataTable data using Reqnroll.Assist helpers.

    Sharing State between Steps with Reqnroll

    • The challenge of safely and cleanly sharing state between independently executed Step Definitions within a scenario.

    • Comparing different state sharing options (e.g., static variables - avoid!, ScenarioContext, Context Bags).

    • Understanding the execution context and scope of Step Definitions in Reqnroll.

    • Reqnroll Context Injection:

      • How Reqnroll's built-in dependency injection mechanism works.

      • Defining and injecting custom state classes or services into Step Definition constructors.

      • Managing mutable state within injected context classes.

      • Integrating with other .NET dependency injection containers (brief overview).

    • Hands-On Lab: Refactoring Step Definitions to implement Reqnroll Context Injection for safely and cleanly sharing necessary state (e.g., created objects, test data) between steps within a scenario.

    Structuring Scenarios and Organising Reqnroll Assets

    • Finding the right structure for Feature files within the project.

    • Strategies for Organising Step Definition files and classes for maintainability and discoverability in larger projects.

    • Using Reqnroll Tags (@tagname) effectively for grouping, filtering, and categorising scenarios.

    • Excluding scenarios or features using tags (@ignore).

    • Traceability: Linking scenarios to requirements, user stories, or backlog items (using conventions or integration tools - concept).

    • Reqnroll Configuration (reqnroll.json): Overview of basic configuration options.

    • Hands-On Lab: Restructuring feature files and step definitions in the project, applying tags for filtering, practicing running subsets of scenarios using tags via the Reqnroll CLI or test runner options.

    Managing Data and Scenarios

    • Strategies for managing complex test data in scenarios and automation code.

    • Techniques for Pushing data down to the automation layer (reducing excessive data in Gherkin).

    • Composite Given steps: Creating reusable blocks of setup steps by calling other steps.

    • Implementing Field and workflow-level defaults for common scenario data.

    • Strategies for managing Baseline data and implementing test data management.

    • Reqnroll Data-Driven Scenarios (Scenario Outline): Deep dive into using Scenario Outline and the Examples table for managing data variations for the same scenario structure.

    • Hands-On Lab: Refactoring scenarios to use Composite Givens, implementing data-driven scenarios using Scenario Outline and Examples in Reqnroll, exploring strategies for test data management.

    • Module 9: Scenarios vs. Tests & The Testing Pyramid

      • Clarifying the purpose: Scenarios as illustrations of behaviour vs. Tests for comprehensive coverage.

      • When to use Data-Driven Scenarios vs. multiple distinct scenarios.

      • Understanding the Automated Testing Pyramid (Unit, Integration, Acceptance/BDD, UI).

      • Mapping Reqnroll scenarios to the Testing Pyramid – where automated BDD tests typically fit (Acceptance, Integration levels).

      • Balancing different levels of automation in a .NET project.

      • Hands-On Lab: Discussion and analysis exercise on where different types of tests fit within the testing pyramid in a .NET project context, evaluating existing test suites (conceptual).

    Structuring the Reqnroll Automation Layer

    • Separation of automation logic and testing concerns within the Reqnroll project.

    • Layering the automation solution (e.g., separating UI interaction, API calls, service layer logic).

    • Common Automation Patterns for Test Maintainability:

      • Page Object Model (POM) for UI automation (if applicable).

      • Patterns for API/Service automation clients.

      • Using the Builder pattern or Factory pattern within automation code.

    • Where to place Assertions in the automation layer (typically in Step Definitions or dedicated assertion helpers).

    • Designing for reusability, readability, and maintainability of the automation code.

    • Hands-On Lab: Restructuring automation code using a layered approach or a pattern like POM (simplified), demonstrating how to keep Step Definitions clean by delegating complex interactions to other classes/layers, integrated via Context Injection.

    Running, Reporting & CI Integration with Reqnroll

    • Running Reqnroll tests:

      • Using the Test Explorer in Visual Studio/Rider.

      • Running tests from the .NET CLI (dotnet test) with Reqnroll test runners (NUnit, xUnit, MSTest).

      • Running tests using the Reqnroll CLI for specific features or tags.

    • Understanding Reqnroll Reports: Default console output and generating different report formats (e.g., LivingDoc HTML report using Reqnroll.Plus, JUnit XML for CI).

    • Integrating Reqnroll Tests into Continuous Integration (CI) pipelines:

      • Configuring CI platforms to execute .NET test with Reqnroll test runners.

      • Examples: Setting up steps in common CI platforms used in the .NET ecosystem (Azure DevOps Pipelines, GitHub Actions, GitLab CI) to run Reqnroll tests and publish results/reports.

    • Maintaining BDD Assets (Feature files and Step Definitions) in a CI/CD environment.

    • Hands-On Lab: Running Reqnroll tests using the CLI and dotnet test, generating test reports, configuring a simple CI pipeline (simulated or using a basic online tool) to run Reqnroll tests and publish reports.

    • Reqnroll Documentation: The official and comprehensive guide for installing, configuring, writing tests, and advanced features in the Reqnroll framework. This should be your primary reference.

    • Gherkin Reference: Official documentation for the Gherkin language syntax used in feature files.

    • .NET Testing Documentation: Official Microsoft Learn documentation on testing .NET applications using command-line tools and different test runners (NUnit, xUnit, MSTest), which are used to execute Reqnroll tests.

Trusted by

BBC logo OVO Energy company logo CAPITA company logo University of Glasgow logo/crest

Public Courses Dates and Rates

Please get in touch for pricing and availability.

Related courses