Permalänk
Medlem

.NET Unit Testing

Hej på er!
Är en självlärd programmerare, mestadels WPF MVVM som skriver mest stora affärsapplikationer som utför CRUD operationer.
Har väldigt lite erfarenhet av unit testing så tänkte höra mig för lite här.
Hur mycket bör man unit testa när allt som sker mer eller mindre är bara crud mot databas / WebApi?

Permalänk
Medlem

Crud är generellt bättre och enklare att skriva integrationstester mot, dessa ger också mer värde. Använd unit tester för mindre komponenter och domänlogik.

Integrationstest,
POST anrop mot t.ex. /api/Customers bör skapa en kund med ett giltigt id. Du ska kunna göra en query mot databasen med detta id för att verifiera att kunden skapades korrekt.

Unit test,
I din POST (ovan) kontrollerar du att kunden har en giltig epost eller angivit sin adress korrekt. Detta kan du enhetstesta.

Permalänk
Medlem

Bra fråga. Men man kan göra unit-testing för att se att dina API-metoder tar in och returnerar rätt.
Dessa är ganska enkla men trevliga att ha. Glöm inte returnera bra felmeddelanden och koder om API-anrop inte fungerar som väntat.

Permalänk
Medlem

Enhetstesta logik och beteenden. Finns det en if eller else, testa det, resten kan du integreringstesta om du tror det ger vårde

Permalänk
Medlem
Skrivet av zaibuf:

Crud är generellt bättre och enklare att skriva integrationstester mot, dessa ger också mer värde. Använd unit tester för mindre komponenter och domänlogik.

Integrationstest,
POST anrop mot t.ex. /api/Customers bör skapa en kund med ett giltigt id. Du ska kunna göra en query mot databasen med detta id för att verifiera att kunden skapades korrekt.

Unit test,
I din POST (ovan) kontrollerar du att kunden har en giltig epost eller angivit sin adress korrekt. Detta kan du enhetstesta.

Tack för svaret!
Kör man ett integrationstest hela vägen från ViewModel till WebApi eller bara på WebApi:et?

Permalänk
Medlem
Skrivet av Ernesto:

Enhetstesta logik och beteenden. Finns det en if eller else, testa det, resten kan du integreringstesta om du tror det ger vårde

Ja det är så jag har fattat det med men någon typ av testning behöver jag börja göra. Integrationstester verkar det som...

Permalänk
Medlem

Det är ofta menlöst att testa implementation, du behöver fokusera på beteenden.

Att verifiera att controllern kallar på repositoryt är mer eller mindre menlöst, du kan möjligen verifiera att serialiseringen fungerar, men om du sparar undan samma data som du skickar in finns inget värde att skriva test på

Permalänk
Medlem

Tack ska ni ha för svaren!
Unit testing har jag fått en mer klar bild av vad och hur men har fortfarande inte helt klart för mig vad jag kan integration testa och hur det ska gå till... Någon av er som vill utveckla det mer? WebApi:et är relativt nytt för mig.
Tänk er gärna en WPF client ViewModel - DataService - HttpClient kör en Post mot ett ASP.NET5 WebApi som ett exempel.

Jag har tittat en del på den här tutorial:en för hur jag kan använda HttpClient:
https://code-maze.com/httpclient-with-asp-net-core-tutorial/

För WPF klienten har jag lärt mig mycket från "Building an Enterprise App with WPF" och "WPF and MVVM: Advanced Model Treatment" av Thomas Claudius Huber.

Permalänk
Avstängd

Där jag jobbar kör vi med ett antal nivåer av test:

Test type

what

who

how

when

environment

Unit test

Individual units of software

Development team

i.e. NUnit in build pipeline

when developing

Build pipeline

Component test

An isolated part of the software, i.e. a user story

Development team

Specflow test in build pipeline

In pull request to the dev branch

Build pipeline

API, integration tests

component interfaces, i.e. a user story

Development team

