Combinatorische Test
Feb 24, 2020
Inleiding:
tegenwoordig zijn softwaresystemen divers en complex en hebben ze vele mogelijke configuraties. Deze kwaliteiten en functies in de software systemen heeft een vraag naar software en applicaties die uniek zijn ontworpen en hebben zowel innovatieve als creatieve functies ingeluid. Daarnaast vragen klanten en gebruikers ook om exponentiële prestaties, functionaliteit, kwaliteit, schaalbaarheid, effectiviteit en meer. Om deze doelen te bereiken en te voldoen aan de eisen van de klanten en consumenten, software engineers gebruiken verschillende innovatieve technieken en methodologieën om een product te ontwikkelen, evenals het uitvoeren van strenge testen, als producten vrijgegeven met onvoldoende testen kan onherstelbare schade en verlies veroorzaken aan de klant en de gebruiker die de toepassing installeert of de software gebruikt. Bovendien kan het ook lichamelijk letsel veroorzaken, wat kan leiden tot grote economische verliezen of inbreuken op de beveiliging, evenals de kwaliteit van het dagelijks leven beïnvloeden. Software testers hebben echter vaak beperkte tijd en budget, waardoor het vaak onmogelijk is om software uitputtend te testen. Bovendien testen testers vaak intuïtief op defecten die zij verwachten, terwijl minder voorspelde defecten over het hoofd worden gezien en niet worden getest. De beste manier om een dergelijke situatie te overwinnen is het implementeren van combinatorische testen in software en toepassingen. Combinatorisch testen is een benadering die systeem setting systematisch kan onderzoeken in een beheersbaar aantal tests en door systematisch t-way interacties te behandelen. Daarom is hier een uitgebreide discussie over combinatorische testen, om de Betekenis, methoden en andere belangrijke kwaliteiten te definiëren.
het beschrijven van combinatorische testen:
combinatorische testen is nu een praktische aanpak die testen van hoge kwaliteit tegen lagere kosten produceert. Het ontleedt brute kracht in stappen om het probleem stapsgewijs aan te vallen door analyse-en syntheseactiviteiten te scheiden die gekwantificeerd en gemonitord kunnen worden en gedeeltelijk ondersteund worden door instrumenten. Bovendien is combinatorisch testen uiterst eenvoudig toe te passen. Als een op specificatie gebaseerde techniek vereist het geen kennis over de implementatie die wordt getest. Combinatorisch testen is gebaseerd op de veronderstelling dat veel fouten in software alleen kunnen ontstaan door de interactie van twee of meer parameters. Combinatorisch testen is daarom een effectieve techniek om software met meerdere configuratieparameters te testen. Het wordt hoofdzakelijk gebruikt om interactiefouten te ontdekken die door de combinatie van parameters worden veroorzaakt. Het type test dat door combinatorische tests wordt gegenereerd, is gericht op het genereren van bekleding die alle combinaties van t-wegparameters omvat, waarbij ” t ” een bepaalde bekledingssterkte is. Het basis combinatorisch testen kan op twee manieren worden gebruikt, die afzonderlijk of tegelijkertijd kunnen worden gebruikt. Deze manieren zijn:
- combinaties van configuratiewaarden of parameters, waarbij de dekkende arrays worden gebruikt om de waarden van configureerbare parameters te selecteren, eventueel met behulp van dezelfde tests die tegen alle configuratiecombinaties worden uitgevoerd.
- Coveringarrays worden gebruikt om invoergegevenswaarden te selecteren, die vervolgens deel gaan uitmaken van volledige testcases, waardoor een testpak voor de toepassing wordt gemaakt. Het toepassen van deze vorm van combinatorische testen op de software in de echte wereld is een uitdaging omdat het een hogere mate van interacties presenteert, waarvoor zeer grote tests nodig kunnen zijn.
methoden voor het genereren van combinatorische Testpakken:
de populariteit van combinatorische testen is de laatste jaren sterk toegenomen. Vanwege de vele voordelen wordt het gebruikt door software testers op verschillende testniveaus. Van model -, eenheid -, integratie -, systeem-en acceptatietests tot zwart-wit -, modelgebaseerde tests en meer, testers implementeren combinatorische tests om effectieve resultaten te krijgen tegen een kosteneffectief tarief. Bovendien maken software-ingenieurs voor het genereren van testpakken voor combinatorische testen gebruik van een breed scala aan tools, wat het proces van het testen van software nog verder vereenvoudigt. Deze combinatorische testpakken bieden een hogere t-way dekking, hoewel het genereren van arrays van hogere t-way dekking aanzienlijke computationele middelen kan verbruiken en grote resultaten kan produceren. Daarnaast richt de meerderheid van de algoritmen voor combinatorische testen zich op het speciale geval van 2-weg testen. Ook, om testpak voor combinatorische testen handmatig te construeren, worden drie methoden gebruikt. Deze methoden bieden verschillende voordelen aan de tester en zorgt ervoor dat de output zo nauwkeurig mogelijk is. Deze methoden / algoritmen zijn:
- algebraïsche methode: Deze biedt efficiënte constructies met betrekking tot tijd, maar het is moeilijk om nauwkeurige resultaten te produceren op een brede en algemene verscheidenheid aan inputs.
- Hebzuchtig Algoritme: Dit zijn de goed bestudeerde type algoritme voor de bouw van coving arrays, omdat ze relatief efficiënt zijn gevonden met betrekking tot tijd en nauwkeurigheid.
- heuristisch zoeken: heuristisch zoeken in het bijzonder hoewel de toepassing van gestimuleerd gloeien (SA) in verschillende gevallen de meest nauwkeurige resultaten heeft opgeleverd. Deze lokale zoekmethode heeft veel van de kleinste testsuites voor verschillende systeemconfiguraties opgeleverd; echter tegen een kostprijs van uitvoeringstijd om testsuites te genereren.
Paarsgewijze Tests:
algemeen bekend als “all-pair testing” is een combinatorische methode voor het testen van software die voor elk paar inputparameter in een systeem alle mogelijke combinaties van deze parameters test. Het is een test ontwerp techniek die honderd procent test dekking levert. De meest voorkomende bugs in een programma worden meestal gevonden en geactiveerd door een input parameter of door een interactie tussen paar parameters. Bugs met interacties tussen drie of meer parameters zijn zowel geleidelijk minder vaak en geleidelijk duurder te vinden, dergelijke testen heeft als haar limiet het testen van alle mogelijke inputs. In dit geval is een combinatorische techniek voor het kiezen van testcases zoals alle pair een zeer nuttig kosten-batencompromis dat een aanzienlijke vermindering van het aantal testcases mogelijk maakt zonder drastisch afbreuk te doen aan de functionele dekking. Vandaar, pairwise het testen techniek is immens nuttig in het ontwerpen van test voor toepassingen die veelvoudige parameters impliceren. Zijn testpak omvat alle combinaties en daarom is het niet uitputtend maar zeer effectief in het vinden van bugs. Hoewel het paarsgewijs testen combinaties drastisch kan verminderen, blijft het nog steeds echt effectief in termen van foutdetectie en is het inderdaad een slimme testontwerptechniek die de beste testinspanningen en uitzonderlijke effectiviteit belooft.
voordelen van combinatorische testen:
de bovenstaande discussie over combinatorische testen weerspiegelt zowel de Betekenis als het nut ervan. Het is een van de meest effectieve software testtechniek als het testen van een software met meerdere configureerbare parameters. Bovendien, met behulp van combinatorische testen kan men gemakkelijk detecteren interacties fouten veroorzaakt door de combinatie van parameters. Een ander voordeel van dit type testen is dat het testen van hoge kwaliteit produceert tegen een zeer kosteneffectieve snelheid, wat niet alleen softwareontwikkelaars en testers helpt, maar ook de organisatie waarvoor het product wordt ontwikkeld, ten goede komt. Daarom zijn andere voordelen van deze aanpak:
- behandelt dekkingsproblemen bij het opstellen van het testplan.
- maakt een systematische planning van de test mogelijk.
- kan vrijwel worden toegepast op elke software en op verschillende niveaus van abstracties.
- hogere testdekking met betere kwaliteitsborging.
- vereist geen toegang tot interne broncode SUT.
- het maximaliseert de waarde van elk getest scenario.
- significante vermindering van het aantal tests.
- het kan risico ‘ s beheersen en is gemakkelijk te beoordelen.
conclusie:
softwaresystemen zijn complex en kunnen exponentiële aantallen mogelijke tests bevatten. Elk product dat zonder de juiste tests wordt vrijgegeven, kan een aanzienlijk gevaar zijn voor zowel de organisatie als de gebruiker. Daarom, om ervoor te zorgen dat er geen dergelijke situatie of probleem optreedt nadat de software is vrijgegeven, software testers uitvoeren rigoureuze testen. Bovendien gebruiken ze vaak combinatorische testen op verschillende testniveaus, omdat het eenvoudig software met meerdere configureerbare parameters kan testen. Kortom, combinatorisch testen wordt gebruikt om interactiefouten te detecteren die door de combinatie van parameters worden veroorzaakt. Het belangrijkste inzicht dat ten grondslag ligt aan de effectiviteit van combinatorische testen is het resultaat van een reeks studies en onderzoek van NIST uit 1999-2004. Het is een immens nuttige aanpak die systeem setting systematisch kan onderzoeken in een beheersbaar aantal testen. Het is een aanpak die hoge kwaliteit testen produceert en uitvoert tegen een zeer kosteneffectief tarief. Bovendien is het een effectieve testplanningstechniek, die dekkingskwesties zo vroeg mogelijk kan behandelen. Daarom, als een software engineer de beste testresultaten wil krijgen, moet hij zeker combinatorische testen uitvoeren in een vroeg stadium van de Software Development Life Cycle (SDLC).