CI/CD/CT at Enterprise Scale – Categorize Your Tests

Photo by: moren hsu

When it comes to enterprise software, you usually have to deal with huge number of tests (I hope that’s the case for you!). One of the biggest challenges in having an efficient CI/CD/CT pipeline is to have a small set of tests to run to make the integration and deployment faster. One of the techniques to reduce the testing time is to limit the testing scope. I previously post a blog about Test Impact Analysis here which is one of the most reliable ways to trim the testing scope but also by categorizing your tests you can achieve small test surface even in development environment. Remember if you expect developers to run ten thousand tests before committing the code that will never happen!

Using TestCategory lets you create a group of tests using any arbitrary system you want (i.e. Domain, Scenarios etc.). This gives you an opportunity to create and run related tests together to facilitate the testing in CI/CD/CT pipeline. The only thing you need to do is to annotate your tests with TestCategory attribute.

public void GetAllAircraft()

You can even assign a test to multiple category. If you want to filter your tests in Visual Studio by category you need to switch to list view in Test Explorer and then filter tests using Group By toggle.

Seeding data in EF Core 2.1

Microsoft announced Entity Framework Core 2.1 RC in Build 2018. Data Seeding probably is one of the most useful features of Entity Framework and it got a nice upgrade on this version. Unlike Entity Framework 6.0, Seeding data is associated with an entity type as part of the model configuration which means Entity Framework can now track added, updated or removed data from one change to another change and generates the corresponding migration script for the changes.

Seeding data in Entity Framework Core now is as easy as:

modelBuilder.Entity<Book>().HasData(new Book {BookId = 1, Title = "Don't read this book"});

Remote debugging websites on Azure App Service (Web App)

Sometimes you need to debug your application in cloud environment (well, I don’t like to say production environment !) to reproduce a bug or test your application against cloud environment data. Azure Web App remote debugging is painless and sweat. The only thing you need is just to attach debugger to your application. To attach debugger, right click on the Web App name and choose Attach debugger from context menu or actions bar:

Attach debugger to Azure Web App
Choose Attach Debugger from context menu or actions bar

Things to remember:

  • When you attach debugger and pause for breakpoint, you stop all requests to your application. Therefore, you should not debug your application in Production environment. Staging environment is one of the best remote debugger friends although.
  • If debugging takes time and app is stopped for a few minutes, Azure treats your website worker process as unresponsive and will try to restart it; Therefore, you need to be quick.