Heim  >  Artikel  >  Technologie-Peripheriegeräte  >  Maschinelles Lernen ermöglicht hochwertiges Software-Engineering

Maschinelles Lernen ermöglicht hochwertiges Software-Engineering

PHPz
PHPznach vorne
2023-04-14 16:31:12825Durchsuche

Übersetzer |. Zhu Xianzhong

Rezensent |. Im Laufe der Geschichte des Softwaretests werden Sie jedoch feststellen, dass viele Tests oft auf dem Niveau von Vermutungen bleiben. Mit anderen Worten: Beim Testen stellt sich der Entwickler den Betriebsprozess des Benutzers vor, schätzt die mögliche Belastung ab und analysiert die benötigte Zeit. Anschließend führt er den Test durch und vergleicht die aktuellen Ergebnisse mit der Basisantwort. Wenn wir feststellen, dass keine Regression vorliegt, gilt der aktuelle Build-Plan als korrekt. Fahren Sie dann mit den nachfolgenden Tests fort. Wenn es eine Regression gibt, geben Sie diese zurück. Meistens kennen wir die Ausgabe bereits, obwohl sie besser definiert werden muss – die Grenzen der Regression sind klar und nicht so unscharf. Tatsächlich kommen hier Systeme des maschinellen Lernens (ML) und prädiktive Analysen ins Spiel – und beenden die Mehrdeutigkeit.

Nach Abschluss des Tests prüft der Leistungsingenieur nicht nur das arithmetische Mittel und das geometrische Mittel der Ergebnisse, sondern auch die relevanten Prozentdaten. Wenn das System beispielsweise läuft, werden oft 10 % der langsamsten Anfragen durch Systemfehler verursacht – dieser Fehler führt zu einer Bedingung, die sich immer auf die Geschwindigkeit des Programms auswirkt.

Während wir die in den Daten verfügbaren Attribute manuell in Beziehung setzen können, verknüpft ML die Datenattribute möglicherweise schneller als Sie. Nachdem die Bedingungen identifiziert wurden, die 10 % der fehlerhaften Anfragen verursachen, können Leistungsingenieure Testszenarien erstellen, um das Verhalten zu reproduzieren. Das Ausführen von Tests vor und nach einem Fix kann helfen, zu bestätigen, dass der Fix korrigiert wurde.

Abbildung 1: Gesamtvertrauen in Leistungsindikatoren

Maschinelles Lernen ermöglicht hochwertiges Software-Engineering

Leistung von maschinellem Lernen und Datenwissenschaft