Specflow test in build pipeline and manually

Nightly in dev bransch, in pull requests to release and master branch

Release pipeline, simulated environment

Test System test - functional

Feature

Development team

manual tests

before handing over to test team

lab hardware or simulated environment

Automated test - functional

Feature

Release team

Automated in release pipeline

Nightly in dev bransch, in pull requests to release and master branch

simulated environment

End-to-end test and quality system test

Feature or release

Release team

Exploratory manual testing

Before delivery to customer

simulated environment and/or hardware in lab

Permalänk
Medlem

Tack allihopa!
Det här får vänta lite för min del, har för mycket annat för tillfället. Läser på lite så länge bara.
Känner ni till någon bra utbildning på området förresten? Någon eller några veckor, gärna där man får arbeta på ett eget projekt under utbildningen

Permalänk
Medlem
Skrivet av aep65:

Tack allihopa!
Det här får vänta lite för min del, har för mycket annat för tillfället. Läser på lite så länge bara.
Känner ni till någon bra utbildning på området förresten? Någon eller några veckor, gärna där man får arbeta på ett eget projekt under utbildningen

Du lär dig detta på några timmar med Youtube. Inte veckor
https://youtu.be/QBiBZ8bsfcU

Permalänk
Medlem
Skrivet av Zipparn:

Du lär dig detta på några timmar med Youtube. Inte veckor
https://youtu.be/QBiBZ8bsfcU

Jo om man tänker bara unit testing kanske. Men jag tänkte på på hela processen. Just unit testing har jag lite koll på och har en del bra exempel som jag kan kolla på dom dessutom passar in väldigt bra på mitt projekt. Men det finns ju hur mycket automatiserad testning som helst, som integration tests, acceptance test, ui test etc. Och då vad man ska använda, när man ska använda det, hur man ska använda det osv.

Permalänk
Avstängd
Skrivet av aep65:

Jo om man tänker bara unit testing kanske. Men jag tänkte på på hela processen. Just unit testing har jag lite koll på och har en del bra exempel som jag kan kolla på dom dessutom passar in väldigt bra på mitt projekt. Men det finns ju hur mycket automatiserad testning som helst, som integration tests, acceptance test, ui test etc. Och då vad man ska använda, när man ska använda det, hur man ska använda det osv.

Specflow är ganska trevligt för att köra lite mer omfattande tester. Finns inte för VS2022 än dock. Ska man bara ha ett test så gör det nog inte så stor skillnad men för att lägga till fler tester så underlättar det väldigt.

Permalänk
Medlem

Ska du testa API så rekommenderar jag verktyg i stil med Postman.

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Medlem
Skrivet av talonmas:

Ska du testa API så rekommenderar jag verktyg i stil med Postman.

Tack! Det gör jag redan men det är väl bara manuellt?

Permalänk
Medlem
Skrivet av aep65:

Tack! Det gör jag redan men det är väl bara manuellt?

Tanken är att du bygger upp testsviter som körs per automatik. Lämpligen dina regressionstest. Kan jacka in i CI/CD pipeline om du kör en sådan eller bara schemalägga på annat vis.

Kort om automatisering med Postman:
https://www.postman.com/use-cases/api-testing-automation/

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Medlem

Kan rekommendera denna bok! Hade den som kursmaterial i skolan när vi läste tester. https://www.manning.com/books/unit-testing

Permalänk
Medlem
Skrivet av talonmas:

Tanken är att du bygger upp testsviter som körs per automatik. Lämpligen dina regressionstest. Kan jacka in i CI/CD pipeline om du kör en sådan eller bara schemalägga på annat vis.

Kort om automatisering med Postman:
https://www.postman.com/use-cases/api-testing-automation/

Tack. Nytt för mig

Permalänk
Medlem
Skrivet av Housepainter:

Kan rekommendera denna bok! Hade den som kursmaterial i skolan när vi läste tester. https://www.manning.com/books/unit-testing

Tack!