Risikobasiertes Testen

Um die QualitĂ€t des Informationsprodukts in Medizin, Versicherungen, Banken und anderen Branchen sowie andere Testmethoden sicherzustellen, ist es wichtig, risikobasierte Tests zu verwenden. Zur ÜberprĂŒfung werden die riskantesten Bereiche der zu erstellenden Software ausgewĂ€hlt. Dies ermöglicht es uns, negative Szenarien zu antizipieren und die GeschĂ€ftsziele des Kunden erfolgreich umzusetzen.

In diesem Artikel erfahren Sie, wie wir bei SimbirSoft mit Risiken umgegangen sind (am Beispiel des Internet-Acquiring-Systems und anderer Projekte) und welche Methoden zur Risikobewertung und zum Risikomanagement wir in Kundenprojekten verwenden.

Risiken zu Beginn des Projekts


ZunĂ€chst geben wir ein Beispiel aus unserer Praxis in der Entwicklung fĂŒr den Bankensektor.

Kundenvorschlag: Konzentration auf die Webversion der Bank fĂŒr Privatpersonen.

Das Risiko, das wir identifiziert haben: ein möglicher Verlust des Publikums aufgrund der geringen Nachfrage der Webversion nach Einzelpersonen im Gegensatz zu einer mobilen Kundenbank.

Unsere Argumente: Statistiken der BenutzerprÀferenzen basierend auf Bewertungen und Verteilung des Publikums nach Mobil- und Webversionen.

Schlussfolgerungen: FĂŒr Einzelpersonen ist die mobile Version bequemer, da das Telefon immer zur Hand ist. Der Betrieb ist schnell, das Autorisierungssystem ermöglicht Ihnen den Zugriff auf alle praktischen Dienste. In diesem Fall ist ein schneller Zugriff auf einen begrenzten Satz der beliebtesten Funktionen wichtig.

FĂŒr juristische Personen sind die VollstĂ€ndigkeit der bereitgestellten Funktionen, die FĂ€higkeit zum Hochladen, Drucken und Arbeiten mit einer großen Menge von Informationen wichtig. DafĂŒr ist die Webversion bequemer.

Unsere Lösung: sich auf die mobile Kundenbank fĂŒr Privatpersonen konzentrieren.
Zu Beginn der Arbeit mit dem Projekt ist es wichtig, die Teststrategie richtig zu wÀhlen. Schauen wir uns Beispiele an, warum es wichtig ist und wie man es auswÀhlt.

Die Teststrategie muss die GeschĂ€ftsziele erfĂŒllen


FrĂŒher oder spĂ€ter stehen alle Unternehmen vor der Notwendigkeit, den Testprozess zu organisieren und zu verstehen, dass die Entwicklung ihrer Strategie eine wichtige Phase in der Softwareentwicklung darstellt. Manchmal - durch ihre eigene bittere Erfahrung. Es ist besonders gefĂ€hrlich, die Rolle von Tests und Strategieauswahl bei der Entwicklung von Großprojekten zu unterschĂ€tzen. Der Testprozess sollte gemĂ€ĂŸ den GeschĂ€ftszielen und -spezifikationen des Projekts ausgewĂ€hlt werden, da er sonst weder in einem Monat noch in einem Jahr zu positiven Ergebnissen fĂŒhrt.

Testen Sie beispielsweise mobile und Webanwendungen fĂŒr eine Bank. Zu Beginn des Projekts haben wir eine Strategie ausgewĂ€hlt, die auf Anforderungen mit geringem Detaillierungsgrad basiert. Wir haben Checklisten verwendet, um die Testzeit zu verkĂŒrzen und die Testbasis zu unterstĂŒtzen. Mit dem Wachstum der FunktionalitĂ€t, der HinzufĂŒgung von Erfassung, SMS-Autorisierung und Benachrichtigung, komplexeren Systemen, werden Checklisten ihrer Aufgabe nicht mehr gerecht. Im Laufe der Zeit schlossen sich immer mehr QS-Spezialisten dem Team an. Es war notwendig, Informationen zu ĂŒbermitteln und ihre Aktionen zu koordinieren. Mit der Komplikation des Produkts kann jede Änderung verwandte Funktionen beeintrĂ€chtigen, dh das Risiko einer Regression steigt. Die Notwendigkeit zur Automatisierung von Regressionstests nahm zu, daher wechselten wir zu TestfĂ€llen.