Maschinelles Lernen hilft, die Softwareentwicklung zu fördern und die betreffende Entwicklungstechnologie stärker und benutzerfreundlicher zu machen verschiedene Bereiche und Branchen. Wir können kausale Muster aufdecken, indem wir Daten aus Pipelines und Umgebungen in Deep-Learning-Algorithmen einspeisen. Prädiktive Analysealgorithmen in Kombination mit Performance-Engineering-Methoden ermöglichen einen effizienteren und schnelleren Durchsatz, gewinnen Einblicke in die Art und Weise, wie Endbenutzer Software in natürlichen Szenarien verwenden, und helfen Entwicklern, die Wahrscheinlichkeit zu verringern, dass fehlerhafte Produkte in Produktionsumgebungen verwendet werden. Indem Sie Probleme und ihre Ursachen frühzeitig erkennen, können Sie sie frühzeitig im Entwicklungslebenszyklus beheben und Auswirkungen auf die Produktion verhindern. Insgesamt gibt es hier einige Möglichkeiten, wie Sie Predictive Analytics nutzen können, um die Anwendungsleistung zu verbessern.

  • Ermitteln Sie die Grundursache. Sie können Techniken des maschinellen Lernens verwenden, um die Grundursache von Verfügbarkeits- oder Leistungsproblemen zu ermitteln und sich auf andere Bereiche zu konzentrieren, die Aufmerksamkeit erfordern. Prädiktive Analysen können dann verschiedene Merkmale jedes Clusters analysieren und Einblicke in die Änderungen geben, die wir vornehmen müssen, um eine optimale Leistung zu erzielen und Engpässe zu vermeiden.
  • Überwachen Sie den Anwendungszustand. Der Einsatz maschineller Lerntechnologie zur Durchführung einer Anwendungsüberwachung in Echtzeit hilft Unternehmen, eine Verschlechterung der Systemleistung rechtzeitig zu erkennen und schnell zu reagieren. Die meisten Anwendungen sind auf mehrere Dienste angewiesen, um den Status der gesamten Anwendung zu ermitteln. Vorhersageanalysemodelle sind in der Lage, Daten bei normaler Ausführung der Anwendung zu korrelieren und zu analysieren, um festzustellen, ob es sich bei eingehenden Daten um Ausreißer handelt.
  • Benutzerlast vorhersagen. Wir verlassen uns auf Spitzenbenutzerverkehr, um unsere Infrastruktur so zu skalieren, dass sie der Anzahl der Benutzer gerecht wird, die in Zukunft auf unsere Anwendung zugreifen. Dieser Ansatz weist Einschränkungen auf, da er Änderungen oder andere unbekannte Faktoren nicht berücksichtigt. Prädiktive Analysen helfen dabei, die Benutzerauslastung zu visualisieren und sich besser darauf vorzubereiten, und helfen Teams dabei, ihre Infrastrukturanforderungen und Kapazitätsauslastung zu planen.
  • Prognostizieren Sie Ausfälle, bevor es zu spät ist. Die Vorhersage von Anwendungsausfällen oder -ausfällen, bevor sie auftreten, hilft dabei, vorbeugende Maßnahmen zu ergreifen. Predictive-Analytics-Modelle verfolgen frühere Ausfallszenarien und überwachen weiterhin ähnliche Situationen, um zukünftige Ausfälle vorherzusagen.
  • Hören Sie auf, auf Schwellenwerte zu achten, und beginnen Sie mit der Datenanalyse. Die riesigen Datenmengen, die durch Observability und Monitoring entstehen, erfordern bis zu mehrere hundert Megabyte pro Woche. Auch bei modernen Analysetools muss man vorher wissen, wonach man sucht. Dies führt dazu, dass Teams nicht direkt auf die Daten schauen, sondern Schwellenwerte als Auslöser für Maßnahmen festlegen. Selbst erfahrene Teams suchen nach Ausnahmen, anstatt sich in ihre Daten zu vertiefen. Um dies zu mildern, integrieren wir das Modell mit verfügbaren Datenquellen. Das Modell filtert dann die Daten und berechnet Schwellenwerte im Zeitverlauf. Mit dieser Technik wird das Modell mit historischen Daten gefüttert und aggregiert, wodurch Schwellenwerte bereitgestellt werden, die auf der Saisonalität basieren und nicht von Menschen festgelegt werden. Das Festlegen von Schwellenwerten auf der Grundlage von Algorithmen trägt dazu bei, dass weniger Warnungen ausgelöst werden. Dies führt andererseits auch zu einer besseren Umsetzbarkeit und einem höheren Wert.
  • Datensätzeübergreifend analysieren und korrelieren. Ihre Daten bestehen größtenteils aus Zeitreihen, sodass Sie leichter erkennen können, wie sich einzelne Variablen im Laufe der Zeit ändern. Viele Trends entstehen durch das Zusammenspiel mehrerer Maßnahmen. Beispielsweise verkürzen sich die Reaktionszeiten nur, wenn verschiedene Transaktionen gleichzeitig auf demselben Ziel stattfinden. Für Menschen ist dies nahezu unmöglich, aber richtig trainierte Algorithmen können dabei helfen, diese Zusammenhänge aufzudecken.

Die Bedeutung von Daten in Predictive Analytics

