The Basics of Agile Software Testing
Agile software testing is a widely used term in IT circles. But what does the concept entail? In this article, you will learn the key essentials!
Introduction
Agilis, agile, agilis módszertan: sokszor halljuk ezeket a kifejezéseket a mindennapokban. De mit jelentenek pontosan? Valójában nem egy módszertanról van szó, helyesebb lenne agilis módszertanokról beszélni. 2001. februárja óta, amikor 17 amerikai fejlesztő először megfogalmazta az Agile alapjait az agilis kiáltványban, az alapelvek figyelembevételével sok-sok módszertan fejlődött ki, és honosodott meg a gyakorlatban. Változatosságuk ellenére azonban mindegyik azonos célokat tűz ki maga elé: a lehető legmagasabb ügyfélélmény elérése, gyakori, vagy folyamatos közvetlen kommunikációval, minél hatékonyabb – lehetőleg rövid iterációkban – megvalósítva. Legyen tehát szó kanban, scrum, vagy egyéb megvalósulásáról, az agilis fejlesztés fő célja egy gyakran változtatható, piaci- és ügyféligényekre azonnal reagáló megoldás kialakítása. Ilyen módon a csapat mindig a legfontosabbnak számító feladatokkal foglalkozik.
The Concept and Benefits of Agile Software Testing
When we talk about software testing beszélünk, sok esetben az a szituáció juthat eszünkbe, hogy a fejlesztési feladatok lezárultával, mintegy következő projekt feladatként kezdetét veszi az adott alkalmazás implementációjának következő, tesztelési fázisa. Ezt tapasztalhatjuk egy vízesés módszertan szerint haladó projekt esetében. Agilis környezetben azonban azt látjuk, hogy ez a megközelítés nem működőképes. Helyesebb tehát önmagában tesztelés helyett minőségbiztosításról beszélni, ami a szoftver fejlesztéssel egy időben kezdődik. Az agilis szoftvertesztelés ezáltal a fejlesztők és a tesztelők folyamatos együttműködésén alapulva képes rugalmas és hatékony környezetet biztosítani arra, hogy a hibákat minél hamarabb kiszűrjük. Időigényes dokumentációs feladatok helyett csak a lényeget rögzítve készüljünk fel a gyakori iterációk – és ezáltal változások – által támasztott kihívásokra.
What are the principles of agile software testing?
Bár az agilis tesztelésnek köszönhetően rengeteget profitálhatunk annak bevezetésén, a megvalósítás sokszor nem könnyű, és számos nehézséggel találkozhatunk a gyakorlatban. Van azonban néhány alapelv, amelyek megértése gördülékenyebbé teszi az áttérést. A továbbiakban ezeket vesszük sorra. Fontos megjegyezni, hogy egy agilis szoftver fejlesztése során sok-sok módszertannal dolgozhatunk. A továbbiakban most a leggyakoribbat vesszük adottnak: a scrum alapján haladunk a tesztelés bemutatásakor.
Shortening feedback time
A vízesés módszertannal megvalósított projektben sokszor hónapok, vagy félévekben mérhető idő telik el a követelmények megfogalmazása, a fejlesztés valamint a tesztelés között. Nem is beszélve arról az időpontról, amikor a megrendelő először láthatja az igényére adott megoldást. Ezzel szemben az agilis tesztelés alkalmazása lehetővé teszi, hogy a visszajelzés már egy-két hetenként megtörténhessen. Ennek előnyei rögtön megmutatkoznak: minél hamarabb történik visszacsatolás, annál könnyebben tud a csapat alkalmazkodni az esetleges változásokhoz, annál hamarabb kiderül, ha nem a megfelelő irányban indultunk el.
Development and testing occur simultaneously
Mindannyian szembesülhettünk azzal a helyzettel, hogy a projekt egymást követő fázisainak esetleges időbeli csúszása mindig a projekt későbbi szakaszaiban bosszulja meg magát. Egy vártnál jobban elhúzódó fejlesztést követően a tesztelési szakaszban feltorlódnak a feladatok, ami sokszor a minőség rovására tud menni. Az egymásra épülő fázisokat eleve nehéz megvalósítani egy kéthetes iterációban, az agilis módszertan azonban más okokból is eltérő megközelítést alkalmaz. A tesztelő és a fejlesztő szorosan együttműködik már a fejlesztés kezdetétől fogva, az egységtesztektől egészen a felületi és üzleti tesztekig. Ennek köszönhetően a fejlesztési ciklus végére nem a tesztelés kezdetéig tudunk eljutni, hanem a minőségi szoftver közös leszállításáig.
The close collaboration of the testing and development teams
Láthattuk az előző szakaszban, hogy a teljes csapat egyszerre dolgozik, egy cél, az értékteremtés érdekében. De hogyan tud ez megvalósulni a gyakorlatban? Fontos, hogy a tesztelők a fejlesztési ciklus legelső, tervezési feladataitól kezdve be legyenek vonva a közös munkába. Így már a tesztesetek megtervezése is közösen, a sprint célok figyelembevételével történhet. A csapatnak napi szinten, kölcsönösen tisztában kell lennie, ki mivel dolgozik, hogy az akadályozó tényezők elhárításában a legkompetensebb szereplő tudjon azonnali segítséget nyújtani.
Simplified documentation
We often encounter the reflex in a waterfall project to document the testing phase tasks as precisely as possible, so that each phase can be reproduced even afterward. Of course, this has its advantages, but it is undeniably a time-consuming approach. From this perspective, agile testing is often criticized for neglecting documentation. However, this is not the case. According to one of the core principles of Agile, the work done is more important than detailed documentation. We document what is useful and practical, and we do so concisely. This responsibility falls on everyone working with information related to testing: be it developers or testers.
Client feedback during the development process
Az agilis szoftvertesztelés egyik fő előnye ugyanaz, mint magának a módszertannak: a megrendelő a fejlesztési folyamat lehető legkorábbi pontján, vagy akár folyamatosan jelen van. Így már a tervezési feladatokhoz közeli időpontban láthatja az ügyféligény megvalósítását. Ezáltal azonnal visszacsatolást tud adni, mielőtt túl sok erőforrást fordítanánk egy esetleges rossz elképzelésbe.
The process of agile software testing
The principles and practices of agile software testing differ from traditional testing. We examined its theoretical aspects in the previous chapter. Now, let's explore what needs to be considered in practice to successfully implement agile testing. There are essential tasks necessary for successful testing, and often, testers are best equipped with the information needed to perform these tasks most effectively during the course of their work.
- Impact analysis: forming business thinking related to the software; identifying boundary conditions, risks; architectural considerations.
- Teszttervezés: meg kell határozni, hogy milyen tesztelési szinteket alkalmazunk, és azokat hogyan valósítjuk meg. Az egység- és komponenstesztelés; a folyamati és prototípus tesztelés; az üzleti és használhatósági tesztek, valamint a nem-funkcionális követelmények ellenőrzése mind a kiadható szoftver elengedhetetlen minőségbiztosítási kritériumai. Ezekre mindenképpen tekintettel kell lennünk.
- Napi eligazítás: a tesztelő ugyanúgy része a csapatnak, mint bárki más, ezért a napi kommunikációban ő is részt vesz. Rövid, kötött idejű és tematikájú napindító eligazítással elejét vehetjük annak, hogy üresjáratok vagy blokkoló tényezők tartósan kialakuljanak.
- Feedback: It may seem trivial, but it cannot be emphasized enough – we test to find defects. Whether it's an improper implementation or a misunderstood business requirement, it needs to be rectified as soon as possible, ideally while the development team is still working on the same task as the testers.
- Verification: Before the product is ready for users to take possession, every task and documentation must be completed. Often, testers are the most familiar with the software's operation, so it is advisable to train or educate them in relation to the release for those who will support or use the software.
Frequently Asked Questions
What does agile mean?
A software development methodology that aims to deliver the highest value through short iterations, continuous customer involvement, and adaptation.
What is agile software testing?
Unlike traditional testing, agile software testing becomes part of the methodology through collaboration with developers, essential documentation, and flexible work organization.
What are the benefits of agile software testing?
The main advantage of its introduction and application is that it eliminates idle time for the testing team by working continuously with the development team, ensuring that we can release software that adds value to the customer as soon as possible.
What are the steps involved?
The steps of agile testing are impact analysis, test planning, daily stand-up meetings, feedback, and verification.
Conclusion
In the above, we have seen what exactly the agile software development methodology is, where is the place of testing within it, and what are the principles and main practical considerations of the latter. If you want to get support to implement or support one of the most effective testing methodologies, then write us via the contact form at the bottom of the page.