Focus on the outside, testing in ASP.NET MVC

Outside in Testing of ASP.NET
MVC Applications

Actually that's a lie, but whatever – let's
just do this.
Who am I?
●

I am @robashton

●

I write code (C#,JS,Clojure)

●

I do .NET for pizza + money + love

●

I do JS for just money + love

●

I do Clojure for love.

@robashton
Who are you?
●

You use ASP.NET MVC

●

You want to test stuff

●

●

You're probably working at enterprise
company ACME1337 Ltd
You're after some “real world”
comparison

@robashton
ASSUMPTIONS
●

You know what a container is

●

You know how ASP.NET MVC works
–

●

Controllers, action filters, model binding,
etc

If I gloss over a definition, either SHOUT
AT ME or ignore it as it's probably not
important
@robashton
Let me tell you a story about
every client ever...

@robashton
“We tried to do TDD because
Uncle Bob said so”

@robashton
“We should test trivial code*”

*If you're NASA
@robashton
“We should inject all your
dependencies”

1

@robashton
We should avoid ALL THE
COUPLING*

*Can recommend avoiding coupling ­­>

@robashton
How did that go for you?

@robashton
“We had 100% test
coverage”

@robashton
“Too many tests broke on
changing things”
:(

@robashton
“We spent more time fixing
tests than writing new code”

@robashton
“Our test suite slowed down
our build too much”

@robashton
“We deleted the tests
because they got in our way”

@robashton
No really – every client ever.

@robashton
So, let me say some things...

@robashton
TDD has failed us

@robashton
TDD is not “wrong”, it's just
not always appropriate

@robashton
TDD attempted by a lone
warrior is the Worst Thing
Ever.

@robashton
But that's all okay

@robashton
So... this talk then?
●

This is not a talk about TDD

●

This is a talk about testing

●

That's it.

@robashton
Boom, explosion.

@robashton
You're starting a new project

@robashton
What is it?
●

It is the latest in the line of our
company's own line of unique blue-sky
PRM systems. (Pony Relationship
Management)

@robashton
Where to start?

@robashton
This test is the FIRST THING
you do

@robashton
It is a statement of intent.

@robashton
It's a forcing mechanism.

@robashton
Okay you can do it in C# if
you want

@robashton
Avoid cucumber and
associated foolery
●

●

●

Forced/harmful abstraction
Only useful if non-devs are writing
acceptance criteria
This is nearly never the case

@robashton
So... that test?
●

We need to run some HTTP server

●

We need some sort of browser

●

Anything else...?

@robashton
What are the most important
things about this test?
●

Speed

●

Feedback

@robashton
Right now...
●

●

XSP from the Mono project is good
enough (feel free to play with IIS
express)
PhantomJS is the greatest thing ever.
This might not be the case next month
@robashton
Don't use PhantomJS though
●

Coupling our tests to Phantom is the
worst decision we can make

●

Use WebDriver to drive Phantom

●

Selenium is dead, long live Selenium
@robashton
Testing ASP.NET with
Phantom
WebDriver
HTTP
XSP Web Server

PhantomJS

@robashton

HTTP

Tests
Means we can do this
Firefox
WebDriver
HTTP
XSP Web Server

Chrome

Phantpm

@robashton

HTT
P

Tests
Or this
Firefox
HTTP
XSP Web Server

Chrome

Phantpm

@robashton

WebDriver
HTT
P

HTT
Selenium Grid P

Tests
I write my tests in CoffeeScript

@robashton
I write my contexts in JS

@robashton
I run it all using
●

NodeJS

●

Mocha

●

Mocha-Cakes

●

Should

@robashton
Do it your way
●

It's not important

●

Use whatever

●

C# is fine, I just like JS so I use it

@robashton
A good C# stack
●

NUnit or any other test framework

●

PhantomJS or any WebDriver browser

●

Coypu or any WebDriver client

@robashton
Testing Architecture
System setup/teardown
WebDriver Client

Test code

Client Abstractions (bob)

@robashton
So let's see it in action...

@robashton
A good test
●

Doesn't use CSS selectors

●

Doesn't show implementation details

●

Doesn't have any logic in it

●

Is understandable for any casual reader

@robashton
Instead of

@robashton
Consider

@robashton
Instead of

@robashton
Consider

@robashton
Avoid duplication in your UI
tests
●

●

●

Don't use the same selector more than
once across your contexts
Consider using conventions across your
UI
Push everything into your testing model
@robashton
Avoid duplication in your UI
tests
●

Consider using Capybara from Ruby

●

Consider using Coypu from .NET

@robashton
When to drop to the next
level?
●

There are two reasons to drop down a
level

●

“Low level tests are faster”

●

“You need more feedback”

@robashton
When to drop to the next
level?
●

There are two reasons to drop down a
level

●

“Low level tests are faster”

●

“You need more fine-grained feedback”

@robashton
Inverting the test pyramid?

@robashton
“inverting the test pyramid is
not a goal in itself”

@robashton
Times have moved on
●

Focus on speed

●

Focus on reducing effort

●

Focus on increasing feedback

●

Ignore dogma at every level

●

Listen to the pain
@robashton
Avoid solutions for problems
you haven't got yet
●

●

●

Starting on the outside means you can
change all the details later
Don't make decisions about technology
until you have to
Focus on features and iteration time
@robashton
Example: Defer all the
decisions
●

Let's store some ponies

@robashton
We have a controller

@robashton
How do we store a pony?

@robashton
IHousePonies

@robashton
InMemoryStable

@robashton
Usage

@robashton
This means
●

●

●

We end up in an in-memory (fast)
system for use in tests
We can get on and develop now
We can wait until we know what we
need before choosing something

@robashton
SqlStable

@robashton
Not for the sake of it
●

●

If you're using RavenDB it's got an inmemory built in
If you're using Redis, it's fast enough

“What's it going to cost vs what we're
going to gain”
@robashton
Example: Avoid layers
●

●

We've chosen to use
RavenDB/NHibernate
We've abstracted this like we were told
to

@robashton
Thin controller – yay!

@robashton
And a thin service!

@robashton
And a thin repository!

@robashton
And a container to wire them
up

@robashton
And tests for each!
­ Controller_can_call_delete_on_the_service.cs
­ Controller_can_call_add_on_the_service.cs
­ Controller_can_call_get_on_the_service.cs
­ Controller_will_return_a_view_model_from_the_service.cs
­ Service_will_call_delete_on_the_data.cs
­ Service_will_call_add_on_the_data.cs
­ Service_will_call_get_on_the_data.cs
­ Service_will_return_a_pony.cs
­ Sevice_will_return_null_when_there_is_no_pony
­ Data_will_persist_a_pony.cs
­ Data_will_delete_a_pony.cs :(
­ etc

@robashton
Does that feel good?

@robashton
With

Saving_a_pony_will_result_in_a_pony_existing.cs
A_pony_can_be_displayed_to_our_lovely_user.cs
A_pony_can_sadly_be_deleted_oh_how_sad.cs

@robashton
What did we learn?
●

●

●

You don't need a container when you
just have one external dependency
You don't need to create interfaces and
classes all over the show
Let these things emerge if the
complexity dictates it

@robashton
Avoid writing tests for trivial
code
●

●

●

Controller actions should be trivial
Model binding should be largely
automatic
It'll make you feel good, but that's about
it
@robashton
That said...
●

Drop down to lower level tests for code
with a large number of variants

●

That's things like validation rules

●

That's things like domain logic

@robashton
Don't avoid the hard stuff
●

Filters often hide complexity

●

They need testing

●

They often aren't tested

●

They're often brittle!

@robashton
The hard stuff
●

Test-drive the code for the actual logic

●

Then bring it in to ASP.NET MVC

●

Don't mock ASP.NET MVC!!

@robashton
Example: The hard stuff

@robashton
The test

@robashton
Better to have started with
the test

@robashton
Created code to deal with it

@robashton
And used that in a filter

@robashton
That's (really) it
●

Follow your nose

●

Listen to the pain

●

Focus on the feedback loop

●

Ignore everything I've just said

@robashton
Useful things
●

PhantomJS

●

WebDriver

●

Capybara / Coypu

●

Common sense

●

Selenium (not so much)

●

NodeJS/Coffeescript/Mocha/Mocha-Cakes
@robashton
1 of 87

Recommended

The working architecture of NodeJs applications by
The working architecture of NodeJs applicationsThe working architecture of NodeJs applications
The working architecture of NodeJs applicationsViktor Turskyi
2K views40 slides
Javascript testing should be awesome by
Javascript testing should be awesomeJavascript testing should be awesome
Javascript testing should be awesomeAbderrazak BOUADMA
610 views33 slides
"The working architecture of NodeJs applications" Viktor Turskyi by
"The working architecture of NodeJs applications" Viktor Turskyi"The working architecture of NodeJs applications" Viktor Turskyi
"The working architecture of NodeJs applications" Viktor TurskyiJulia Cherniak
1K views65 slides
Unit testing Ch. 13 of Programming Ruby by
Unit testing Ch. 13 of Programming RubyUnit testing Ch. 13 of Programming Ruby
Unit testing Ch. 13 of Programming Rubylvrubygroup
584 views16 slides
JavaScript Comprehensive Overview by
JavaScript Comprehensive OverviewJavaScript Comprehensive Overview
JavaScript Comprehensive OverviewBenha University
963 views21 slides
The Async JS Saga by
The Async JS SagaThe Async JS Saga
The Async JS SagaHarshit Juneja
98 views22 slides

More Related Content

Viewers also liked

F# Eye for the C# Guy - DDD North 2013 by
F# Eye for the C# Guy - DDD North 2013F# Eye for the C# Guy - DDD North 2013
F# Eye for the C# Guy - DDD North 2013Phillip Trelford
5K views22 slides
Controller Testing: You're Doing It Wrong by
Controller Testing: You're Doing It WrongController Testing: You're Doing It Wrong
Controller Testing: You're Doing It Wrongjohnnygroundwork
1K views99 slides
Web App Mvc by
Web App MvcWeb App Mvc
Web App MvcWill Gunn
1.3K views44 slides
ASP.NET MVC Fundamental by
ASP.NET MVC FundamentalASP.NET MVC Fundamental
ASP.NET MVC Fundamentalldcphuc
4.9K views22 slides
Unit Testing in JavaScript with MVC and QUnit by
Unit Testing in JavaScript with MVC and QUnitUnit Testing in JavaScript with MVC and QUnit
Unit Testing in JavaScript with MVC and QUnitLars Thorup
4.3K views26 slides
DDD, CQRS and testing with ASP.Net MVC by
DDD, CQRS and testing with ASP.Net MVCDDD, CQRS and testing with ASP.Net MVC
DDD, CQRS and testing with ASP.Net MVCAndy Butland
7.7K views49 slides

Viewers also liked(12)

Controller Testing: You're Doing It Wrong by johnnygroundwork
Controller Testing: You're Doing It WrongController Testing: You're Doing It Wrong
Controller Testing: You're Doing It Wrong
johnnygroundwork1K views
Web App Mvc by Will Gunn
Web App MvcWeb App Mvc
Web App Mvc
Will Gunn1.3K views
ASP.NET MVC Fundamental by ldcphuc
ASP.NET MVC FundamentalASP.NET MVC Fundamental
ASP.NET MVC Fundamental
ldcphuc4.9K views
Unit Testing in JavaScript with MVC and QUnit by Lars Thorup
Unit Testing in JavaScript with MVC and QUnitUnit Testing in JavaScript with MVC and QUnit
Unit Testing in JavaScript with MVC and QUnit
Lars Thorup4.3K views
DDD, CQRS and testing with ASP.Net MVC by Andy Butland
DDD, CQRS and testing with ASP.Net MVCDDD, CQRS and testing with ASP.Net MVC
DDD, CQRS and testing with ASP.Net MVC
Andy Butland7.7K views
Laws of test automation framework by vodqancr
Laws of test automation frameworkLaws of test automation framework
Laws of test automation framework
vodqancr417 views
CQRS на практике. В поиске точки масштабирования и новых метафор by Alexander Byndyu
CQRS на практике. В поиске точки масштабирования и новых метафорCQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафор
Alexander Byndyu59.3K views
Unit and integration Testing by David Berliner
Unit and integration TestingUnit and integration Testing
Unit and integration Testing
David Berliner23.9K views
Behavior Driven Development with Cucumber by Brandon Keepers
Behavior Driven Development with CucumberBehavior Driven Development with Cucumber
Behavior Driven Development with Cucumber
Brandon Keepers28.4K views

Similar to Focus on the outside, testing in ASP.NET MVC

Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx by
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmxMoved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmxMilen Dyankov
35.8K views60 slides
Monitoring and automation by
Monitoring and automationMonitoring and automation
Monitoring and automationRicardo Bánffy
44 views17 slides
Adversarial Simulation Nickerson/Gates Wild West Hacking Fest Oct 2017 by
Adversarial Simulation Nickerson/Gates Wild West Hacking Fest Oct 2017Adversarial Simulation Nickerson/Gates Wild West Hacking Fest Oct 2017
Adversarial Simulation Nickerson/Gates Wild West Hacking Fest Oct 2017Chris Gates
3.6K views71 slides
Selenium done right by
Selenium done rightSelenium done right
Selenium done rightTal Landa
50 views26 slides
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023 by
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Steve Pember
1.9K views73 slides
Cypress Best Pratices for Test Automation by
Cypress Best Pratices for Test AutomationCypress Best Pratices for Test Automation
Cypress Best Pratices for Test AutomationKnoldus Inc.
46 views22 slides

Similar to Focus on the outside, testing in ASP.NET MVC(20)

Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx by Milen Dyankov
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmxMoved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx
Milen Dyankov35.8K views
Adversarial Simulation Nickerson/Gates Wild West Hacking Fest Oct 2017 by Chris Gates
Adversarial Simulation Nickerson/Gates Wild West Hacking Fest Oct 2017Adversarial Simulation Nickerson/Gates Wild West Hacking Fest Oct 2017
Adversarial Simulation Nickerson/Gates Wild West Hacking Fest Oct 2017
Chris Gates3.6K views
Selenium done right by Tal Landa
Selenium done rightSelenium done right
Selenium done right
Tal Landa50 views
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023 by Steve Pember
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Steve Pember1.9K views
Cypress Best Pratices for Test Automation by Knoldus Inc.
Cypress Best Pratices for Test AutomationCypress Best Pratices for Test Automation
Cypress Best Pratices for Test Automation
Knoldus Inc.46 views
Lessons Learned When Automating by Alan Richardson
Lessons Learned When AutomatingLessons Learned When Automating
Lessons Learned When Automating
Alan Richardson1.4K views
Best practices for JavaScript RIAs by Carlos Ble
Best practices for JavaScript RIAsBest practices for JavaScript RIAs
Best practices for JavaScript RIAs
Carlos Ble2.6K views
BDD with SpecFlow and Selenium by Liraz Shay
BDD with SpecFlow and SeleniumBDD with SpecFlow and Selenium
BDD with SpecFlow and Selenium
Liraz Shay1.1K views
Validating big data jobs - Spark AI Summit EU by Holden Karau
Validating big data jobs  - Spark AI Summit EUValidating big data jobs  - Spark AI Summit EU
Validating big data jobs - Spark AI Summit EU
Holden Karau2.1K views
Yet Another Continuous Integration Story by Anton Serdyuk
Yet Another Continuous Integration StoryYet Another Continuous Integration Story
Yet Another Continuous Integration Story
Anton Serdyuk3.6K views
Unit testing legacy code by Lars Thorup
Unit testing legacy codeUnit testing legacy code
Unit testing legacy code
Lars Thorup2K views
MongoDB World 2018: Tutorial - MongoDB Meets Chaos Monkey by MongoDB
MongoDB World 2018: Tutorial - MongoDB Meets Chaos MonkeyMongoDB World 2018: Tutorial - MongoDB Meets Chaos Monkey
MongoDB World 2018: Tutorial - MongoDB Meets Chaos Monkey
MongoDB329 views
Unit testing by PiXeL16
Unit testingUnit testing
Unit testing
PiXeL16545 views
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE by Gavin Pickin
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEAN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
Gavin Pickin95 views
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE - CFObjective() 2017 by Ortus Solutions, Corp
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE - CFObjective() 2017AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE - CFObjective() 2017
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE - CFObjective() 2017
An Overview of automated testing (1) by Rodrigo Lopes
An Overview of automated testing (1)An Overview of automated testing (1)
An Overview of automated testing (1)
Rodrigo Lopes222 views
Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev... by Thoughtworks
Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev...Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev...
Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev...
Thoughtworks475 views

Recently uploaded

The Role of Patterns in the Era of Large Language Models by
The Role of Patterns in the Era of Large Language ModelsThe Role of Patterns in the Era of Large Language Models
The Role of Patterns in the Era of Large Language ModelsYunyao Li
85 views65 slides
"Running students' code in isolation. The hard way", Yurii Holiuk by
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk Fwdays
36 views34 slides
The Power of Generative AI in Accelerating No Code Adoption.pdf by
The Power of Generative AI in Accelerating No Code Adoption.pdfThe Power of Generative AI in Accelerating No Code Adoption.pdf
The Power of Generative AI in Accelerating No Code Adoption.pdfSaeed Al Dhaheri
32 views18 slides
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue by
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlueElevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlueShapeBlue
222 views7 slides
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P... by
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...ShapeBlue
194 views62 slides
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue by
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueCloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueShapeBlue
138 views15 slides

Recently uploaded(20)

The Role of Patterns in the Era of Large Language Models by Yunyao Li
The Role of Patterns in the Era of Large Language ModelsThe Role of Patterns in the Era of Large Language Models
The Role of Patterns in the Era of Large Language Models
Yunyao Li85 views
"Running students' code in isolation. The hard way", Yurii Holiuk by Fwdays
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk
Fwdays36 views
The Power of Generative AI in Accelerating No Code Adoption.pdf by Saeed Al Dhaheri
The Power of Generative AI in Accelerating No Code Adoption.pdfThe Power of Generative AI in Accelerating No Code Adoption.pdf
The Power of Generative AI in Accelerating No Code Adoption.pdf
Saeed Al Dhaheri32 views
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue by ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlueElevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
ShapeBlue222 views
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P... by ShapeBlue
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...
ShapeBlue194 views
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue by ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueCloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
ShapeBlue138 views
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda... by ShapeBlue
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
ShapeBlue161 views
Future of AR - Facebook Presentation by Rob McCarty
Future of AR - Facebook PresentationFuture of AR - Facebook Presentation
Future of AR - Facebook Presentation
Rob McCarty64 views
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online by ShapeBlue
KVM Security Groups Under the Hood - Wido den Hollander - Your.OnlineKVM Security Groups Under the Hood - Wido den Hollander - Your.Online
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online
ShapeBlue221 views
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit... by ShapeBlue
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
ShapeBlue159 views
LLMs in Production: Tooling, Process, and Team Structure by Aggregage
LLMs in Production: Tooling, Process, and Team StructureLLMs in Production: Tooling, Process, and Team Structure
LLMs in Production: Tooling, Process, and Team Structure
Aggregage42 views
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And... by ShapeBlue
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...
ShapeBlue106 views
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading... by The Digital Insurer
Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading...
"Node.js Development in 2024: trends and tools", Nikita Galkin by Fwdays
"Node.js Development in 2024: trends and tools", Nikita Galkin "Node.js Development in 2024: trends and tools", Nikita Galkin
"Node.js Development in 2024: trends and tools", Nikita Galkin
Fwdays32 views
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue by ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlueVNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
ShapeBlue203 views
"Surviving highload with Node.js", Andrii Shumada by Fwdays
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
Fwdays56 views
Redefining the book supply chain: A glimpse into the future - Tech Forum 2023 by BookNet Canada
Redefining the book supply chain: A glimpse into the future - Tech Forum 2023Redefining the book supply chain: A glimpse into the future - Tech Forum 2023
Redefining the book supply chain: A glimpse into the future - Tech Forum 2023
BookNet Canada44 views
Why and How CloudStack at weSystems - Stephan Bienek - weSystems by ShapeBlue
Why and How CloudStack at weSystems - Stephan Bienek - weSystemsWhy and How CloudStack at weSystems - Stephan Bienek - weSystems
Why and How CloudStack at weSystems - Stephan Bienek - weSystems
ShapeBlue238 views
Digital Personal Data Protection (DPDP) Practical Approach For CISOs by Priyanka Aash
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOs
Priyanka Aash158 views

Focus on the outside, testing in ASP.NET MVC