„Big Data“ bezieht sich normalerweise auf einen Datensatz. Ja, es handelt sich um einen großen Datensatz, die Geschwindigkeit nimmt schnell zu und der Inhalt ändert sich stark. Die Analyse solcher Daten erfordert spezielle Methoden, damit wir daraus Muster und Informationen extrahieren können. In den letzten Jahren haben Verbesserungen bei Speicher, Prozessoren, Prozessparallelität und Algorithmendesign dazu geführt, dass Systeme große Datenmengen in angemessener Zeit verarbeiten können, was eine breitere Nutzung dieser Methoden ermöglicht. Um aussagekräftige Ergebnisse zu erhalten, müssen Sie die Datenkonsistenz sicherstellen.

Zum Beispiel muss jedes Projekt das gleiche Ranking-System verwenden. Wenn also ein Projekt 1 als Schlüsselwert verwendet und ein anderes 5 – genau wie wenn Leute „DEFCON 5“ verwenden, um „DEFCON 1“ zu bedeuten, dann sind die Werte ​​muss vor der Verarbeitung normalisiert werden. Prädiktive Algorithmen bestehen aus Algorithmen und den Daten, in die sie einspeisen, und die Softwareentwicklung generiert riesige Datenmengen, die bis vor Kurzem ungenutzt lagen und darauf warteten, gelöscht zu werden. Allerdings können Predictive-Analytics-Algorithmen diese Dateien verarbeiten, um auf der Grundlage dieser Daten Fragen zu Mustern zu stellen und zu beantworten, die wir nicht erkennen können, wie zum Beispiel:

  • Verschwenden wir Zeit damit, ungenutzte Szenarien zu testen?
  • Wie hängen Leistungsverbesserungen mit der Benutzerzufriedenheit zusammen?
  • Wie lange dauert die Behebung eines bestimmten Defekts?

Diese Fragen und ihre Antworten dienen der prädiktiven Analyse – einem besseren Verständnis dessen, was wahrscheinlich passieren wird.

Ein weiterer wichtiger Bestandteil der Predictive Analytics ist der Algorithmus, den Sie sorgfältig auswählen oder implementieren müssen. Es ist von entscheidender Bedeutung, einfach anzufangen, da Modelle tendenziell immer komplexer werden, immer empfindlicher auf Änderungen in den Eingabedaten reagieren und möglicherweise Vorhersagen verzerren. Sie können zwei Arten von Problemen lösen: Klassifizierung und Regression (siehe Abbildung 2).

Klassifizierung
    : Klassifizierung wird verwendet, um das Ergebnis einer Sammlung vorherzusagen, indem Etiketten aus den Eingabedaten abgeleitet werden (z. B „bis Beginnend mit „Down“ oder „Up“) unterteilen Sie die Sammlung in verschiedene Kategorien.
  • Regression
  • : Regression wird verwendet, um das Ergebnis einer Menge vorherzusagen, wenn die Ausgabevariable eine Menge reeller Werte ist. Es verarbeitet Eingabedaten, um Vorhersagen zu treffen – zum Beispiel die Menge des verwendeten Speichers, von Entwicklern geschriebene Codezeilen usw. Die am häufigsten verwendeten Vorhersagemodelle sind neuronale Netze, Entscheidungsbäume sowie lineare und logistische Regression.

Abbildung 2: Klassifizierung und Regression neuronaler NetzeMaschinelles Lernen ermöglicht hochwertiges Software-Engineering

#🎜 🎜#Neuronale Netze lernen anhand von Beispielen und nutzen historische und aktuelle Daten, um den zukünftigen Wert vorherzusagen. Ihre Architektur ermöglicht es ihnen, komplexe, in Daten verborgene Zusammenhänge zu erkennen und so die Art und Weise nachzubilden, wie unser Gehirn Muster erkennt. Sie bestehen aus vielen Schichten, die Daten akzeptieren, Vorhersagen berechnen und die Ausgabe als einzelne Vorhersage bereitstellen.

Entscheidungsbaum

