Сергей Калинец "Стероиды для Дотнетчика"
TRANSCRIPT
![Page 1: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/1.jpg)
Стероиды для ДотнетчикаСергей Калинец @skalinetsRails Reactor
![Page 2: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/2.jpg)
About Me16 years in the business
In .NET since 2005
Love to code
Software Architect @ Rails Reactor
@skalinets 2
![Page 3: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/3.jpg)
@skalinets 3
![Page 4: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/4.jpg)
@skalinets 4
![Page 5: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/5.jpg)
@skalinets 5
Developer ShouldSpend more time coding
Spend less time for other stuff
Get the most fun while coding
![Page 6: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/6.jpg)
@skalinets 6http://blog.programming-school.jp/
![Page 7: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/7.jpg)
@skalinets 7
IRL• Non technical sh*t (meetings etc.)• Deployment• Debugging• Troubleshooting• Environment Setup
![Page 8: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/8.jpg)
@skalinets 8
Everything should be no-brainer• Continuous Integration
• Continuous Delivery
• Continuous Deployment
• Continuous Development
![Page 9: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/9.jpg)
@skalinets 9
![Page 10: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/10.jpg)
@skalinets 10
Main Ideas• Iterative process
• Start with infrastructure and delivery process (Iteration 0)
![Page 11: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/11.jpg)
@skalinets 11
Iteration 0 (Walking Skeleton)• Build• Run Unit Tests• Prepare Deployment Package• Deploy to Dev• Run Acceptance Tests• Deploy to QA
![Page 12: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/12.jpg)
@skalinets 12
![Page 13: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/13.jpg)
@skalinets 13
Build: Fake (F# Make)• If you ever wanted to use F#
![Page 14: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/14.jpg)
@skalinets 14
![Page 15: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/15.jpg)
@skalinets 15
Delivery Pipeline ToolsVCS: git
CI: TeamCity
Deployment: Octopus
Versioning: gitversion
![Page 16: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/16.jpg)
@skalinets 16
Feedback Cycle
![Page 17: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/17.jpg)
@skalinets 17
1 2 3 4 5 6 7
40
34 36
3026 28 26
0
2
4
6
8
10 12
04
04 6
2 2
Bugs Regression Features
![Page 18: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/18.jpg)
@skalinets 18
Levels of Testing• Unit• Integration• Acceptance• Manual (Exploratory)
![Page 19: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/19.jpg)
@skalinets 19
Acceptance Tests• Test system or application from end to end• In most cases interact with UI• If not possible – test closest to UI (API)
![Page 20: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/20.jpg)
@skalinets 20
Acceptance Tests: Canopy• Human friendly DSL for web testing• Wraps WebDriver• Uses F#
![Page 21: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/21.jpg)
@skalinets 21
module MyTestsopen canopy
let fwdays () = // context is used to group tests context “Just some tests" // this is a test name "Demo canopy on fwdays 2017" &&& fun _ -> // open URL url "https://frameworksdays.com" // the rest might not need explanation click ".NET fwdays '17" click "Программа" click "Стероиды для Дотнетчика"
![Page 22: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/22.jpg)
@skalinets 22
![Page 23: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/23.jpg)
@skalinets 23
And finally… coding
![Page 24: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/24.jpg)
@skalinets 24https://xkcd.com/303/
![Page 25: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/25.jpg)
@skalinets 25
![Page 26: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/26.jpg)
@skalinets 26
Unit Tests
![Page 27: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/27.jpg)
@skalinets 27
![Page 28: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/28.jpg)
@skalinets 28
![Page 29: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/29.jpg)
@skalinets 29
Mock, stub, fake, spy, test double? Strict or loose?
Nah, just substitute for the type you need!
From http://nsubstitute.github.io/
![Page 30: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/30.jpg)
@skalinets 30
Demo Scenario
![Page 31: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/31.jpg)
@skalinets 31
• When adding new post to the blog
• It should be saved in database
Demo Scenario
![Page 32: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/32.jpg)
@skalinets 32
![Page 33: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/33.jpg)
@skalinets 33
![Page 34: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/34.jpg)
@skalinets 34
![Page 35: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/35.jpg)
@skalinets 35
![Page 36: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/36.jpg)
@skalinets 36
![Page 37: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/37.jpg)
@skalinets 37
![Page 38: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/38.jpg)
@skalinets 38
![Page 39: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/39.jpg)
@skalinets 39
![Page 40: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/40.jpg)
@skalinets 40
![Page 41: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/41.jpg)
@skalinets 41
• http://bit.ly/dotnet-steroids• http://fsharp.github.io/FAKE/• http://nsubstitute.github.io/• https://github.com/AutoFixture/AutoFixture• http://approvaltests.com/• https://lefthandedgoat.github.io/canopy/• https://xunit.github.io/• http://fluentassertions.com/
links
![Page 42: Сергей Калинец "Стероиды для Дотнетчика"](https://reader036.vdocument.in/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef7/html5/thumbnails/42.jpg)
@skalinets 42
Thankshttps://skalinets.github.io/
https://www.facebook.com/serhiy.kalinets
https://twitter.com/skalinets