Vergleichstests im Software Engineering mit Beispielen
Einführung
Vergleichstests sind eine der effektivsten Strategien, um sicherzustellen, dass Software ihren beabsichtigten Anforderungen entspricht. Dieser leistungsstarke Ansatz ermöglicht es Ingenieuren, verschiedene Versionen, Algorithmen oder Konfigurationen von Software zu vergleichen und wichtige Erkenntnisse zu gewinnen, die sowohl Verbesserungen als auch Innovationen fördern.
Lassen Sie uns in die Feinheiten der Vergleichstests eintauchen und ihre entscheidende Rolle im Software-Entwicklungslebenszyklus entdecken.
Was sind Vergleichstests?
Vergleichstests sind eine Methode im Software Engineering zur Bewertung und zum Gegenüberstellen verschiedener Versionen, Konfigurationen oder Algorithmen eines Softwareprodukts. Das Hauptziel besteht darin zu ermitteln, welche Version effizienter, zuverlässiger und benutzerfreundlicher ist.
Durch den systematischen Vergleich dieser Elemente können Ingenieure Stärken und Schwächen identifizieren und fundierte Entscheidungen darüber treffen, was verbessert werden muss. Der Ansatz stellt sicher, dass das Endprodukt nicht nur die erforderlichen Standards erfüllt, sondern diese häufig auch übertrifft.
Techniken und Tools im Zusammenhang
Beim Vergleichstest kommen verschiedene Techniken und Tools zum Einsatz, um gründliche und genaue Ergebnisse zu gewährleisten.
A/B-Testing: Diese Technik vergleicht zwei Versionen eines Softwareprodukts, Version A und Version B, unter kontrollierten Bedingungen. Durch die Analyse der Benutzerreaktionen und Leistungsmetriken können Ingenieure bestimmen, welche Version ein besseres Erlebnis bietet.
Regressionstests: Dabei wird eine neue Version der Software mit ihrer Vorgängerversion verglichen, um sicherzustellen, dass neue Updates bestehende Features nicht negativ beeinflusst haben. Dies ist ein kritischer Schritt zur Aufrechterhaltung der Softwarequalität im Laufe der Zeit.
Performance-Benchmarking: Hier liegt der Fokus auf der Bewertung der Leistung verschiedener Software-Versionen oder -Konfigurationen anhand vordefinierter Benchmarks. Tools wie Apache JMeter oder LoadRunner helfen dabei, reale Bedingungen zu simulieren und wertvolle Daten darüber zu liefern, wie gut jede Version unter Belastung abschneidet.
Code-Vergleichstools: Tools wie DiffMerge oder Beyond Compare ermöglichen es Entwicklern, Änderungen in der Codebasis visuell zu vergleichen. Diese Tools sind unerlässlich, um Unterschiede zu erkennen, die das Software-Verhalten beeinflussen könnten, und stellen die Konsistenz über Versionen hinweg sicher.
Zweck der Durchführung von Vergleichstests
Das grundlegende Ziel bei der Durchführung von Vergleichstests ist es, sicherzustellen, dass Ihr Produkt sowohl funktional als auch wettbewerbsfähig ist. Vergleichstests helfen Ihnen, wichtige Leistungsindikatoren (KPIs) wie Geschwindigkeit, Effizienz und Benutzerfreundlichkeit gegenüber Benchmarks zu messen.
Diese Art von Tests ist unschätzbar wertvoll, um festzustellen, wie Ihre Software im Vergleich zu anderen Lösungen oder früheren Versionen abschneidet.
Arten von Vergleichstests
Funktionaler Test
Funktionale Tests konzentrieren sich darauf zu überprüfen, ob die Features und Funktionen der Software wie erwartet funktionieren. Es geht darum sicherzustellen, dass die Software das tut, was sie tun soll.
Bei Vergleichstests bewerten Sie verschiedene Versionen oder Konfigurationen einer Softwareanwendung, indem Sie ihr Verhalten gegenüber den festgelegten Anforderungen vergleichen.
Zum Beispiel könnten Sie vergleichen, wie zwei Versionen einer App die Benutzeranmeldung, Datenverarbeitung oder die Interaktion mit anderen Systemen handhabt.
Das Ziel ist einfach: zu bestimmen, welche Version die funktionalen Anforderungen besser erfüllt. Tools wie Selenium oder JUnit werden häufig bei funktionalen Vergleichstests eingesetzt und bieten einen detaillierten Blick darauf, wie verschiedene Versionen in realen Szenarien abschneiden. Diese Art von Tests ist entscheidend, weil sie die Benutzererfahrung direkt beeinflusst: Wenn die Kernfunktionen nicht funktionieren, schlägt die Software fehl.
Nicht-funktionale Tests
Während funktionale Tests prüfen, ob die Software funktioniert, untersuchen nicht-funktionale Tests, wie gut sie funktioniert. Dazu gehören Tests von Aspekten wie Leistung, Sicherheit, Benutzerfreundlichkeit und Skalierbarkeit.
Bei Vergleichstests helfen Ihnen nicht-funktionale Tests dabei zu beurteilen, welche Version der Software bessere Geschwindigkeit, Sicherheitsfunktionen oder Benutzerzufriedenheit bietet.
Sie könnten beispielsweise vergleichen, wie schnell zwei Versionen einer Anwendung unter starkem Benutzerverkehr laden oder wie sicher sie gegen Cyberbedrohungen sind.
Tools wie LoadRunner für Leistungstests oder OWASP ZAP für Sicherheitstests sind bei diesem Prozess unverzichtbar. Die Erkenntnisse aus nicht-funktionalen Vergleichstests leiten Entwickler bei der Optimierung der Software. Dies stellt sicher, dass sie nicht nur funktioniert, sondern in jedem anderen Aspekt, der für Benutzer wichtig ist, hervorragend abschneidet.
Phasen der Vergleichstests
Frühphase
In der Frühphase der Vergleichstests liegt Ihr Fokus darauf, die Grundlage für den gesamten Prozess zu legen. Hier definieren Sie die Ziele der Tests und identifizieren die wichtigsten Metriken, anhand derer Sie verschiedene Versionen oder Konfigurationen vergleichen.
Zu diesem Zeitpunkt führen Sie vorläufige Tests an Prototypen oder ersten Versionen der Software durch, um eine Basislinie zu etablieren.
Das Ziel ist es, offensichtliche Probleme frühzeitig zu erkennen, damit Sie fundierte Entscheidungen darüber treffen können, in welche Richtung der Entwicklungsprozess gehen soll.
Durch das Festlegen spezifischer Anforderungen und frühzeitiges Testen stellen Sie sicher, dass Ihr Projekt gut beginnt und Risiken im weiteren Verlauf minimiert werden.
Mittelphase
Die Mittelphase ist der Punkt, an dem Vergleichstests wirklich ihren Wert zeigen. Zu diesem Zeitpunkt testen Sie weiter entwickelte Versionen Ihrer Software und vergleichen sie miteinander und möglicherweise mit Produkten der Konkurrenz.
Diese Phase umfasst eine tiefgreifendere Analyse sowohl funktionaler als auch nicht-funktionaler Aspekte und gibt Ihnen ein klareres Bild davon, wie jede Version unter verschiedenen Bedingungen abschneidet.
Sie verfeinern Features, verbessern die Leistung und beheben alle in der Frühphase identifizierten Probleme mithilfe der gesammelten Daten. Diese Phase ist entscheidend, weil hier die meisten iterativen Tests und Anpassungen stattfinden und die Software ihrer endgültigen Form entgegengeführt wird.
Spätphase
In der Spätphase der Vergleichstests nähern Sie sich der Ziellinie. Diese Phase umfasst den Vergleich der endgültigen Kandidatenversionen Ihrer Software und stellt sicher, dass das Produkt ausgefeilt und bereit für die Veröffentlichung ist.
Hier testen Sie rigoros, um zu bestätigen, dass die Software alle Anforderungen erfüllt und optimal über die angegebenen Metriken hinweg funktioniert.
Der Fokus liegt auf der Feinabstimmung, der Beseitigung letzter Fehler und der Sicherstellung, dass die Software vollständig optimiert ist.
Am Ende dieser Phase haben Sie ein klares Verständnis davon, welche Version am besten für die Veröffentlichung geeignet ist, und stellen einen reibungslosen Start und ein qualitativ hochwertiges Produkt sicher, das die Benutzererwartungen erfüllt.
Vorteile der Vergleichstests
Stärken und Schwächen identifizieren
Einer der größten Vorteile der Vergleichstests ist die Fähigkeit, sowohl die Stärken als auch die Schwächen Ihrer Software genau zu ermitteln. Durch den Vergleich verschiedener Versionen oder Konfigurationen können Sie klar erkennen, was gut funktioniert und was verbessert werden muss.
Diese Erkenntnis ist wertvoll: Sie ermöglicht es Ihnen, die Stärken Ihrer Software zu nutzen und gleichzeitig etwaige Schwächen zu beheben, bevor sie zu größeren Problemen werden.
Das Ergebnis? Ein robusteres, zuverlässigeres Produkt, das besser geeignet ist, die Bedürfnisse und Erwartungen der Benutzer zu erfüllen.
Darüber hinaus verbessert dieser datengesteuerte Ansatz die Effizienz Ihres Entwicklungsprozesses und stellt sicher, dass jede Entscheidung auf soliden Belegen basiert.
(Weiterlesen: https://qodex.ai/blog/test-data-management-strategy)
Innovationsmöglichkeiten aufdecken
Über den einfachen Vergleich Ihrer Software mit bestehenden Benchmarks hinaus können Vergleichstests Innovationsmöglichkeiten aufzeigen. Durch die Analyse, wie Ihre Software im Vergleich zu Konkurrenten oder früheren Versionen abschneidet, könnten Sie neue Features oder Verbesserungen entdecken, die Ihr Produkt abheben könnten. Dieser proaktive Ansatz hält Sie der Kurve voraus, indem Ihre Software kontinuierlich verbessert wird, um Marktanforderungen zu erfüllen und zu übertreffen.
Benutzererfahrung verbessern
Das ultimative Ziel der Vergleichstests ist es, ein Produkt zu liefern, das Benutzer begeistert. Durch den systematischen Vergleich verschiedener Aspekte Ihrer Software können Sie die Benutzererfahrung verfeinern und sicherstellen, dass sie so reibungslos, intuitiv und angenehm wie möglich ist.
Dieser sorgfältige Ansatz führt zu höherer Benutzerzufriedenheit, positiven Bewertungen und langfristiger Loyalität, was alles entscheidend für den Erfolg Ihrer Software in einem wettbewerbsintensiven Markt ist.
Wettbewerbsvorteil erlangen
In einem überfüllten Markt helfen Ihnen Vergleichstests dabei, einen deutlichen Wettbewerbsvorteil zu erzielen. Indem Sie ermitteln, wo Ihre Software hervorragend ist, können Sie diese Stärken potenziellen Kunden präsentieren und Ihr Produkt von anderen abheben.
Ob überlegene Leistung, einzigartige Features oder außergewöhnliche Benutzerfreundlichkeit: Vergleichstests ermöglichen es Ihnen, Ihre Software als die beste Wahl in ihrer Kategorie zu positionieren. Dieser Ansatz verschafft Ihnen einen klaren Vorteil gegenüber der Konkurrenz.
Steigerung der Effizienz bei Vergleichstests mit Automatisierungstools
Vergleichstests können ressourcenintensiv sein, und der Einsatz von Automatisierungstools kann die Belastung erheblich reduzieren. Der Einsatz von Automatisierungstools wie Qodex.ai kann die Effizienz erheblich steigern.
(Sehen Sie sich das an: https://qodex.ai/blog/top-automation-testing-tools)
Qodex.ai ist eine KI-gestützte Automatisierungsplattform, die darauf ausgelegt ist, Software-Tests zu rationalisieren. Sie automatisiert die Erstellung, Ausführung und Berichterstattung von Testfällen und reduziert den Bedarf an manuellem Aufwand. Qodex.ai erstellt automatisch Testfälle basierend auf den Spezifikationen Ihrer Software und gewährleistet eine umfassende Abdeckung sowie die Minimierung menschlicher Fehler.
Die Plattform automatisiert auch die Testausführung in mehreren Umgebungen gleichzeitig und verkürzt so die für Vergleichstests benötigte Zeit drastisch. Die detaillierten Berichte liefern klare, umsetzbare Erkenntnisse und ermöglichen es Ihrem Team, sich auf strategische Verbesserungen zu konzentrieren.
Durch die Integration von Qodex.ai reduzieren Sie den Aufwand für repetitive Aufgaben und ermöglichen Ihrem Team, sich auf strategische Analysen und Entscheidungsfindung zu konzentrieren. Dies steigert die Effizienz Ihres Testprozesses und gewährleistet gründliche, zuverlässige Ergebnisse.
Wann sollten Vergleichstests durchgeführt werden?
Früh in der Entwicklung
Vergleichstests sollten früh im Entwicklungsprozess beginnen. In dieser Phase ist es wichtig, erste Versionen oder Prototypen zu vergleichen, um zu ermitteln, welche Richtung die beste Leistung und Benutzererfahrung bietet.
Frühzeitige Vergleichstests helfen Ihnen, potenzielle Probleme zu erkennen, bevor ihre Behebung teurer wird, und ermöglichen es Ihnen, Ihre Software von Grund auf zu verfeinern.
Vor größeren Updates
Vor dem Einführen eines größeren Updates ist es entscheidend, Vergleichstests durchzuführen. Dies stellt sicher, dass neue Features oder Änderungen die Software verbessern, anstatt neue Probleme einzuführen. Durch den Vergleich der aktuellen Version mit dem bevorstehenden Update können Sie überprüfen, ob die Änderungen wirklich vorteilhaft sind und bestehende Funktionalitäten nicht negativ beeinflussen.
Bei der Bewertung von Wettbewerbern
Wenn Sie in einen wettbewerbsintensiven Markt eintreten oder Ihre Software gegenüber führenden Wettbewerbern positionieren möchten, sind Vergleichstests ein Muss. Sie ermöglichen es Ihnen, die Leistung, Features und Benutzerfreundlichkeit Ihrer Software gegenüber anderen auf dem Markt zu messen.
Während Optimierungsphasen
Wenn Sie sich auf die Optimierung Ihrer Software konzentrieren, ob für Geschwindigkeit, Benutzerfreundlichkeit oder Ressourceneffizienz, bieten Vergleichstests klare Benchmarks. Sie helfen Ihnen, die Auswirkungen der Optimierungsbemühungen zu erkennen, indem Sie die Software vor und nach Änderungen vergleichen.
Vor dem Produktlaunch
Führen Sie vor dem Launch Vergleichstests durch, um zu überprüfen, ob Ihre Software bereit für die Veröffentlichung ist. Durch den Vergleich der endgültigen Version mit vorherigen stellen Sie sicher, dass alle Features korrekt funktionieren und die Software die Qualitätsstandards erfüllt.
Was wird bei Vergleichstests verglichen?
Bedienbarkeit und Benutzerfreundlichkeit sind entscheidend für die Benutzerzufriedenheit. Vergleichstests bewerten, wie gut verschiedene Versionen unter realen Bedingungen funktionieren und wie intuitiv sie für Benutzer sind. Dadurch wird sichergestellt, dass die Software zuverlässig und benutzerfreundlich ist und das Gesamterlebnis verbessert.
Das Design Ihrer Software spielt eine entscheidende Rolle für ihren Erfolg. Durch Vergleichstests können Sie verschiedene Designlösungen bewerten und ermitteln, welches Layout und welche visuellen Elemente die Bedürfnisse und Präferenzen der Benutzer am besten erfüllen.
Leistung ist der Schlüssel zur Software-Effektivität. Vergleichstests messen, wie schnell verschiedene Versionen Daten verarbeiten und Aufgaben abschließen, und stellen sicher, dass Ihre Software die Erwartungen an Geschwindigkeit und Effizienz erfüllt.
Die Effizienz Ihrer Datenbanksysteme ist für einen reibungslosen Betrieb unerlässlich. Vergleichstests bewerten, wie verschiedene Datenbankkonfigurationen mit Daten umgehen, und stellen sicher, dass Ihre Software schnell und zuverlässig ist.
Die Systemarchitektur beeinflusst Skalierbarkeit und Stabilität. Das Testen verschiedener Architekturen durch Vergleiche stellt sicher, dass die Struktur Ihrer Software ihre aktuellen Bedürfnisse und zukünftiges Wachstum unterstützt.
Der erste Eindruck zählt. Durch den Vergleich von Installationsprozessen und Kompatibilität über verschiedene Plattformen und Geräte hinweg stellen Sie sicher, dass Ihre Software einfach einzurichten ist und in verschiedenen Umgebungen nahtlos funktioniert.
Ihre Software muss auf der gesamten unterstützten Hardware gut laufen. Vergleichstests helfen dabei zu überprüfen, ob sie auf der Bandbreite der Geräte, die Ihre Benutzer möglicherweise einsetzen, reibungslos läuft.
Anwendungsfälle für Vergleichstests
Hier sind fünf Testfälle, die Sie nicht verpassen sollten.
Fall 1: Vergleichstests gegenüber Wettbewerberprogrammen zeigen die Marktposition Ihres Programms. Sie helfen dabei, die Vor- und Nachteile Ihres Produkts zu ermitteln, sodass Sie es effektiv positionieren können.
Fall 2: Vergleichen Sie vor der Veröffentlichung von Updates die neue Version mit der alten. So stellen Sie sicher, dass neue Features und Optimierungen das Produkt wirklich verbessern, ohne neue Probleme zu verursachen.
Fall 3: Testen Sie verschiedene Designoptionen, um diejenige zu finden, die die beste Benutzererfahrung bietet. Dies hilft Ihnen, die effektivste Oberfläche für Ihre Benutzer auszuwählen.
Fall 4: Software muss auf verschiedenen Plattformen und Geräten konsistent funktionieren. Vergleichstests stellen sicher, dass Ihre Software unabhängig vom Verwendungsort dasselbe hochwertige Erlebnis bietet.
Fall 5: Ihre Software muss zuverlässig mit einer Vielzahl von Datentypen umgehen. Durch den Vergleich, wie sie verschiedene Datensätze verarbeitet, stellen Sie sicher, dass sie präzise und konsistent funktioniert.
Beispiele für Vergleichstests
Leistungsvergleich von Webbrowsern
Beim Vergleich von Webbrowsern ist die Leistung eine wichtige Metrik. Durch Vergleichstests können Sie bewerten, wie verschiedene Browser mit Aufgaben wie dem Laden von Webseiten, der Ausführung von JavaScript und der Verwaltung mehrerer Tabs umgehen.
Diese Bewertungen helfen Benutzern dabei zu bestimmen, welcher Browser das schnellste und effizienteste Erlebnis bietet, insbesondere bei ressourcenintensiven Anwendungen. Benutzer können basierend auf der besten Leistung den optimalen Browser für ihre Anforderungen auswählen.
Zahlungsgateway-Integration in E-Commerce-Plattformen
Für E-Commerce-Plattformen ist ein nahtloser Zahlungsprozess entscheidend. Vergleichstests ermöglichen es Ihnen, verschiedene Zahlungsgateway-Integrationen zu bewerten, um zu bestimmen, welche den schnellsten, sichersten und benutzerfreundlichsten Transaktionsprozess bietet.
Dazu gehört die Bewertung der Transaktionsgeschwindigkeit, der Kompatibilität mit verschiedenen Zahlungsmethoden und der Integrationsfreundlichkeit. Das Ziel ist es sicherzustellen, dass Kunden ein reibungsloses Checkout-Erlebnis haben, das den Warenkorbabbruch reduziert und Konversionen steigert.
PDF-Zusammenführungssoftware
Bei der Wahl von PDF-Zusammenführungssoftware möchten Benutzer ein Tool, das schnell, zuverlässig und einfach zu bedienen ist. Vergleichstests helfen dabei, zu identifizieren, welche Software diese Kriterien erfüllt, indem Faktoren wie Zusammenführungsgeschwindigkeit, Dateigrößenbeschränkungen und die Fähigkeit zur Handhabung verschiedener PDF-Formate bewertet werden.
CRM-Anwendungsfunktionalität und -leistung
Unternehmen benötigen Customer-Relationship-Management-Lösungen (CRM), aber es gibt große Unterschiede in der Funktionalität und Effektivität dieser Systeme. Bei Vergleichstests werden verschiedene CRM-Anwendungen anhand von Kriterien wie Benutzerfreundlichkeit, Funktionsumfang, Integrationsmöglichkeiten und Reaktionszeit unter starker Last bewertet.
Fazit
Vergleichstests sind eine wesentliche Praxis im Software Engineering und liefern kritische Erkenntnisse, die Innovation fördern und die Leistung verbessern. Sie stellen sicher, dass Ihre Software den höchsten Standards entspricht, was zu einer zuverlässigeren und benutzerfreundlicheren Lösung führt.
Um jedoch dieses Maß an Präzision und Effizienz beim Testen zu erreichen, sind die richtigen Tools erforderlich. Qodex.ai bietet eine hochmoderne Lösung, die den Vergleichstestprozess automatisiert und rationalisiert, sodass Sie sich auf das Treffen von datengesteuerten Entscheidungen mit Zuversicht konzentrieren können.
Ob Sie Ihre Software für Leistung, Benutzerfreundlichkeit oder Zuverlässigkeit optimieren, Qodex.ai verfügt über die Informationen, die Sie benötigen, um in einem wettbewerbsintensiven Marktplatz voraus zu bleiben.
Sind Sie bereit, Ihr Software-Testing auf die nächste Stufe zu heben? Entdecken Sie, wie Qodex.ai Ihren Vergleichstestprozess transformieren kann.
Besuchen Sie unsere Website, um mehr darüber zu erfahren, wie unsere fortschrittlichen Automatisierungstools Ihnen helfen können, erstklassige Software zu liefern, die Erwartungen übertrifft.
Häufig gestellte Fragen
Warum sollten Sie Qodex.ai wählen?
Qodex.ai vereinfacht und beschleunigt den API-Testprozess durch den Einsatz von KI-gestützten Tools und Automatisierung. Hier erfahren Sie, warum es sich hervorhebt:
- KI-gestützte Automatisierung
Erreichen Sie 100% API-Test-Automatisierung, ohne eine einzige Zeile Code zu schreiben. Die hochmoderne KI von Qodex.ai reduziert den manuellen Aufwand und liefert unübertroffene Effizienz und Präzision.
- Benutzerfreundliche Plattform
Importieren Sie mühelos API-Sammlungen aus Postman, Swagger oder Anwendungsprotokollen und beginnen Sie in wenigen Minuten mit dem Testen. Keine steile Lernkurve, keine technischen Vorkenntnisse erforderlich.
- Anpassbare Testszenarien
Ob mit KI-unterstützter Testgenerierung oder manuell erstellten Testfällen: Qodex.ai passt sich Ihren Bedürfnissen an. Erstellen Sie robuste Szenarien, die auf Ihre Projektanforderungen zugeschnitten sind.
- Echtzeit-Überwachung und Berichterstattung
Gewinnen Sie sofortige Einblicke in API-Gesundheit, Testerfolgsraten und Performance-Kennzahlen. Unsere integrierten Dashboards sorgen dafür, dass Sie immer die Kontrolle behalten und Probleme frühzeitig erkennen.
- Skalierbare Kollaborationstools
Qodex.ai wurde für Teams jeder Größe entwickelt und bietet Testpläne, Testsuiten und Dokumentation, die eine reibungslose Zusammenarbeit fördern. Ideal für Startups, Unternehmen und Microservices-Architekturen.
- Kosten- und Zeiteffizienz
Sparen Sie Zeit und Ressourcen, indem Sie manuellen Testaufwand eliminieren. Mit der Automatisierung von Qodex.ai können Sie sich auf Innovation konzentrieren und gleichzeitig die Betriebskosten senken.
- Kontinuierliche Integration/Bereitstellung (CI/CD) Kompatibilität
Integrieren Sie Qodex.ai problemlos in Ihre CI/CD-Pipelines, um konsistentes, automatisiertes Testen während Ihres gesamten Entwicklungslebenszyklus sicherzustellen.
Wie kann ich eine E-Mail-Adresse mit Python regex validieren?
Sie können das folgende regex-Muster zur Validierung einer E-Mail-Adresse verwenden: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Was ist Go Regex Tester?
Go Regex Tester ist ein spezialisiertes Tool für Entwickler zum Testen und Debuggen von regulären Ausdrücken in der Go-Programmierumgebung. Es bietet Echtzeit-Auswertung von regex-Mustern und unterstützt so die effiziente Musterentwicklung und Fehlerbehebung.
Discover, Test, & Secure your APIs 10x Faster than before
Auto-discover every endpoint, generate functional & security tests (OWASP Top 10), auto-heal as code changes, and run in CI/CD - no code needed.
Related Blogs