Ein Entscheidungsbaum ist eine Analysemethode, die Ergebnisse in einer Reihe von „Wenn/Dann“-Optionen darstellt, um das Potenzial zu antizipieren Risiken und Vorteile bestimmter Optionen. Es kann alle Klassifizierungsprobleme lösen und komplexe Fragen beantworten.

Wie in Abbildung 3 dargestellt, ähnelt ein Entscheidungsbaum einem Top-Down-Baum, der von einem Algorithmus generiert wird, der jede Komponente identifizieren kann, die die Daten in Zweige aufteilt -ähnliche Partitionen zur Veranschaulichung zukünftiger Entscheidungen und zur Identifizierung von Entscheidungspfaden.

Wenn das Laden länger als drei Sekunden dauert, handelt es sich bei einem Zweig im Baum möglicherweise um einen Benutzer, der seinen Einkaufswagen verlassen hat. Darunter kann ein weiterer Zweig anzeigen, ob es sich um eine Frau handelt. Eine „Ja“-Antwort erhöht den Einsatz, da Analysen zeigen, dass Frauen eher zu Impulskäufen neigen und diese Verzögerung zum Grübeln führen kann.

Abbildung 3: Beispiel für einen Entscheidungsbaum

Lineare und logistische Regression

Maschinelles Lernen ermöglicht hochwertiges Software-Engineering

Regression ist eine der beliebtesten statistischen Methoden. Dies ist von entscheidender Bedeutung bei der Schätzung von Zahlen, beispielsweise wie viele zusätzliche Ressourcen wir während des Black Friday-Verkaufs zu jedem Service hinzufügen müssen. Viele Regressionsalgorithmen sind darauf ausgelegt, Beziehungen zwischen Variablen abzuschätzen und Schlüsselmuster in großen und gemischten Datensätzen sowie die Beziehungen zwischen ihnen zu finden. Es reicht von einfachen linearen Regressionsmodellen (Berechnung einer geraden Linienfunktion, die zu den Daten passt) bis hin zur logistischen Regression (Berechnung einer Kurve) (Abbildung 4).

# 🎜 🎜#lineare und logistische RegressionGesamtvergleich# 🎜 🎜#

#🎜 🎜#lineare Regression

Logistische Regression

wird verwendet, um Werte in einem kontinuierlichen Bereich zu definieren, beispielsweise das Risiko von Benutzerverkehrsspitzen in den nächsten Monaten.

Dies ist eine statistische Methode, bei der Parameter auf der Grundlage alter Sätze vorhergesagt werden. Es eignet sich am besten für die binäre Klassifizierung: Datensätze mit y=0 oder 1, wobei 1 die Standardklasse different darstellt. Sein Name kommt von seiner Konvertierungsfunktion ( ist eine logische Funktion ) .

Es wird als y=a+bx dargestellt, wobei x der Eingabesatz ist, der zur Bestimmung des Ausgangs y verwendet wird. Die Koeffizienten a und b werden verwendet, um die Beziehung zwischen x und y zu quantifizieren, wobei a der Achsenabschnitt und b die Steigung der Geraden ist.

Es wird durch die logistische Funktion dargestellt:


wobei , β0 der Achsenabschnitt β ist 1 ist der Tarif . Es verwendet Trainingsdaten, um Koeffizienten zu berechnen, die den Fehler zwischen vorhergesagten und tatsächlichen Ergebnissen minimieren.

Das Ziel besteht darin, die gerade Linie anzupassen, die den meisten Punkten am nächsten liegt, und so den Abstand oder Fehler zwischen y und der geraden Linie zu verringern.

Es bildet eine S-förmige Kurve, bei der ein Schwellenwert angewendet wird, um die Wahrscheinlichkeiten in binäre Klassifizierungen umzuwandeln.

Maschinelles Lernen ermöglicht hochwertiges Software-Engineering

Abbildung 4: Lineare Regression vs. logistische Regression

