42
Стероиды для Дотнетчика Сергей Калинец @skalinets Rails Reactor

Сергей Калинец "Стероиды для Дотнетчика"

  • Upload
    fwdays

  • View
    140

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Сергей Калинец "Стероиды для Дотнетчика"

Стероиды для ДотнетчикаСергей Калинец @skalinetsRails Reactor

Page 2: Сергей Калинец "Стероиды для Дотнетчика"

About Me16 years in the business

In .NET since 2005

Love to code

Software Architect @ Rails Reactor

@skalinets 2

Page 3: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 3

Page 4: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 4

Page 5: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 5

Developer ShouldSpend more time coding

Spend less time for other stuff

Get the most fun while coding

Page 6: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 6http://blog.programming-school.jp/

Page 7: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 7

IRL• Non technical sh*t (meetings etc.)• Deployment• Debugging• Troubleshooting• Environment Setup

Page 8: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 8

Everything should be no-brainer• Continuous Integration

• Continuous Delivery

• Continuous Deployment

• Continuous Development

Page 9: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 9

Page 10: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 10

Main Ideas• Iterative process

• Start with infrastructure and delivery process (Iteration 0)

Page 11: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 11

Iteration 0 (Walking Skeleton)• Build• Run Unit Tests• Prepare Deployment Package• Deploy to Dev• Run Acceptance Tests• Deploy to QA

Page 12: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 12

Page 13: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 13

Build: Fake (F# Make)• If you ever wanted to use F#

Page 14: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 14

Page 15: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 15

Delivery Pipeline ToolsVCS: git

CI: TeamCity

Deployment: Octopus

Versioning: gitversion

Page 16: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 16

Feedback Cycle

Page 17: Сергей Калинец "Стероиды для Дотнетчика"

@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: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 18

Levels of Testing• Unit• Integration• Acceptance• Manual (Exploratory)

Page 19: Сергей Калинец "Стероиды для Дотнетчика"

@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: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 20

Acceptance Tests: Canopy• Human friendly DSL for web testing• Wraps WebDriver• Uses F#

Page 21: Сергей Калинец "Стероиды для Дотнетчика"

@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: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 22

Page 23: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 23

And finally… coding

Page 24: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 24https://xkcd.com/303/

Page 25: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 25

Page 26: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 26

Unit Tests

Page 27: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 27

Page 28: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 28

Page 29: Сергей Калинец "Стероиды для Дотнетчика"

@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: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 30

Demo Scenario

Page 31: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 31

• When adding new post to the blog

• It should be saved in database

Demo Scenario

Page 32: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 32

Page 33: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 33

Page 34: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 34

Page 35: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 35

Page 36: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 36

Page 37: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 37

Page 38: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 38

Page 39: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 39

Page 40: Сергей Калинец "Стероиды для Дотнетчика"

@skalinets 40