Fazit: Je nach Projekt, Besonderheiten oder Entwicklungsstand Àndert sich die Teststrategie.

Die Strategie muss fĂŒr die Projektziele ausgewĂ€hlt werden, um die beste ProduktqualitĂ€t zu gewĂ€hrleisten. Sie beantwortet die Fragen „Was“, „Wo“ und „Wann“. Sie wissen jederzeit, zu welchem ​​Zeitpunkt Sie sich befinden und wohin Sie in Zukunft kommen werden - entsprechend der Strategie.

Ein GeschÀftsziel kann darin bestehen, die Sicherheit der Kundendaten sowie der Software selbst in der Produktionsphase zu gewÀhrleisten. Sicherheit beginnt mit dem Entwicklungsprozess und setzt sich in der Testphase fort.

Beispielsweise haben wir bei einem der Projekte eine sichere Umgebung fĂŒr Entwicklung und Test geschaffen, eine Infrastruktur bereitgestellt, die alle Anforderungen erfĂŒllt und zum Schutz der Daten beitrĂ€gt. Wir haben fĂŒr jeden QS-Spezialisten zertifizierte Token und namensbasierte Flash-Laufwerke angefordert, um auf die Testinfrastruktur zugreifen zu können. So haben wir das GeschĂ€ftsziel des Projekts in der Software-Sicherheit sichergestellt und die Kunden- und Benutzerdaten vertraulich behandelt.

Aufgrund der Teststrategie kann der Schwerpunkt auf wirklich wichtige Aspekte fĂŒr ein bestimmtes Projekt gelegt werden. Es ist logisch, dass die Veröffentlichung eines Handyspiels oder eines komplexen CRM-Bankensystems unterschiedliche TestansĂ€tze erfordert.

Bankenteststrategie


In unserer Praxis haben wir bei SimbirSoft die gesamte Bandbreite der Entwicklungsmethoden verwendet, aber flexible Technologien bleiben immer unsere PrioritĂ€t. Und selbst wenn es aus einer Reihe von GrĂŒnden nicht möglich ist, sie zu verwenden, ĂŒbernimmt das Team die Best Practices und wendet sie in der tĂ€glichen Arbeit an. Das Testen wird zu einem integralen Bestandteil des gesamten Prozesses und fĂŒgt sich in den gesamten Workflow ein. In diesem Fall ist es nicht nur fĂŒr die QualitĂ€t des Produkts verantwortlich, sondern auch fĂŒr die QualitĂ€t des gesamten Arbeitsprozesses.

Welche Technologien verwenden wir:

  • flexible Planung und Vorbereitung interner Releases;
  • User Story Vorbereitung;
  • Abhalten von Kundgebungen;
  • DurchfĂŒhrung von Retrospektiven.

In vollem Umfang zeigt sich die Teststrategie in Projekten mit komplexer GeschĂ€ftslogik. Zum Beispiel Software zur InformationsunterstĂŒtzung von Banken, der Aufbau eines Internet-Acquiring-Systems, eine automatisierte Handelsplattform. Bei solchen Projekten ist es wichtig, eine geeignete Teststrategie anzuwenden, da der Preis einiger Fehler zu echten Verlusten fĂŒhren und den Ruf des Unternehmens erheblich verschlechtern kann.

Außerdem können die Hauptziele des Testens - Fehlersuche und SoftwareĂŒberprĂŒfung auf KonformitĂ€t - zusĂ€tzlich hinzugefĂŒgt werden. Beispielsweise ist es fĂŒr Banken wichtig, die neuen Anforderungen der Zentralbank schnell umzusetzen. Dies bedeutet, dass zeitnahe Tests mit der erforderlichen QualitĂ€t fĂŒr kritische Aufgaben zum Hauptziel hinzugefĂŒgt werden.