Dies sind überwachte Lernmethoden, da der Algorithmus nach bestimmten Eigenschaften sucht. Unüberwachtes Lernen kommt zum Einsatz, wenn Sie kein bestimmtes Ergebnis vor Augen haben, aber mögliche Muster oder Trends erkennen möchten. In diesem Fall analysiert das Modell so viele Merkmalskombinationen wie möglich, um Korrelationen zu finden, auf die der Mensch reagieren kann. Abbildung 5: Überwachtes vs. unüberwachtes Lernen Sobald alle Informationen gesammelt sind, müssen sie gespeichert und mithilfe geeigneter Tools und Algorithmen analysiert werden. Zu diesen Daten können Fehlerprotokolle, Testfälle, Testergebnisse, Produktionsereignisse, Anwendungsprotokolldateien, Projektdokumente, Ereignisprotokolle, Ablaufverfolgungen und mehr gehören. Wir können dies dann auf die Daten anwenden, um verschiedene Erkenntnisse zu gewinnen:

Maschinelles Lernen ermöglicht hochwertiges Software-Engineering

Fehler in der Umgebung analysieren

Auswirkungen auf das Kundenerlebnis bewerten

Problemmuster identifizieren

  • Genauere Tests erstellen Szenarien und mehr
  • Diese Technologie unterstützt einen Shift-Left-Ansatz für Qualität, der es Ihnen ermöglicht, die Zeit vorherzusagen, die für die Durchführung von Leistungstests benötigt wird, die Anzahl der Fehler, die identifiziert werden können, und die Anzahl der Fehler, die daraus resultieren können in der Produktion, wodurch eine bessere Abdeckung von Leistungstests erreicht und ein realistisches Benutzererlebnis geschaffen wird. Benutzerfreundlichkeits-, Kompatibilitäts-, Leistungs- und Sicherheitsprobleme können verhindert und behoben werden, ohne dass dies Auswirkungen auf die Benutzer hat. ...
  • Defekt Ist er reproduzierbar
  • Sobald Sie dies wissen, können Sie Änderungen vornehmen und Tests erstellen, um ähnliche Probleme schneller zu verhindern.

Fazit

Softwareentwickler haben seit den Anfängen der Programmierung Hunderte von Annahmen getroffen. Doch die digitalen Nutzer von heute sind sich dessen bewusster und weniger tolerant gegenüber Fehlern und Misserfolgen. Andererseits bemühen sich Unternehmen auch darum, durch maßgeschneiderte Dienste und komplexe Software, die immer schwieriger zu testen ist, ansprechendere und ausgefeiltere Benutzererlebnisse zu bieten.

Heutzutage muss alles reibungslos funktionieren und alle gängigen Browser, Mobilgeräte und Apps unterstützen. Schon ein Absturz von nur wenigen Minuten kann Schäden in Höhe von mehreren Tausend oder Millionen Dollar verursachen. Um das Auftreten von Problemen zu verhindern, müssen Teams Observability-Lösungen und Benutzererfahrung während des gesamten Softwarelebenszyklus integrieren. Die Verwaltung der Qualität und Leistung komplexer Systeme erfordert mehr als nur die Ausführung von Testfällen und Lasttests. Mithilfe von Trends können Sie feststellen, ob und wie schnell eine Situation unter Kontrolle ist, sich verbessert oder verschlechtert. Die Technologie des maschinellen Lernens kann dabei helfen, Leistungsprobleme vorherzusagen, damit Teams korrigierende Anpassungen vornehmen können. Lassen Sie uns abschließend mit einem Zitat von Benjamin Franklin abschließen: „Eine Unze Prävention ist ein Pfund Heilung wert.“ Universität in Weifang und ein Veteran in der freiberuflichen Programmierbranche.
  • Originaltitel:
  • Performance Engineering Powered by Machine Learning
  • , Autor:

Das obige ist der detaillierte Inhalt vonMaschinelles Lernen ermöglicht hochwertiges Software-Engineering. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen