Introductie
Goedemiddag, inwoners van Habr. Onlangs heb ik een testopdracht opgelost voor de vacature van QA Lead bij een fintechbedrijf. De eerste taak, het maken van een testplan met een complete checklist en voorbeelden van testgevallen voor het controleren van een elektrische waterkoker, is triviaal opgelost:
Het is moeilijk om een beter testplan te bedenken met een complete checklist.
Maar het tweede deel bleek een vraag te zijn: “Zijn er problemen die alle testers gemeen hebben en die hen ervan weerhouden efficiënter te werken?”
Het eerste wat in me opkwam, was om alle min of meer opvallende problemen die ik tijdens het testen tegenkwam op te sommen, de kleine dingen eruit te pikken en de rest te generaliseren. Maar ik realiseerde me al snel dat de inductieve methode een vraag zou beantwoorden die niet van toepassing is op ‘alle’ testers, maar in het beste geval alleen op ‘de meeste’ testers. Ik besloot het dus vanuit een andere invalshoek te benaderen, namelijk deductief, en dit is wat er gebeurde.
definiëren
Het eerste wat ik meestal doe als ik een nieuw probleem oplos, is proberen te begrijpen waar het over gaat. Om dit te doen, moet je de betekenis begrijpen van de woorden waarin het probleem wordt gesteld. De belangrijkste woorden om te begrijpen zijn:
- проблема
- tester
- tester baan
- tester werk efficiëntie
Laten we Wikipedia en ons gezond verstand raadplegen:
(Oudgrieks: πρόβλημα) in brede zin - een complexe theoretische of praktische vraag die studie en oplossing vereist; in de wetenschap - een tegenstrijdige situatie die zich voordoet in de vorm van tegengestelde standpunten bij het verklaren van verschijnselen, objecten en processen en die een adequate theorie vereist om deze te kunnen oplossen; In het leven wordt het probleem geformuleerd in een vorm die voor mensen begrijpelijk is: "Ik weet wat, maar ik weet niet hoe", dat wil zeggen dat het bekend is wat er moet worden verkregen, maar het is niet bekend hoe het moet worden gedaan. Komt van laat. breedtegraad probleem, uit het Grieks. πρόβλημα "naar voren gegooid, vooraan geplaatst"; van προβάλλω "naar voren gooien, voor zichzelf uitschuiven; beschuldigen".
Het is eigenlijk niet zo logisch: "probleem" = "alles wat aangepakt moet worden".
— een specialist (we zullen ze niet in typen verdelen, omdat we geïnteresseerd zijn in alle testers) die deelneemt aan het testen van een component of systeem, waarvan het resultaat van zijn activiteit is:
— een reeks activiteiten met betrekking tot testen.
(Latijn: effectivus) - de verhouding tussen het behaalde resultaat en de gebruikte middelen (: 2015).
— het gevolg van een keten (opeenvolging) van acties (resultaat) of gebeurtenissen, kwalitatief of kwantitatief uitgedrukt. Mogelijke uitkomsten zijn onder meer voordeel, nadeel, winst, verlies, waarde en overwinning.
Net als bij het ‘probleem’ is er weinig betekenis: iets dat voortkwam uit het werk.
— een kwantitatief gemeten vermogen van een persoon of personen om een activiteit uit te voeren; omstandigheden die het mogelijk maken dat het gewenste resultaat door bepaalde transformaties wordt bereikt. De tester is een persoon en volgens de theorie van vitale hulpbronnen is elke persoon de eigenaar van vier economische activa:
contant geld (inkomsten) is een hernieuwbare hulpbron;
energie (levenskracht) is een gedeeltelijk hernieuwbare hulpbron;
tijd is een vaste en fundamenteel niet-hernieuwbare hulpbron;
Kennis (informatie) is een hernieuwbare hulpbron, het is een onderdeel van het menselijk kapitaal dat zowel kan groeien als vernietigd kan worden..
Ik wil erop wijzen dat de definitie van efficiëntie in ons geval niet helemaal correct is. Want hoe meer kennis we gebruiken, hoe lager de efficiëntie wordt. Daarom zou ik efficiëntie opnieuw definiëren als ‘de verhouding tussen de behaalde resultaten en de bestede middelen’. Dan klopt alles: kennis wordt niet verbruikt tijdens het werk, maar het verlaagt de kosten van de enige fundamenteel niet-hernieuwbare hulpbron van de tester: zijn tijd.
beslissing
Laten we eens kijken naar de algemene problemen van testers die de efficiëntie van hun werk belemmeren.
De belangrijkste hulpbron die aan het werk van een tester wordt besteed, is zijn tijd (de rest kan op de een of andere manier worden ingezet), en om te kunnen spreken van een correcte berekening van de efficiëntie, moet het resultaat ook op tijd worden ingezet.
Om dit te doen, moet je een systeem overwegen waarvan de tester met zijn werk de levensvatbaarheid verzekert. Zo'n systeem is een project, waarbij een tester deel uitmaakt van het team. De levenscyclus van een project kan grofweg worden weergegeven met het volgende algoritme:
- Werken met vereisten
- Vorming van technische specificaties
- ontwerp
- Testen
- Vrijgeven in productie
- Ondersteuning (ga naar p.1)
In dit geval kan het hele project recursief worden opgedeeld in subprojecten (functies), met dezelfde levenscyclus.
Vanuit projectperspectief gezien geldt: hoe minder tijd er aan wordt besteed, hoe efficiënter de uitvoering zal zijn.
Hiermee komen we tot de definitie van de maximaal mogelijke efficiëntie van een tester vanuit het oogpunt van het project. Dit is een status van het project waarin de tijd voor het testen nul is. En het gemeenschappelijke probleem voor alle testers is dat ze deze tijd niet kunnen halen.
Hoe kunnen we hiermee omgaan?
De conclusies zijn overduidelijk en worden al lang door velen gebruikt:
- Ontwikkeling en testen moeten vrijwel gelijktijdig starten en eindigen (dit wordt meestal gedaan door de ). De ideale optie is wanneer alle functionaliteit die wordt ontwikkeld al is gedekt door geautomatiseerde tests tegen de tijd dat het klaar is, georganiseerd in regressietests (en, indien mogelijk, pre-committests) met behulp van een soort .
- Hoe meer functies een project heeft (hoe complexer het is), hoe meer tijd u moet besteden aan het controleren of de nieuwe functionaliteit de oude niet verstoort. Hoe complexer het project, hoe meer automatisering er nodig is. .
- Elke keer dat we een bug in productie nemen en een gebruiker deze ontdekt, moeten we extra tijd besteden aan het doorlopen van de levenscyclus van het project, te beginnen bij stap 1 (Werken met vereisten, in dit geval gebruikers). Omdat de redenen waarom een bug niet wordt gevonden, doorgaans onbekend zijn, rest ons slechts één optimalisatiepad: elke bug die door gebruikers wordt gevonden, moet worden opgenomen in een regressietest om ervoor te zorgen dat deze niet opnieuw voorkomt.
Bron: www.habr.com