Vor kurzem waren wir in einem Bankprojekt mit einer Änderung des Bundesgesetzes konfrontiert - einer Erhöhung des Mehrwertsteuersatzes von 18% auf 20%. Es wurden viele Vorarbeiten zur Anpassung an die GesetzesĂ€nderung geleistet, da die Änderung nicht nur das Ersetzen von Formularen, Schnittstellen, sondern auch die Änderung der Logik mehrerer Berechnungsformeln betraf. Auf vielen Plattformen musste die korrekte Anzeige sichergestellt werden. Auch bei der Zahlungsaufschubfunktion musste die Übergangsfrist mit SĂ€tzen von 18% und 20% berĂŒcksichtigt werden.

Jetzt werden wir detaillierter darĂŒber sprechen, wie wir unsere Strategie entwickeln und warum wir uns hĂ€ufig fĂŒr risikobasierte Tests entscheiden.

Vorteile von risikobasierten Tests


Es gibt verschiedene Teststrategien, die fĂŒr bestimmte Zwecke ausgewĂ€hlt werden:

  • basierend auf Anforderungen;
  • methodisch;
  • reaktive Strategien;
  • Beratungsstrategien.

Bei der Arbeit mit Projekten mit komplexer GeschĂ€ftslogik mĂŒssen strenge Anforderungen beim Entwurf von Systemen festgelegt werden, auf denen das Testen basiert. Ein geeignetes Werkzeug ist das anforderungsbasierte Testen.

Eine Art von anforderungsbasierter Strategie ist das risikobasierte Testen. DarĂŒber hinaus werden zuerst die Teile der SystemfunktionalitĂ€t getestet, die am stĂ€rksten Risiken ausgesetzt sind. Das Risiko ist eine mögliche negative Folge eines fehlerhaften Systems. Die Folge ist ein Risiko bei Vorhandensein von zwei Komponenten wie Chance und NegativitĂ€t.

Es gibt zwei Arten von Risiken:

1. Produktrisiko

Es kann verwaltet und nicht verwaltet werden. Im obigen Beispiel waren wir mit einem ĂŒberschaubaren Risiko konfrontiert: schnelles Wachstum und KomplexitĂ€t der FunktionalitĂ€t, was die Wahrscheinlichkeit einer Regression erhöhte. Hier haben wir das Problem durch eine verstĂ€ndliche Testbasis und anschließende Automatisierung gelöst. Das Risiko, das wir nicht beeinflussen können, ist die AbhĂ€ngigkeit von externen Systemen und deren Ausfall im Integrationsprozess. Hier legen wir die Maßnahmen fest, die ihre Auswirkungen auf unser System verringern. Verwenden Sie beispielsweise die Sicherung, behandeln Sie AusnahmefĂ€lle und zeigen Sie Warnungen fĂŒr den Benutzer an.

2. Projektrisiko

Bei einem Projekt waren wir beispielsweise mit der Tatsache konfrontiert, dass der Kunde zuvor nicht mit einem verteilten Team zusammengearbeitet hatte und der verwendete Workflow daher nicht den Anforderungen entsprach und zusĂ€tzliche Kommunikationsprobleme verursachte: UnverstĂ€ndnis, Doppelarbeit von Aufgaben, AusfĂŒhrung sich gegenseitig ausschließender Aufgaben usw. Wir haben uns auf die Umstrukturierung und Verbesserung des Prozesses geeinigt - den Workflow ĂŒberarbeitet, alle Teammitglieder vorgestellt, Kundgebungen, PrĂ€sentationen und RĂŒckblicke abgehalten. Infolgedessen ging die Arbeit in die richtige Richtung.

Der risikobasierte Ansatz ermöglicht es Ihnen, eine bestimmte Anzahl von Risiken fĂŒr kurze Zeit zusammenzustellen, um die Risiken mit hoher PrioritĂ€t zu testen und dem Kunden außerdem Metriken zu liefern, wie gut sie getestet wurden, wobei die Anzahl der geplanten und abgeschlossenen FĂ€lle und die Anzahl der Fehler angezeigt werden.

