Innledning
God dag, Habr-borgere. Jeg jobbet nylig med en testeroppgave for en stilling som QA Lead hos et fintech-selskap. Den fÞrste oppgaven, Ä lage en testplan med en fullstendig sjekkliste og eksempler pÄ testscenarioer for Ä teste en elektrisk vannkoker, ble lÞst trivielt:
Det er vanskelig Ă„ tenke ut en bedre testplan med en full sjekkliste.
Men den andre delen viste seg Ä vÊre et spÞrsmÄl: "Er det noen problemer som er felles for alle testere og hindrer dem i Ä jobbe mer effektivt?".
Det fÞrste som kom til meg: Ä liste opp alle mer eller mindre merkbare problemer jeg hadde stÞtt pÄ under testing, filtrere bort smÄting og deretter generalisere det som gjensto. Men jeg innsÄ raskt at induktiv metode ville svare pÄ et spÞrsmÄl som gjaldt ikke alle, men i beste fall bare flertallet av testere. Derfor bestemte jeg meg for Ä angripe det fra en annen vinkel, deduktiv, og her er hva jeg kom opp med.
Definisjoner
Det fÞrste jeg vanligvis gjÞr nÄr jeg lÞser en ny oppgave, er Ä prÞve Ä forstÄ hva den handler om, og for det mÄ jeg forstÄ meningen med ordene den er formulert med. NÞkkelordene som mÄ klargjÞres er som fÞlger:
- problem
- tester
- arbeid som tester
- effektivitet i testerarbeid
La oss se til Wikipedia og sunn fornuft:
(fra gammelgresk ÏÏÏÎČληΌα) i bred forstand â et komplisert teoretisk eller praktisk spĂžrsmĂ„l som krever studier og lĂžsninger; i vitenskapen â en motstridende situasjon som fremstĂ„r som motsatte posisjoner i forklaringen av visse fenomener, objekter, prosesser og som krever en adekvat teori for Ă„ lĂžse det; i livet formuleres problemet i en forstĂ„elig form for folk som "jeg vet hva, jeg vet ikke hvordan", det vil si at det er kjent hva som mĂ„ oppnĂ„s, men det er ukjent hvordan dette skal gjĂžres. Det stammer fra senlat. problÄma, fra gresk ÏÏÏÎČληΌα "kastet frem, stilt foran"; fra ÏÏÎżÎČÎŹÎ»Î»Ï "kaste frem, stille foran seg; anklage".
Det er ikke mye mening, i hovedsak er "problem" = "hva som helst som mÄ forstÄs".
â en spesialist (vi skal ikke dele dem opp i typer, for vi er interessert i alle testere) som deltar i testing av komponenter eller systemer, hvor resultatet av aktiviteten er:
â en kombinasjon av aktiviteter relatert til testing.
(lat. effectivus) â forholdet mellom oppnĂ„dd resultat og brukte ressurser (:2015).
â konsekvensen av en rekke handlinger (sluttresultat) eller hendelser, uttrykt kvalitativt eller kvantitativt. Mulige resultater inkluderer fordeler, ulemper, gevinster, tap, verdi og seier.
Som med "problemet" gir det lite mening: noe som oppstod som fĂžlge av arbeidet.
â mĂ„lbar kapasitet til Ă„ utfĂžre en aktivitet av en eller flere personer; forhold som gjĂžr det mulig Ă„ oppnĂ„ Ăžnsket resultat gjennom bestemte transformasjoner. Testeren er en person, og i henhold til teorien om vitale ressurser er hver person utstyrt med fire Ăžkonomiske aktiva:
penger (inntekt) â en fornybar ressurs;
energi (livskraft) â en delvis fornybar ressurs;
tid â en fast ressurs og prinsipielt ikke-fornybar;
kunnskap (informasjon) â en fornybar ressurs, en del av menneskelig kapital som bĂ„de kan vokse og forringes..
Jeg vil pĂ„peke at definisjonen av effektivitet i vĂ„rt tilfelle ikke er helt korrekt, for jo mer kunnskap vi bruker, desto lavere blir effektiviteten. Derfor ville jeg redefinere effektivitet som "forholdet mellom oppnĂ„dd resultat og brukte ressurser". Da er alt korrekt: kunnskap brukes ikke opp i arbeidet, men reduserer utgiftene til den eneste prinsipielt ikke-fornybare ressursen til testeren â hans tid.
Solution
SĂ„, vi sĂžker etter globale problemer hos testere som reduserer effektiviteten i arbeidet deres.
Den mest betydningsfulle ressursen som brukes i testerens arbeid er tiden hans (andre kan pÄ en eller annen mÄte relateres til den), og for at vi skal kunne snakke om en korrekt beregning av effektivitet, mÄ resultatet ogsÄ relateres til tid.
La oss vurdere et system hvis levedyktighet sikres av testerens arbeid. Et slikt system er et prosjekt som inkluderer en tester i teamet. Livssyklusen til prosjektet kan grovt sett anses som fĂžlgende algoritme:
- Arbeid med krav
- Utforming av teknisk spesifikasjon
- Utvikling
- Testing
- Utgivelse i produksjon
- StÞtte (gÄ til p.1)
Hele prosjektet kan ogsÄ rekursivt deles opp i delprosjekter (funksjoner) med samme livssyklus.
Fra prosjektets perspektiv er effektiviteten av implementeringen desto hÞyere jo mindre tid som brukes pÄ det.
Dermed kommer vi til definisjonen av maksimal mulig effektivitet for testeren sett fra prosjektets perspektiv â det er en tilstand av prosjektet der tiden brukt pĂ„ testing er lik null. Et generelt problem for alle testere er umuligheten av Ă„ oppnĂ„ denne tiden.
Hva skal vi gjĂžre med dette?
Konklusjonene er Äpenbare og har lenge vÊrt brukt av mange:
- Utvikling og testing bÞr starte og avsluttes praktisk talt samtidig (dette hÄndteres vanligvis av avdelingen ). Det ideelle alternativet er nÄr all funksjonalitet som utvikles er dekket av autotester pÄ tidspunktet for ferdigstillelse, organisert i regresjonstesting (og i mulig grad pre-commit testing) ved hjelp av en eller annen .
- Jo fler funksjoner i prosjektet (jo mer komplisert det er), desto mer tid mÄ brukes pÄ Ä sjekke at den nye funksjonaliteten ikke Þdela den gamle. Herfra fÞlger at jo mer komplekst prosjektet er, jo mer automatisering kreves for .
- Hver gang vi overser en feil i produksjon, og brukeren oppdager den, mĂ„ vi bruke ekstra tid pĂ„ Ă„ gĂ„ gjennom prosjektets livssyklus fra punkt 1 (Arbeid med krav, i dette tilfellet brukernes krav). Siden Ă„rsakene til Ă„ overse feilen generelt er ukjente, har vi bare Ă©n vei for optimalisering â hver feil funnet av brukerne mĂ„ inkluderes i regresjonstesting for Ă„ vĂŠre sikker pĂ„ at den ikke dukker opp igjen.
Kilde: habr.com
