Lautsprecher | Transkript |
| Serkay Olmez | Hallo, hier sind Serkay und Fred von Seagate. Heute werden wir darüber sprechen, wie wir ein JSL-Ökosystem zur Verwaltung unserer JSL-Skripte aufgebaut haben. |
| Deshalb verwenden wir Git, um die Quellcodeverwaltung, die Quelle unserer JSL-Skripte, zu verwalten und sie zu verteilen. Das wird also der Hauptpunkt des heutigen Vortrags sein. |
| Darüber hinaus werde ich aber auch über die Integration von VBA für PowerPoint und die Erfassung von Absturzprotokollen sowie Komponententests sprechen. Ich werde schnell zur Gliederung springen. |
| Worüber ich zunächst sprechen möchte, ist unsere Geschichte, JSL. Ich schreibe seit ungefähr 10 Jahren Skripte in JSL. |
| Und wir sind sehr zufrieden damit, wo wir jetzt stehen, aber es hat ziemlich lange gedauert, bis wir hierher gekommen sind, und ich möchte über die Meilensteine unserer Erfahrung sprechen, was wir bisher getan haben und warum wir das getan haben. |
| Und dann sprechen wir über Git und darüber, wie wir Git in die Lage versetzt haben, die Quellcodeverwaltung für unsere JSL-Skripte zu übernehmen und wie es uns ermöglicht hat, weitere Funktionen zu entwickeln. Wenn Sie beispielsweise Git aktivieren, |
| Sie können weitere Funktionen hinzufügen, z. B. die Überwachung Ihrer Skripte. So wissen Sie, dass die Entwickler wissen, dass ihre Skripte verwendet werden, und so die Nutzung überwachen können. |
| Und was wahrscheinlich noch wichtiger ist: Sie können auch Protokolle sammeln. Wenn das Skript abstürzt, erfährt der Entwickler Bescheid und kann die Fehler beheben. Und du kannst... |
| Sie können eine weitere Funktion hinzufügen, die noch einen Schritt weiter geht. Sie können sogar automatisierte Bug-Tickets erstellen, wenn Sie bereits wissen, dass Ihr Skript abgestürzt ist. Sie können dafür also automatisch ein Bug-Ticket erstellen. Und Sie können diese Tickets mit einer Tracking-Software wie JIRA oder Atlassian verfolgen. |
| Am Ende komme ich zu unseren Best Practices und den bisher gewonnenen Erkenntnissen. |
| Also, |
| Und im Anhang habe ich auch ein Handbuch für ein Skript, über das ich sprechen werde. Es handelt sich um ein Skript, das Bilder an PowerPoint übertragen kann. |
| Dazu habe ich ein sehr detailliertes Handbuch, und ich möchte Sie einfach darüber informieren, dass alles, worüber ich hier spreche, die Daten und die Skripte verfügbar sein werden. |
| Und sie werden in einem öffentlichen Repository im Abschnitt „Referenzen“ hier veröffentlicht, und Sie können einfach dorthin gehen und diese Dateien abrufen, wenn Sie dies wünschen. Lassen Sie mich also damit beginnen |
| mit der kurzen Geschichte hier. Also 10...Ich arbeite seit ungefähr 10 Jahren mit JSL und habe damit angefangen |
| sehr Grundlagen und ich wusste nicht wirklich viel über JSL-Skripting. |
| Und wenn Sie dann damit beginnen, stellen Sie fest, dass Sie über eine ordnungsgemäße Quellcodeverwaltung verfügen müssen und geeignete Methoden zur Verteilung Ihrer Skripte benötigen. |
| Das Besondere an der JMP-Skripterstellung ist, dass es keinerlei Eintrittsbarrieren gibt. Sie können also buchstäblich manuell eine Handlung erstellen und sich dann das Drehbuch holen. Es ist für Sie geschrieben. |
| Und Sie können auch Community to JMP auf JMP.com nutzen, um Fragen zu stellen und Antworten zu erhalten. |
| Und Sie ... die Skripterstellung ist so effizient, dass Sie Ihre Arbeit so effizient erledigen, und die Leute werden es bemerken. Sie werden Sie fragen, wie Sie die Dinge machen, und Sie werden sagen, dass ich dafür ein Drehbuch habe. Und das werden sie |
| Fragen Sie: „Können Sie das mit mir teilen?“ Und plötzlich wird man zum Entwickler, obwohl man das gar nicht vorhatte. |
| Und dann müssen Sie sich um die Verbreitung Ihrer Skripte kümmern. Die erste Idee, die mir in den Sinn kommt, ist, sie einfach anzubringen, was eine schreckliche Idee ist, und das mache ich schon eine ganze Weile. |
| Und es ist ziemlich offensichtlich, warum das keine gute Idee ist, denn man hängt ein Skript an, verschickt es und erstellt am nächsten Tag ein Skript |
| Überarbeitung und dann müssen Sie es erneut senden, und Sie wissen nicht einmal, ob der Benutzer mit der nächsten Version einverstanden ist. Deshalb veranschauliche ich hier nur den Punkt. |
| Kürzlich erhielt ich eine E-Mail von einem Kollegen und er bezog sich auf ein Skript, das ich 2017 erstellt hatte, und ich habe meine Skripte nur damit nummeriert |
| Versionsnummern angeben, was keine gute Idee ist. Also kommt es nach drei, vier Jahren wieder und man merkt, dass die Leute immer noch drei Jahre alte Skripte verwenden, weil sie nicht aktualisiert haben. |
| Eine Möglichkeit, dieses Problem zu lösen, besteht darin, Shared Drive zu verwenden und auf der Interaktion zu basieren, die ich mit Menschen darin hatte |
| Discovery Summits ist, dass viele Menschen, viele Unternehmen dieses nutzen. Was Entwickler also tun, ist |
| Legen Sie ihre Skripts in einem freigegebenen Laufwerk ab, und die Benutzer laden sie direkt vom freigegebenen Laufwerk herunter, was die Hälfte des Verteilungsproblems löst, sich aber nicht auf die Quellcodeverwaltung auswirkt. Sie können die Änderungen, die Sie am Code vorgenommen haben, nicht nachvollziehen. |
| Und deshalb sind wir tatsächlich auf Git umgestiegen. Und das war ein Durchbruch für uns und ermöglichte viele Funktionen. Was Sie also mit Git machen, ist, dass Entwickler ihre Skripte in ein Repository verschieben und |
| Benutzer beziehen ihre Skripte direkt aus Git. Das war eine große Verbesserung für uns und ermöglichte uns das Sammeln von Absturzprotokollen und |
| Verwendung der Skripte usw. Und ich möchte noch über ein paar weitere Dinge sprechen, die ich bei den Summits gelernt habe. Sie waren sehr nützlich, um meine Skriptfähigkeiten zu verbessern, und ich nahm 2018 an einem Gipfel teil und lernte einiges über Ausdrücke usw. Also |
| Die Leute möchten vielleicht noch einmal zurückgehen und sich diese Präsentationen anhören, weil sie bei den Skriptfähigkeiten helfen. |
| Und ein weiterer Meilenstein für uns waren die Tests. Daher wurde ich von diesem Vortrag auf dem Summit im letzten Jahr inspiriert, bei dem es um Unit-Tests ging und der es Ihnen ermöglicht, Ihre Skripte automatisch zu testen, bevor Sie sie veröffentlichen. |
| Heute werde ich hauptsächlich über Integrationstests sprechen, weil Unit-Tests...Unit-Tests sind erforderlich, aber nicht ausreichend. |
| Da Sie einen Unit-Test durchführen können, können Sie alle Ihre Module testen und sie funktionieren einwandfrei. Aber wenn man sie zusammenfügt, funktionieren sie nicht. Sie werden abstürzen, wie hier dargestellt. Wahrscheinlich wird jede Schublade getestet, aber wenn man sie zusammenbaut, funktionieren sie nicht. |
| Eine nette Funktion, die dem Entwickler sehr hilft, ist die Protokollsammlung. |
| Es ist sehr hilfreich zu wissen, dass Ihr Skript abgestürzt ist und wie es abgestürzt ist. Und Sie können dies tun, indem Sie die Protokolle von Benutzern sammeln und dann Ihr Skript korrigieren und die Änderungen übertragen, und die Benutzer erhalten sofort ihr korrigiertes Skript. |
| Und die letzte Funktion, die wir vor Kurzem eingeführt haben, betrifft die automatisierte Fehlerberichterstattung. Da Sie bereits über den Absturzbericht verfügen, warum nicht auf der Grundlage dieser Informationen handeln? Und so erstellen wir eine automatisierte |
| Überwachung |
| System, das diese Absturzprotokolle verfolgt und automatisch Fehlerberichte erstellt, damit der Entwickler daran arbeiten kann. Darüber hinaus können Sie den Benutzer als Beobachter hinzufügen, sodass der Benutzer weiß, dass jemand an dem Problem arbeitet. Das ist also die Lösung |
| Dadurch wird die Informationslücke zwischen Benutzer und Entwickler geschlossen. |
| Das zeigt also die Zeitleiste und ich werde einige Zeit damit verbringen |
| zu den einzelnen Elementen, aber wir beginnen mit Git und ich werde dies schnell erstellen und Fred damit sprechen lassen. |
| 163084 | Okay. |
| Also, |
| Git ist nur ein Versionskontrollsystem, und ich verwende das Wort Versionskontrolle nicht. Eigentlich möchte ich sagen, dass Git Ihnen hilft, indem es Ihnen effektiv unbegrenzte Wiederholungen ermöglicht, selbst wenn Sie Git nur auf Ihrem eigenen lokalen Computer verwenden. Es |
| gibt Ihnen die Möglichkeit, Revisionen Ihrer Dateien zu verfolgen und zu alten Dateien zurückzukehren, falls Sie feststellen, dass einige Arbeiten, die Sie in den letzten Wochen durchgeführt haben, fehlerhaft waren und Sie zu etwas von vor einigen Wochen zurückkehren möchten. |
| Git ist also nur eine Software, die Sie auf Ihrem lokalen Computer installieren. Es erstellt ein Repository, und dieses Repository kann dann in anderen Repositorys veröffentlicht werden. |
| Wie GitLab oder GitHub. TortoiseGit ist eine GUI-Schnittstelle für den Zugriff auf Ihren lokalen Computer, die die Arbeit vereinfacht. Wenn du also, Serkay, die nächste Folie öffnen könntest. |
| Das Modell, das ich Entwicklern zur Verwendung verhelfen wollte, befindet sich also auf ihrem lokalen Computer. Lassen Sie die Entwickler vor Ort den Git-Client installieren und starten |
| Versionskontrolle der Dateien auf ihrem lokalen PC. Sobald sie sich daran gewöhnt haben, können wir sie mit einem Remote-Repository verbinden |
| und Git stellt eine Verbindung zu Remote-Repositorys oder SSH im Allgemeinen oder anderen Methoden her und sie können pushen |
| Kopien ihrer Git-Datenbank in das Remote-Repository hochladen. Sobald es im Remote-Repository verfügbar ist, steht es für einen HTTP-Webserver zum Zurückgeben und JMP zur Verfügung |
| kann dann auf die URLs und den HTTP...HTTP-Webserver verweisen und Skripte von dort laden. Anstatt also ein freigegebenes Laufwerk zu verwenden, verwenden wir einen HTTP-Webserver, der durch einen Push an ein Git-Repository gefüllt wurde. |
| Und dann verdeutlichen die Aufzählungspunkte unten nur die Vorteile und die genaue Funktionsweise. |
| Wir können zur nächsten Folie gehen. |
| Serkay Olmez | Also übernehme ich hier, Fred, und ich zeige dir ... zeige eine sehr einfache Illustrationsimplementierung, und die Skripte sind in den Referenzen verfügbar. |
| Also, |
| Dies wird ein sehr einfacher Code sein. Und was ich hier zeige, ist der Code, den der Entwickler entwickelt. Es ist das absolute Minimum, richtig. Es ist nur ein Dialogfeld mit der Aufschrift „Hallo Welt“. |
| Und gehen wir davon aus, dass der Entwickler diesen Code an Benutzer weitergeben möchte. Anstatt also diesen Code anzugeben, übergibt der Entwickler diesen Code: |
| Das ist ein Link zum Repository. Das ist also das Repository für das Hallo-JSL-Skript, das sich dort befindet ... |
| im Remote-Repository. Was der Benutzer tut, ist, es einfach zu greifen ... der Benutzer greift danach |
| Skript von der URL. Das ist also statischer Code. Es sind keine Änderungen erforderlich, sodass der Entwickler das Skript jederzeit ändern kann, der Benutzer jedoch nichts tun muss. Und ich zeige Ihnen hier nur eine Illustration und möchte nur zum Vollbildmodus wechseln. |
| Veranschaulicht nur, wie dieses Ding mit einer bestimmten GUI funktioniert, nämlich GitHub Desktop. Was Sie also tun, ist, dies zu installieren |
| Installieren Sie die Software auf Ihrem Computer und erstellen Sie ein lokales Repository. Die von Ihnen vorgenommenen Änderungen werden dann protokolliert. In diesem Fall habe ich beispielsweise gerade dieses Hallo-JSL-Skript erstellt |
| und diese Software wird erkennen, dass es eine Änderung gibt, und sie wird diese automatisch hervorheben. Und was Sie tun, ist, dass Sie es zunächst in Ihr lokales Repository übertragen. |
| Dadurch werden diese Dinge in Ihr lokales Repo verschoben, und dann werden Sie sie zum Ursprung hochschieben, bei dem es sich um ein Remote-Repository handelt. Jetzt werde ich es auf die Fernbedienung übertragen, damit es den Benutzern zur Verfügung steht. |
| Sobald Sie das getan haben, können die Benutzer nun diesen neuen Code abrufen. Und ich wechsle jetzt hier wieder zur Benutzerrolle und dies ist das Skript, das der Benutzer ausführt, und wenn ... Sie das tun, wird das Dialogfeld angezeigt. Sie führen also das Skript aus, das Sie aus dem Repository abgerufen haben. |
| Deshalb werde ich dies mit einem fortgeschritteneren Code, der auch mit PowerPoint zusammenhängt, etwas besser veranschaulichen. |
| Die Leute führen also viele Analysen in JMP durch und viele Leute wollen ihre Ergebnisse letztendlich immer noch in PowerPoint übertragen. Ich weiß, dass JMP einige Fähigkeiten hat, die es zu pushen gilt |
| Bilder direkt in PowerPoint, aber wir wollten etwas mehr ... etwas Anspruchsvolleres. Wir wollen |
| Verwalten Sie die PowerPoint-Vorlage. Wir möchten noch einige weitere Dinge in PowerPoint erledigen, entscheiden, wie viele, wie viele Bilder wir pro Folie einfügen möchten usw. Und |
| Dazu müssen Sie zunächst JMP mit PowerPoint verbinden, und das geht eigentlich sehr ... |
| auf eine sehr gute Art und Weise, sodass Sie JMP nicht einmal verlassen müssen. Was Sie also tun können, ist, herauszufinden, wo sich Ihre ausführbare PowerPoint-Datei befindet. Normalerweise befindet sie sich unter „Programme“. |
| Und dann erstellen Sie eine Batch-Datei, die diese ausführbare PowerPoint-Datei auslöst, und sie holt sich die PowerPoint-Datei, die Sie ausführen möchten, und führt sie einfach aus. All dies können Sie also in JMP tun. Im Wesentlichen wird dabei nach der ausführbaren PowerPoint-Datei gesucht. |
| Und sobald es es gefunden hat, bündelt es es in dieser Batchdatei. Und es enthält auch den Pfad zu dem PowerPoint, das Sie ausführen möchten |
| und das Makro, und so verfügt PowerPoint über ein Makro, das die Verwaltung innerhalb von PowerPoint übernimmt. So geht es dir also |
| Wenn Sie JMP mit PowerPoint verknüpfen, müssen Sie dafür sogar JMP verlassen. Die Frage ist jedoch: Wie bringen Sie diese PowerPoint-Datei überhaupt zu Ihren Benutzern? Sie könnten |
| Bitten Sie ihn, es herunterzuladen, was nicht ideal ist, da Sie dies automatisch verwalten und gleichzeitig auch die Quellcodeverwaltung für PowerPoint übernehmen möchten. Es muss also ein guter Kandidat sein; Es muss ein guter Teil des gesamten Ökosystems sein. Sie möchten es nicht nach draußen stellen. |
| Und eine weitere Voraussetzung ist, dass Sie PowerPoint nicht jedes Mal herunterladen möchten, wenn das Skript ausgeführt wird. Sie möchten PowerPoint also nur herunterladen, wenn sich in diesem Bild-Repository etwas geändert hat oder etwas Neues mit PowerPoint passiert. |
| Eine Möglichkeit, dies zu tun, besteht darin, dieses kleine JMP-Skript zu verwenden, einen JMP-Befehl, der das Erstellungsdatum angibt. Was ich hier also mache, ist zu überprüfen |
| das Datum der lokalen Datei. Wenn das lokale PowerPoint also älter ist als das, was ich im Repository habe, werde ich es herunterladen. Also |
| Es wird das PowerPoint über eine HTTP-Anfrage herunterladen und es |
| sieht ungefähr so aus. Sie überprüfen also einfach Ihr PowerPoint auf Ihrem lokalen Computer. Wenn es nicht vorhanden ist, können Sie es einfach per HTTP-Anfrage aus dem Repository abrufen. Wenn es existiert, schauen Sie sich gerne das Datum an, und wenn es alt ist, gehen Sie trotzdem hin |
| Ziehen Sie den neuen. Die Quintessenz hier ist also, dass Sie PowerPoint nahtlos in die JMP-Umgebung integrieren können, sodass Sie Ihre Ergebnisse, einschließlich Tabellen und Bilder, in JMP übertragen können. Und Sie können dies alles tun, ohne die Quellcodeverwaltung zu unterbrechen, und ich werde hier eine Demonstration zeigen. |
| Dies ist also beispielsweise der Code, den Sie Ihren Benutzern geben würden. Auch hier handelt es sich um statischen Code. Es hat eigentlich nichts außer einer URL, die vom Skript auf das Remote-Repository verweist. Also wird es gehen und sich das schnappen |
| JMP-Skript aus dem Repository und diese Skripte sind wieder verfügbar und Sie können sie einfach aus den Referenzen abrufen. |
| Von Seiten der Entwickler ist dies das eigentliche Skript, richtig. Dies ist das Skript, das der Entwickler entwickelt hat und |
| er oder sie verschiebt es in das Remote-Repository. Und das Schöne an diesem Skript ist, dass ich hier nur kurz auf ein paar Funktionen hinweisen möchte. |
| Schauen Sie sich zum Beispiel das hier an. Dies ist ein eigenständiges Textskript und Sie müssen keine PowerPoint-Dateien oder zusätzliche Skripte verteilen |
| separat. Sie verknüpfen sie in Ihrem Skript und sie werden hier im Repository verlinkt. |
| inklusive PowerPoint. Dieses Skript verwaltet also die gesamte Verteilung. Also wird es losgehen und sich die PowerPoint-Präsentation holen. |
| Bei Bedarf werden weitere zusätzliche Dateien abgerufen. Alles ist also im Skript gebündelt, sodass die gesamte Verwaltung für Sie erledigt wird. Lassen Sie mich das kurz zeigen. Ich werde das zurückziehen |
| und stellen Sie es in den Vollbildmodus |
| damit Sie klar sehen können. Dies ist also eine Demonstration des automatischen Auslösens von PowerPoint |
| dafür für einen bestimmten Fall. Und was dieses Skript tut, ist, dass es die Pfade aus der Tabelle abruft, dies ist eine JMP-Tabelle, die viele Bildpfade enthält, und diese beziehen sich speziell auf dieses |
| Server, und es werden diese Pfade und nur die hier hervorgehobenen Pfade verwendet und sie in PowerPoint übertragen. |
| Ich werde dies einfach ausführen und dieses Skript steht Ihnen zur Verfügung, wenn Sie es ausprobieren möchten. Und es ist ein voll funktionsfähiges, nützliches Skript. Also, und ich führe das aus |
| Skript hier. Auch hier bezieht es sich auf das Repository. Es gibt also kein Zeilenskript, sondern ruft es einfach aus dem Repository ab. Sie führen es aus, es ruft den Code ab und führt einen Dialog aus. |
| Und ich werde das einfach ausführen. Ich werde nicht auf die Details eingehen. Sobald Sie es ausführen, wird PowerPoint automatisch gestartet. |
| Und PowerPoint wird gestartet und dann wird es ... es beginnt ... es baut hier die Folien auf. Es werden 20 Bilder abgerufen und dies dauert 10 oder 20 Sekunden, und dann haben Sie PowerPoint |
| Erledigt. Das ist also das PowerPoint, das Sie erhalten, und alles wird automatisch erledigt und alles wurde aus dem Repository abgerufen. |
| Was kommt also als nächstes? Wie würden Sie diese PowerPoint-Präsentation überarbeiten? Ich gehe also davon aus, dass Sie einige Änderungen an Ihrer Vorlage vornehmen möchten. Und |
| Weitere Details dazu finden Sie im Anhang. Ich möchte jedoch zeigen, wie Sie das ändern |
| Skript in PowerPoint. Und ich gehe zum Vollbildmodus, |
| und ich werde das einfach ausführen. Wir beginnen mit dem, was uns auf der vorherigen Folie geblieben ist, rechts, Sie hatten also diese Bilder. |
| Was ich tun möchte, ist, die Vorlage auf triviale Weise zu ändern und nur den Punkt zu veranschaulichen. Also gehst du zu... |
| Sie gehen zum Makro, scrollen nach unten und finden das, was Sie ändern möchten, und ich werde hier eine einfache Änderung vornehmen. Ich werde die Farbe der Kopfzeile ändern, nur um es deutlich zu machen, richtig. Also ändern Sie das |
| Und |
| Speichern Sie es. Und das geschieht in Echtzeit. |
| Sie speichern dies und können die Folien löschen, damit sie schneller zum Repository gelangen, da Sie diese in das Repository übertragen. |
| Und dann veröffentlichen Sie dies mithilfe der Git-GUI. Es wird in das Repository verschoben |
| und es wird es Ihren Benutzern zur Verfügung stellen. So erhalten alle Ihre Benutzer die Änderung sofort. Sie müssen sie also nicht bitten, PowerPoint oder ähnliches zu aktualisieren. |
| Dies geht nur in das Repository. |
| Und ich werde zurück zu JMP und in den Benutzermodus wechseln und dann das Skript erneut ausführen, wodurch das neue PowerPoint abgerufen wird. |
| Und wenn Sie es erneut ausführen, wird es durchgehen |
| Wenn Sie eine Folie hinzufügen, wird die Folie erstellt. Und was Sie bemerken werden, ist, dass Sie die Änderungen vorgenommen haben, bei denen es um die Änderung der Farbe der Kopfzeile ging. |
| Also, |
| Was haben wir sonst noch? |
| Skriptüberwachung. Ich denke, dass dies eine der besten Funktionen war, die wir entwickelt haben, da sie dem Entwickler die Möglichkeit gibt, zu sehen, ob |
| ihr Drehbuch... seins, sein Drehbuch wird geschätzt oder nicht. Rechts. Also läuft es? Läuft es jemand regelmäßig? |
| Das ist also ein Vorteil. Der andere Vorteil ist ca |
| log...Absturzprotokollsammlung. Wenn das Skript also fehlschlägt, können Sie den Fehler mithilfe dieser Protokollerfassungsfunktion von JMP erfassen. Sie ordnen Ihre Unterroutinen also der Protokollerfassung zu. |
| Wenn der Fehler fehlschlägt, wird das Protokoll des Fehlers in diesen Protokolltext zurückgegeben. Und was du dann auch tust, bist du selbst |
| Fügen Sie es in einen Versuch ein, damit das Skript weiterhin für die Berichterstattung verfügbar ist. |
| Und dann prüfen Sie, ob es leer ist. Wenn es leer ist, bedeutet das, dass überhaupt kein Absturz aufgetreten ist und Ihre Skripte überlebt haben. |
| Aber wenn nicht, wenn es nicht leer ist, bedeutet das, dass es einen Absturz gab und Sie ihn eingedämmt haben. Sie können sich das Protokoll holen und es jetzt melden. Und der Weg dazu ist die Verwendung von HTTP |
| Benutzer-ID, der Skriptname und die Protokollnotiz, ob es sich um einen Absturz handelt ... |
| Ob es ein Absturz war oder nur ein normaler Lauf, vielleicht einige Leistungsmetriken. Das Endergebnis ist also, dass Sie einige Datenmetadaten zu Ihrem Skript an den Entwickler zurückübermitteln können. |
| Und was der Server tun wird, ist, sie zu protokollieren und Sie haben eine Reihe von Dateien auf dem Server gespeichert, die Sie überwachen können. Und ich zeige nur ein Beispiel |
| Tisch daraus. Es handelt sich um ein Absturzprotokoll mit einem Datumsstempel und einem Skriptnamen, sodass dieses Skript an diesem Datum fehlgeschlagen ist |
| mit diesem besonderen Absturz. Dies ist für den Entwickler äußerst nützlich, da er oder sie das Problem beheben kann. Also werde ich dies und das reduzieren und hier eine kurze Demonstration machen, die zeigt, wie Sie |
| wie du |
| den Absturz enthalten und wie Sie ihn dem Benutzer melden. Was ich hier also tun werde, ist, ein Unterprogramm zum Absturz zu bringen. Ich werde einen undefinierten Parameter erstellen |
| und JMP wird sich beschweren. Es wird angezeigt, dass dieses Ding nicht definiert ist, sodass das Skript abstürzt. Aber was ich tun werde, ist, dass ich diese Unterroutine aufrufen werde |
| in einer Protokollerfassungsfunktion und alles wird unter Versuch eingeklemmt. Obwohl das Skript mit der Subroutine abgestürzt ist, bleibt es insgesamt bestehen und kann einen Fehler melden |
| Unfallbericht. Geben Sie dem Benutzer also eine schön formatierte Benachrichtigung und sagen Sie das. Daher stürzen die Skripte mit diesem speziellen Fehler ab und wir haben ein Protokoll dafür erstellt und arbeiten daran. Das ist also die Benachrichtigung, die Sie ihnen geben … dem Benutzer. |
| Eines der wichtigsten Dinge, die ich bei den Summits gelernt habe, war das automatisierte Testen. Deshalb habe ich meine Tests immer manuell durchgeführt, was sehr frustrierend war. |
| Weil es Zeit braucht und Sie nicht jede einzelne Ecke Ihres Skripts erfassen können. Es ist unmöglich, stundenlang zu testen, wenn man nur eine kleine Änderung vornimmt. |
| Also fing ich an, mich mit automatisierten Tests zu befassen, und es ist sehr wichtig, Unit-Tests durchzuführen. Unter Testen versteht man also das Testen einzelner Unterprogramme. Sie haben also eine Funktion und möchten sie testen |
| mehrmals, bevor Sie es in Ihr Gesamtsystem integrieren, damit Sie diese Unit-Tests durchführen können |
| für einzelne Module, aber das wird nicht ausreichen. Und ich kann Ihnen ein paar Beispiele dafür zeigen. |
| Zum Beispiel hat die NASA ihren Mars Climate Orbiter aus einem sehr seltsamen Grund verloren ... aufgrund eines sehr seltsamen Fehlers, denn es gab zwei Softwareteams, eines in Europa, |
| einer in den USA. Und einer von ihnen arbeitete mit der Einheit Pfund, und zwar mit der in den USA und in Europa |
| benutzte Newton. Also haben sie auf jeden Fall ihre Unit-Tests durchgeführt. Aber als sie ihren Code zusammenstellten, funktionierte es nicht, weil einer Newton erwartete und der andere Pfund bekam. Sie haben also buchstäblich das verloren |
| Orbiter, nur weil sie vergessen haben, von Pfund in Newton umzurechnen. Und vor kurzem verlor Boeing als Starliner seinen Starliner und gab dann zu, dass sie den Fehler hätten erkennen können, wenn sie es getan hätten |
| ein strenger Integrationstest. Und am Ende zählt das |
| Integrationstest, da Module im Skript nicht alleine leben, sondern miteinander kommunizieren. |
| Und das ist hier eine lustige Veranschaulichung des Problems. So können Sie zwei Objekte haben, die gründlich getestet werden. Es ist ein Fenster, richtig, was kann mit einem Fenster schiefgehen? |
| Wenn Sie jedoch zwei davon zusammengefügt haben, lassen sie sich nicht einmal öffnen. Daher müssen Sie einige Integrationstests durchführen, um zu sehen, ob sie kombiniert werden und ob sie einwandfrei zusammenarbeiten. |
| Und ich möchte hier einen kurzen Punkt veranschaulichen, der zeigt, wie ich mit dem automatisierten Testen begonnen habe. Und dies bezieht sich auf einen bestimmten Fall, nämlich |
| Fairerweise muss man sagen, dass dies ein schwieriger Fall ist, da es sich hier um das Testen eines modalen Fensters handelt und modale Fenster nicht verschwinden, es sei denn, Sie klicken auf eine Schaltfläche. Also musst du |
| Erstellen Sie ein JMP-Skript, das auf eine Schaltfläche klickt, das ein menschliches Verhalten nachahmt, und was ich hier mache, ist, einen Tester in das einzuschleusen |
| Modales Fenster hier. Und das Schöne an diesem Ansatz ist meiner Meinung nach, dass man trotzdem verteilen kann |
| Dieses Ding, dieses Skript für Ihre Benutzer und die Benutzer werden nicht einmal erkennen, dass darin tatsächlich eine Testroutine enthalten ist. |
| Es verfügt also über die Haken für einen Tester, aber wenn Sie es alleine ausführen, sucht es nach diesem Testmodusparameter, der jedoch nicht festgelegt ist. |
| Wenn es also nicht gesetzt ist, setzt das Skript es auf Null, wodurch alle Hooks in der Tabelle deaktiviert werden. Sie können dies also Ihren Benutzern geben und sie können es so ausführen. |
| Wenn Sie Ihr Skript jedoch testen möchten, erstellen Sie darauf einen Testercode. Der Testercode setzt also den Testmodus auf eins und erstellt auch den Tester ... |
| Testerobjekt, das Sie in Ihr Skript einfügen möchten. In diesem speziellen Fall wird beispielsweise eine bestimmte Spalte ausgewählt |
| und dann wird es durch Klicken auf eine Schaltfläche einer Rolle zugewiesen und dann wird das Skript ausgeführt, richtig. Das ist also im wahrsten Sinne des Wortes eine Nachahmung eines menschlichen Verhaltens. |
| Dann wird das eigentliche Skript geladen. Es geht also im Grunde darum, die Parameter in das Skript einzufügen, die Sie testen möchten. Jetzt führen Sie das Skript automatisch aus, sodass das Skript geladen und ausgeführt wird und die Benutzeroberfläche geschlossen wird, nachdem auf diese und jene Schaltfläche geklickt wurde. |
| Und dann führen Sie es erneut in einer Protokollerfassungsfunktion aus, damit Sie wissen, dass Sie den Fehler erfassen, wenn etwas schief geht. |
| Und Sie geben es auch in den Eingabeversuch ein, damit das Skript insgesamt überlebt, um das Protokoll zu melden. Und wenn dann nichts falsch war, wird ein leeres Protokoll zurückgegeben, und das bedeutet, dass Ihr Skript nicht fehlgeschlagen ist. |
| Wenn etwas schief gelaufen ist, erkennen Sie es in der Protokollerfassung. Das ist also die Idee. |
| Also, |
| Wir haben |
| die Möglichkeit, die Skripte zu überwachen. Wir haben die Fähigkeit dazu |
| Protokolle von Abstürzen erfassen. Also dachten wir: Warum reagieren wir nicht auf das Absturzprotokoll? Wenn Sie ein Absturzprotokoll sehen, das bedeutet, dass etwas schief gelaufen ist, und ein Skript, das … der Benutzer weiß das bereits, weil das Skript offensichtlich abgestürzt ist, und der Entwickler weiß, dass das Skript abgestürzt ist, weil die Protokolle es sind |
| auf einem Server gespeichert. Sie sind also für Sie da, damit Sie handeln können. Tatsache ist jedoch, dass dies noch kein geschlossener Kreislauf ist, da der Benutzer nicht weiß, dass der Entwickler es weiß. Und Sie können diesen Kreis schließen, indem Sie automatisierte Tickets erstellen. Da Sie also bereits über die Informationen verfügen, können Sie dies tun |
| Verwenden Sie eine Bug-Tracking-Software wie JIRA Atlassian und nutzen Sie dann die REST-Funktionalität |
| Um die Informationen vom Server zu sammeln, erstellen Sie ein Ticket, weisen Sie es dem Entwickler zu, und Sie können den Benutzer auch als Beobachter zuweisen. Der Beobachter bedeutet, dass der Entwickler immer dann etwas unternimmt |
| über den Fehler und gibt diese Informationen in JIRA ein, die an den Benutzer zurückgesendet werden, damit er oder sie benachrichtigt wird und weiß, dass jemand an dem Fehler arbeitet. |
| Und es gibt mehrere Möglichkeiten, dies zu tun, abhängig von der Art von JIRA, die Sie haben, und ich gebe Ihnen nur die |
| Grundcode hier. Es handelt sich um einen Curl-Code, den Sie erstellen können. Sie sammeln die Metadaten, die Sie aus den Absturzprotokollen haben, und betten diese in eine JSL-Datei ein. Anschließend werden sie über REST übertragen und in die Datei übertragen |
| JIRA, das ist...das es für Sie verfolgt. Und dann wird JIRA, wenn Sie es richtig eingerichtet haben, es benachrichtigen ... JIRA wird den Entwickler benachrichtigen und möglicherweise |
| der Benutzer, für den...für den das Skript abgestürzt ist. Das hängt also alles zusammen und der Entwickler weiß, dass es einen Fehler gibt, an dem er oder sie arbeiten muss, und der Benutzer weiß, dass jemand an dem Fehler arbeiten wird. |
| Okay. Ich denke, das bringt mich zu meinen Abschlussnotizen. Nur die Erkenntnisse, die Sie aus dieser Präsentation ziehen können. |
| Git war der Eckpfeiler unseres Systems und hat es uns ermöglicht, viele nette Funktionen zu implementieren, und ich habe die grundlegenden Funktionen noch nicht einmal erwähnt |
| Das liegt auf der Hand, denn das gibt einem auch die Möglichkeit zur Zusammenarbeit. Wenn also mehrere Personen an demselben Skript arbeiten. Sie können alle Funktionalitäten des nutzen |