Die Umsetzung eines risikobasierten Ansatzes fĂŒr ein Projekt erfolgt in vier Schritten:

Risikoidentifikation - In dieser Phase mĂŒssen Sie die Risiken identifizieren und eine Liste von ihnen erhalten.
Risikobewertung - hier analysieren wir die Liste und klassifizieren sie nach PrioritÀt.
Risikominderung - In dieser Phase legen wir fest, wie grĂŒndlich wir die Risiken testen werden.
Risikomanagement - hier entscheiden wir, wie wir weiterhin mit ihnen zusammenarbeiten und sie durchgehen, um neue Risiken zu identifizieren.

Risiken werden von einer Gruppe von Stakeholdern wĂ€hrend Brainstorming-Sitzungen identifiziert und bewertet. Das Team sollte GeschĂ€ftsanalysten oder WissenstrĂ€ger ĂŒber das System von Kunden, Entwicklern, Managern oder Projektmanagern, Architekten und QS-Spezialisten umfassen. Wir beschĂ€ftigen Informationssicherheitsspezialisten, Mitarbeiter, die direkt mit dem aktuellen System arbeiten, und GeschĂ€ftsanalysten, die in Prozesse zur Identifizierung und Bewertung von Risiken vertieft sind.

Betrachten Sie den risikobasierten Ansatz am Beispiel des Testens des Internet-Erfassungssystems.

Arbeiten Sie mit Risiken (am Beispiel eines Internet-Acquiring-Systems)


Wir stellen die folgenden Anforderungen heraus:
Stellen Sie 1000 gleichzeitige Verbindungen zum System pro Sekunde bereit.
D2. Transaktionssicherheit.
D3. Der Zugriff auf die Transaktion sollte nur der Person zur VerfĂŒgung stehen, die die Transaktion durchfĂŒhrt.
D4. Bereitstellung und UnterstĂŒtzung des SET-Standards (Secure Electronic Transaction).

Als Produktrisiko können wir unterscheiden:
RP1. Systemabsturz bei gleichzeitigen Verbindungen.
RP2. Verwenden der SQL-Injection wÀhrend der Transaktion.
RP3. Zugriff auf die Transaktion einer anderen Person, wenn Parameter in der URL geÀndert werden.
RP4. Datenverlust, wenn die Verbindung zur Bank zum Zeitpunkt der Transaktion unterbrochen wird.
RP5. Verwendung ungĂŒltiger Zertifikate bei der Bereitstellung des SET-Systems (Secure Electronic Transaction).

Als organisatorische Risiken:
RO1. Der Fall des entwickelten Systems aufgrund der UnzugÀnglichkeit externer Systeme.
RO2. Das Vorhandensein schwer zu reproduzierender FÀlle, die in einer Testumgebung nicht erkannt werden können.

Somit folgt jedes Risiko logischerweise aus den Anforderungen, die im System vorhanden sind, ist jedoch nicht auf diese beschrÀnkt. Risiken ergÀnzen die Anforderungen und identifizieren zusÀtzliche FÀlle, die bei der Arbeit mit dem System auftreten können.

Risiken können je nach Projektziel und Systemanforderungen reduziert oder kompensiert werden. Es wird akzeptiert, dass das Risiko mindestens einmal durch den Testfall abgedeckt wird:

1. FĂŒr jedes Produktrisiko wird eine Reihe von TestfĂ€llen RP1-RP4 unter der Bedingung erstellt, dass jede Anforderung und jedes Risiko von mindestens einem Testfall abgedeckt werden sollte. AbhĂ€ngig von den Testzwecken wird der Satz von TestfĂ€llen auf einen bestimmten Detaillierungsgrad erweitert.

2. FĂŒr jedes organisatorische Risiko wird eine Liste von AktivitĂ€ten erstellt, mit denen die Auswirkungen des Risikos auf das zu entwickelnde Produkt verringert werden können.

Risikobewertung und Managementtechniken


Es gibt verschiedene Methoden zur Bewertung und zum Management von Risiken: leichte Methoden (PRAM, PRISMA) und formellere (FMEA, FTA).

Mit dem FMEA-Modell identifiziert das Projektteam alle Prozesse, Komponenten und Module des Systems, in denen ein Systemfehler oder -fehler auftreten kann, der zu einer Verschlechterung der ProduktqualitĂ€t fĂŒhren kann. WĂ€hrend des Brainstormings werden die Risiken des Systems durch drei Indikatoren bestimmt: Schweregrad, PrioritĂ€t, Wahrscheinlichkeit. Anschließend wird fĂŒr jedes Risiko die RisikoprioritĂ€tszahl berechnet und in AbhĂ€ngigkeit von den Indikatoren die PrĂŒftiefe festgelegt.

Mit dem FTA-Modell werden alle Ursachen, die zu Fehlern in den GeschĂ€ftsprozessen des Systems fĂŒhren können, schrittweise ermittelt. Die Analyse geht von der höchsten zur niedrigsten Ebene. Der Unterschied zwischen FMEA und FTA besteht darin, dass sich der erste Ansatz auf die FunktionalitĂ€t des Systems und der zweite auf GeschĂ€ftsprozesse konzentriert.

ZusÀtzlich zu diesen formellen und umfangreichen AnsÀtzen gibt es flexiblere und informellere. Zum Beispiel die Methoden PRAM (Pragmatische Analyse und Risikomanagement) und PRISMA (Produktrisikomanagement). Sie kombinieren risiko- und anforderungsbasierte Strategien erfolgreich und einfach. GrundsÀtzlich verwenden diese AnsÀtze Anforderungsspezifikationen als Input, es können jedoch auch Stakeholder einbezogen werden.

Leichte Risikoanalysemethoden sind formalen sehr Àhnlich. Sie konzentrieren sich auf technische oder kommerzielle Risiken und wÀgen die Eintrittswahrscheinlichkeit des Risikos und die diese Wahrscheinlichkeit beeinflussenden Faktoren ab.

Die einzigen zwei Faktoren, die von diesen Methoden verwendet werden, sind die Wahrscheinlichkeit des Risikos und seine Auswirkungen. DarĂŒber hinaus verwenden diese AnsĂ€tze vereinfachte qualitative Beurteilungen und Skalen, um Entscheidungen zu treffen.

Unsere Teams verwenden flexible Leichtbaumethoden und passen PRAM- und PRISMA-AnsÀtze an ihre Ziele an.

Wie wir mit risikobasierten Tests arbeiten


Beispielsweise identifizieren wir in einem der Projekte Projekt- und Produktrisiken, die möglicherweise funktionieren. Zu diesem Zweck nehmen Analysten, Entwickler und die QualitÀtssicherung an der Analyse teil - ein Vertreter des Teams.

Mit den Produkten wird eine Risikotabelle erstellt. Sie bestimmen die EinschĂ€tzung der Eintrittswahrscheinlichkeit eines Risikos und seiner möglichen Auswirkungen auf das System auf einer FĂŒnf-Punkte-Skala. In Tabelle 1 - der stĂ€rkste Einfluss, 5 - der schwĂ€chste. Auch fĂŒr Wahrscheinlichkeit 1 - hohe Wahrscheinlichkeit, 5 - niedrige Wahrscheinlichkeit.



Wie wir weiterhin mit Produktrisiken arbeiten


Ferner wird fĂŒr jeden von ihnen die Risikodeckung des Produkts anhand von TestfĂ€llen verfolgt.

Wir wÀhlen folgende Schecks aus:

TC1. LastprĂŒfung mit mehr als 1000 Verbindungen zum System
TC2. Lasttest mit 1000 Systemverbindungen
TC3. Geben Sie wÀhrend der Transaktion die SQL-Injection ein
TC4. Geben Sie SQL Injection auf der Seite fĂŒr erfolgreiche Transaktionen ein, indem Sie andere Daten ersetzen
TC5. Eingabe von XSS-Skripten (Cross-Site Scripting) in die verfĂŒgbaren Felder zur Eingabe bei einer Transaktion
TC6. Simulation einer getrennten Internetverbindung wÀhrend einer Transaktion
TC7. Beenden einer Transaktionssitzung im ÜberprĂŒfungsschritt
TC8. Validierung abgelaufener Zertifikate wÀhrend der Transaktion



Somit sind PrioritĂ€tsprĂŒfungen TC2, TC4, TC5.

TC6 und TC8 haben eine hohe Auswirkung, aber eine geringere Wahrscheinlichkeit, sodass die PrioritĂ€t der ÜberprĂŒfung geringer ist, aber auch ÜberprĂŒfungen erforderlich sind.

TC7 gilt fĂŒr keine der Anforderungen, erweitert jedoch den Test fĂŒr ein negatives Szenario, was bei stabilem Betrieb des Systems möglich ist.

Wie wir weiterhin mit Projektrisiken arbeiten


Wir legen auch Maßnahmen fĂŒr Projektrisiken fest, mit denen wir zusĂ€tzliche Maßnahmen und Entscheidungen zuweisen.

Auf Risiko “RO2. Das Vorhandensein schwer zu reproduzierender FĂ€lle, die in der Testumgebung nicht erkannt werden können “, können Sie wie folgt feststellen:

  • Bereiten Sie in Verbindung mit allen externen Systemen einen Vorproduktionsstand vor, der der realen Anwendungsumgebung so nahe wie möglich kommt.
  • Schreiben Sie End-to-End-Testskripte, die alle benachbarten Systeme durchlaufen und die TransaktionsĂŒberprĂŒfung ermöglichen.
  • Verwenden Sie nach DurchfĂŒhrung aller PrioritĂ€tsprĂŒfungen die FehlerschĂ€tztechniken gemĂ€ĂŸ den grundlegenden Anforderungen des Systems und der Skripte fĂŒr zusĂ€tzliche ÜberprĂŒfungen in der Rolle eines „Systemhackers“.

Notfallplan


Es ist wichtig, einen Aktionsplan zu haben, falls eines der Produkt- oder Projektrisiken funktioniert. Manchmal kann das Einrichten eines Sicherungssystems des Projekts gespeichert werden. Es ist nicht immer möglich, das Risiko auf ein Minimum zu reduzieren, aber es sollte möglich sein, zumindest seine Folgen zu reduzieren. Unser Beitrag „Weihnachtsgeschichte“ befasste sich mit diesem Thema: Wie ein Risiko funktionieren kann, dessen Wahrscheinlichkeit gegen Null geht.

Zum Beispiel mĂŒssen wir Datenverluste wĂ€hrend einer Transaktion vollstĂ€ndig beseitigen, aber alle FĂ€lle als zu mĂŒhsam betrachten. Daher mĂŒssen Sie Möglichkeiten haben, solche FĂ€lle zu behandeln. Eine der Sicherheitsoptionen ist die Entwicklung einer detaillierteren Protokollierung. Dies bietet einen permanenten Rollback-Punkt fĂŒr die vorherige Aktion, wenn wĂ€hrend der Transaktion ein Fehler aufgetreten ist.

Fazit


Mit risikobasierten Tests können Sie die risikoreichsten Bereiche mit TestfĂ€llen abdecken und so deren Auswirkungen und die Wahrscheinlichkeit, ausgelöst zu werden, verringern. Dies ist die erfolgreichste Strategie fĂŒr Systeme mit komplexer GeschĂ€ftslogik und hohen Fehlerkosten. Die Lösung eignet sich fĂŒr den Bankensektor, Versicherungsunternehmen, komplexe interne CRM-Systeme eines medizinischen Profils. Mit einem risikobasierten Ansatz arbeiten wir auch mit Projektrisiken, was den Gesamtprozess des Testens und des Projektmanagements verbessert.

Source: https://habr.com/ru/post/de443672/


All Articles