Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste V3
Login / opret bruger

Forum \ Software \ Generel software
Denne tråd er over 6 måneder gammel

Er du sikker på, at du har noget relevant at tilføje?

Automatiseret test

Af Supporter jhc9817 | 17-01-2018 15:39 | 8619 visninger | 4 svar, hop til seneste
Hej Jeg udvikler noget software som jeg skal have testet - det er udviklet i C# og bruger en SQL som backend. Der skal ske det i testen at 1. Computerens dato skal sættes til en speciel dato 2. Vi skal have testet om beregninger foretage korrekt denne dato. Dette gøres ved bl.a. af måle værdier på skærmen, i en webservice samt i msSQL database. og så fortsætter vi fremad, (vi skal i 1. have mulighed for at teste alle datoer fra eksempelvis 31.12.2017 og så 10 år frem). Er der nogen som kender noget software til automatiseret test som kan håndtere dette.
--
#1
Bombebak
Ultrabruger
17-01-2018 17:29

Rapporter til Admin
Er det ikke nemmere at skrive noget Unit Test, eftersom du selv kan udvikle i C#? https://msdn.microsoft.com[...]
--
Ignorance is bliss
#2
Chr4030
Maxi Supporter
18-01-2018 06:03

Rapporter til Admin
Unittest er en god ide. Evt kan en jenkins server sættes op til at køre dem hver gang du pusher til et repository (som git). Hvis du altså bruger det.
--
#3
Djin
Super Supporter
18-01-2018 20:15

Rapporter til Admin
#0 Du skal anvende unittests. Jeg anbefaler xUnit som test-framework. Når du siger "computerens dato skal sættes", så læser jeg det som at "Jeg bruger DateTime.Now og har derfor malet mig selv op i et hjørne ift. test". Der er to fornuftige løsninger på dit problem; ingen af dem involverer at rette computerens ur. Mulighed 1: Lav et abstraktionslag til at spørge om tiden i din kode. I stedet for at sige DateTime.Now i din kode ville du i stedet have f.eks. følgende kode: public interface CustomDateTime { DateTime Now {get} } public class ActualDateTime : CustomDateTime { public DateTime Now => DateTime.Now; } public class AdjustableDateTime : CustomDateTime { private DateTime _timeToPortray public AdjustableDateTime(DateTime timeToPortray){ _timeToPortray = timeToPortray; } public DateTime Now => _timeToPortray; } I din kode benytter du en instans af CustomDateTime interfacet til at spørge om tiden. Du giver din klasse en instans af det interface i dens constructor. På den måde kan du, når du laver en instans af noget der skal testes og bruger den nuværende tid, selv bestemme om den får en "ActualDateTime" eller "AdjustableDateTime", hvor du kan angive datoen i den sidste. Mulighed 2: Brug mocking af system-DLL'er med Fakes (google it) I stedet for at lave et abstraktionslag, så benytter man en anden DLL end den, der normalt benyttes til DateTime.Now. Det betyder at man kan lave områder i sin kode (f.eks. ens unit-tests) hvor DateTime.Now kører noget kode du har angivet i stedet for den kode der normalt returnerer dato. Eksempel: using (ShimsContext.Create()){ System.Fakes.ShimDateTime.NowGet = () => new DateTime(2014, 3,10); Console.WriteLine(DateTime.Now); //Returns DateTime with value 10-03-2014 no matter the actual time. } At kunne "sætte tiden" i ens kode er essentielt når du har problemstillinger, der opfører sig forskelligt afhængig af datoen og jeg arbejder som regel altid med mulighed #1.
--
#4
jhc9817
Supporter
20-01-2018 00:35

Rapporter til Admin
Tak for jeres svar :). #3 lyder godt - kunne du være interesseret i nogle konsulent timer?
--

Opret svar til indlægget: Automatiseret test

Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.

Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.

Opret bruger | Login
NYHEDSBREV
Afstemning