DE202014010910U1 - Vorgang zur Anzeige von Testabdeckungsdaten während der Codeüberprüfung - Google Patents

Vorgang zur Anzeige von Testabdeckungsdaten während der Codeüberprüfung Download PDF

Info

Publication number
DE202014010910U1
DE202014010910U1 DE202014010910.9U DE202014010910U DE202014010910U1 DE 202014010910 U1 DE202014010910 U1 DE 202014010910U1 DE 202014010910 U DE202014010910 U DE 202014010910U DE 202014010910 U1 DE202014010910 U1 DE 202014010910U1
Authority
DE
Germany
Prior art keywords
code
code change
change
coverage
test
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE202014010910.9U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US14/132,902 priority Critical patent/US9405662B2/en
Priority to US14/132,902 priority
Application filed by Google LLC filed Critical Google LLC
Publication of DE202014010910U1 publication Critical patent/DE202014010910U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis

Abstract

System (100) zum Bereitstellen von Testabdeckungsdaten für eine Codeänderung, wobei dieses System Folgendes umfasst: einen oder mehrere Prozessor(en); und ein nicht transitorisches computerlesbares Medium, das gekoppelt ist mit dem einen oder den mehreren Prozessoren, die darin gespeicherte Anweisungen aufweisen, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Operationen durchzuführen, umfassend: das Erkennen einer eingehenden Codeänderung an einen Codeüberprüfungsdienst (150); Durchführen einer oder mehrere Testabdeckungsberechnungen für die eingehende Codeänderung; das Erstellen von Testabdeckungsdaten für die Codeänderung basierend auf einer oder mehrerer durchgeführter Testabdeckungsberechnungen; und das Senden einer Benachrichtigung der für die Codeänderung erstellten Testabdeckungsdaten an mindestens einen Empfänger, der mit der Codeänderung assoziiert ist.

Description

  • HINTERGRUND
  • Während Programmcodeüberprüfung kann eine Einschätzung, ob ein bestimmter Teil des Codes von den Tests geprüft wird oder nicht einen bedeutende Zeit- und Arbeitsaufwand von Seiten des Ingenieurs in Anspruch nehmen, welcher den Code überprüft. Der Ingenieur muss sowohl den getesteten Code und die Tests lesen, als auch den Codeausführungspfaden nachfolgen und für jede Codezeile festlegen, ob diese ausgeführt wird oder nicht. Ein solcher Vorgang ist nicht nur schwierig, sondern ist auch fehleranfällig. Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • Alternativ kann der Codeüberprüfer den Autor der Codeänderung darum bitten, einen der vorhandenen Codeabdeckungsrechner laufen zu lassen und die Ergebnisse dem Überprüfer manuell berichten. Da für diesen Vorgang mindestens zwei Leute benötigt werden, um die manuellen Schritte durchzuführen, kann dies eine erhebliche Wartezeit mit sich bringen, besonders, wenn der Überprüfer und Autor der Codeänderung sich nicht am gleichen geografischen Ort befinden.
  • ZUSAMMENFASSUNG
  • Diese Zusammenfassung stellt eine Auswahl an Konzepten in vereinfachter Form vor, um ein grundlegendes Verständnis einiger Aspekte der vorliegenden Veröffentlichung zu verleihen. Diese Zusammenfassung ist keine umfangreiche Übersicht über die Offenbarung und zielt nicht darauf ab, Schlüssel- oder kritischen Elemente der Offenbarung festzustellen, oder den Umfang der Offenbarung abzugrenzen. Diese Zusammenfassung stellt bloß einige der Konzepte der Offenbarung dar, wie eine Einleitung zur ausführlichen Beschreibung, die unten zur Verfügung gestellt wird.
  • Die vorliegende Veröffentlichung bezieht sich im Allgemeinen auf die Verfahren und Systeme, um einen automatisierten Dienst für Kunden zu bieten. Insbesondere geht es um Aspekte der vorliegenden Veröffentlichung, die sich auf einen automatisierten Dienst beziehen, um Nutzern Testabdeckungsdaten für Computercodeänderungen zur Verfügung zu stellen, welche während dem Codeüberprüfungsvorgang gemacht wurden.
  • Eine Ausführungsform der vorliegenden Veröffentlichung bezieht sich auf ein computerimplementiertes Verfahren, um Testabdeckungsdaten für eine Codeänderung zur Verfügung zu stellen, das Verfahren besteht aus: Erkennen einer eingehenden Codeänderung in das Codeüberprüfungssystem; Durchführen einer oder mehrerer Testabdeckungsberechnungen für die eingehende Codeänderung; Erstellen von Testabdeckungsdaten für die Codeänderung basierend auf einer oder mehrerer durchgeführter Codeabdeckungsberechnungen; und Senden einer Benachrichtigung über die Testabdeckungsdaten, die für die Codeänderung erstellt wurden an mindestens einen Empfänger, der mit der Codeänderung assoziiert ist.
  • In einer anderen Ausführungsform beinhaltet das Verfahren für die Bereitstellung von Testabdeckungsdaten des Weiteren die Überwachung des Codeüberprüfungssystems für Benachrichtigungen über Änderungen an einem Codekunden und die Erkennung der eingehenden Codeänderung basierend auf einer empfangenen Benachrichtigung über die Änderung des Codekunden.
  • In einer anderen Ausführungsform beinhaltet das Verfahren für die Bereitstellung von Testabdeckungsdaten die Festlegung, dass die Testabdeckungsberechnung für eine vorherige Version der eingehenden Codeänderung durchgeführt wurde und dem Durchführen einer oder mehrerer aktualisierter Testabdeckungsberechnungen für die eingehende Codeänderung basierend auf einer Festlegung, dass die eingehende Codeänderung sich von der vorherigen Version der Codeänderung unterscheidet.
  • In einer anderen Ausführungsform beinhaltet das Verfahren für die Bereitstellung von Testabdeckungsdaten des Weiteren den Vergleich eines Speicherauszugs der vorherigen Version der Codeänderung und die auf dem Vergleich basierende Festlegung, dass die eingehende Codeänderung sich von der vorherigen Version der Codeänderung bezüglich mindestens einer der folgenden Arten unterscheidet: ein oder mehrere Tests wurden zur Codeänderung hinzugefügt; ein oder mehrere Tests wurden von der Codeänderung entfernt; mehr als ein Schwellenwert des neuen Codes, der nicht der Testcode ist, wurde zur Codeänderung hinzugefügt; und mehr als ein Schwellenwert des Codes, der nicht der Testcode ist, wurde von der Codeänderung entfernt.
  • In einer anderen Ausführungsform beinhaltet das Verfahren für die Bereitstellung von Testabdeckungsdaten des Weiteren: den Empfang einer Anfrage nach aktualisierten Testabdeckungsberechnungen für eine Codeänderung, die an das Codeüberprüfungssystem eingereicht wurden, worin die Anfrage nach aktualisierten Testabdeckungsberechnungen vor Entdeckung der eingereichten Codeänderung empfangen wurde; und Durchführen von einer oder mehreren aktualisierten Testabdeckungsberechnungen für die eingereichte Codeänderung als Antwort auf die Anfrage.
  • Eine andere Ausführungsform der vorliegenden Veröffentlichung bezieht sich auf das System zur Bereitstellung von Testabdeckungsdaten für eine Codeänderung, das System besteht aus einem oder mehreren Prozessoren und einem nicht-flüchtigen, computerlesbaren Medium in Kombination mit einem oder mehreren Prozessoren, auf denen Befehle gespeichert sind, die wenn von einem oder mehreren Prozessoren ausgeführt dazu führen, dass einer oder mehrere Prozessoren Vorgänge durchführen, bestehend aus: der Erkennung einer eingehenden Codeänderung an einem Codeüberprüfungsdienst; Durchführen einer oder mehrerer Testabdeckungsberechnungen für die eingehende Codeänderung; Erstellen von Testabdeckungsdaten für die Codeänderung basierend auf einer oder mehrerer durchgeführter Testabdeckungsberechnungen; und Senden einer Benachrichtigung über die für die Codeänderung erstellten Testabdeckungsdaten an mindestens einen Empfänger, der mit der Codeänderung assoziiert ist.
  • In einer anderen Ausführungsform werden ein oder mehrere Prozessoren im System zur Bereitstellung von Testabdeckungsdaten dazu veranlasst, weitere Vorgänge durchzuführen, bestehend aus der Überwachung des Codeüberprüfungsdiensts für Benachrichtigungen über Änderungen an einem Codekunden und Erkennen der eingehenden Codeänderung basierend auf einer erhaltenen Benachrichtigung über eine Änderung am Codekunden.
  • In einer anderen Ausführungsform werden ein oder mehrere Prozessoren im System zur Bereitstellung von Testabdeckungsdaten dazu veranlasst, weitere Vorgänge durchzuführen, bestehend aus der Festlegung, dass eine Testabdeckungsberechnung für eine vorherige Version der eingehenden Codeänderung durchgeführt wurde und Durchführen einer oder mehrerer aktualisierter Testabdeckungsberechnungen für die eingehende Codeänderung basierend auf einer Festlegung, dass die eingehende Codeänderung sich von der vorherigen Version der Codeänderung unterscheidet.
  • In einer anderen Ausführungsform werden ein oder mehrere Prozessoren im System zur Bereitstellung von Testabdeckungsdaten dazu veranlasst, weitere Vorgänge durchzuführen, bestehend aus dem Vergleich eines Speicherauszugs der eingehenden Codeänderung mit einem Speicherauszug einer vorherigen Version der Codeänderung und der auf dem Vergleich basierenden Festlegung, dass die eingehende Codeänderung sich von der vorherigen Version der Codeänderung mindestens auf eine der folgenden Arten unterscheidet: ein oder mehrere Tests wurden zur Codeänderung hinzugefügt; ein oder mehrere Tests wurde von der Codeänderung entfernt; mehr als ein Schwellenwert des neuen Codes, der nicht der Testcode ist, wurde zur Codeänderung hinzugefügt; und mehr als ein Schwellenwert des Codes, der nicht der Testcode ist, wurde von der Codeänderung entfernt.
  • In einer anderen Ausführungsform wurde ein oder mehrere Prozessoren im System zur Bereitstellung von Testabdeckungsdaten dazu veranlasst, weitere Vorgänge durchzuführen, die daraus bestehen, eine Benachrichtigung im Benachrichtigungsbereich eines Nutzeroberflächenbildschirms veröffentlichen, der mit dem Codeüberprüfungsdienst assoziiert ist, worin die veröffentlichte Benachrichtigung für mindestens einem Empfänger zugänglich ist, der mit der Codeänderung assoziiert ist.
  • In einer anderen Ausführungsform werden ein oder mehrere Prozessoren im System zur Bereitstellung von Testabdeckungsdaten dazu veranlasst, weitere Vorgänge durchzuführen, die den Empfang einer Anfrage nach aktualisierten Testabdeckungsberechnungen für eine Codeänderung beinhalten, die an den Codeüberprüfungsdienst eingereicht wurden, wobei die Anfrage nach aktualisierten Testabdeckungsberechnungen vor Erkennung der eingereichten Codeänderung empfangen wurde und Durchführen einer oder mehrerer aktualisierter Testabdeckungsberechnungen für die eingereichte Codeänderung als Antwort auf die Anfrage.
  • Eine andere Ausführungsform der vorliegenden Veröffentlichung bezieht sich auf ein oder mehrere nicht-flüchtige computerlesbare Medien, die computerausführbare Befehle speichern, die wenn von einem oder mehreren Prozessoren ausgeführt, einen oder mehrere Prozessoren dazu veranlassen, Vorgänge durchzuführen, bestehend aus: Überwachen eines Codeüberprüfungssystems für Benachrichtigungen über Änderungen im Codekunden; Entdecken einer eingehenden Codeänderung am Codeüberprüfungssystem basierend auf einer empfangenen Benachrichtigung über die Änderung am Codekunden; Durchführen einer oder mehrerer Testabdeckungsberechnungen für die eingehende Codeänderung; Erstellen von Testabdeckungsdaten für die Codeänderung basierend auf einer oder mehrerer durchgeführter Testabdeckungsberechnungen; und Senden einer Benachrichtigung über die für die Codeänderung erstellten Testabdeckungsdaten und mindestens einen Empfänger, der mit der Codeänderung assoziiert ist.
  • In einer oder mehreren Ausführungsformen können die hierin beschriebenen Verfahren und Systeme optional eine oder mehrere der folgenden zusätzlichen Funktionen beinhalten: die Festlegung, dass eine Testabdeckungsberechnung für eine vorherige Version der eingehenden Codeänderung durchgeführt wurde, basiert auf einer Codeänderungskennung, die sowohl mit der eingehenden Codeänderung als auch mit der vorherigen Version der eingehenden Codeänderung assoziiert ist; die Festlegung, dass die eingehende Codeänderung sich von der vorherigen Version der Codeänderung unterscheidet, basiert auf einem Vergleich eines Speicherauszugs der eingehenden Codeänderung mit einem Speicherauszug der vorherigen Version der Codeänderung; die Festlegung, dass mindestens einer der mit der Codeänderung assoziierten Empfänger mindestens einen Autor der Codeänderung, einen Überprüfer der Codeänderung und einen Codeüberprüfungsdienst beinhaltet, durch welchen auf die Codeänderung zugegriffen werden kann; und/oder Senden einer Benachrichtigung über die für die Codeänderung erstellten Testabdeckungsdaten beinhaltet die Veröffentlichung einer Benachrichtigung in einem Benachrichtigungsbereich auf einem Nutzeroberflächenbildschirm, der mit dem Codeüberprüfungssystem assoziiert ist, wobei auf die veröffentlichte Benachrichtigung von mindestens einem Empfänger zugegriffen werden kann, der mit der Codeänderung assoziiert ist.
  • Der weitere Anwendungsumfang der vorliegenden Veröffentlichung wird aus der unten angegebenen detaillierten Beschreibung deutlich. Es sollte jedoch verstanden werden, dass die detaillierte Beschreibung und die spezifischen Beispiele nur zu Darstellungszwecken angegeben wurden, obwohl die bevorzugte Ausführungsformen andeuten, da sich verschiedene Änderungen und Modifikationen innerhalb des Geistes und des Umfangs der Veröffentlichung befinden, dies wird Fachleuten aus dieser detaillierten Beschreibung deutlich.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Diese und andere Objekte, Funktionen und Eigenschaften der vorliegenden Veröffentlichung werden Fachleuten aus einer Studie der folgenden detaillierten Beschreibung zusammen mit den angehängten Ansprüchen und Zeichnungen deutlich, diese sind alle Teil dieser Schrift. Die Zeichnungen umfassen Folgendes:
  • ist ein Blockdiagramm, das ein exemplarisches System für die Bereitstellung von Testabdeckungsdaten für Codeänderungen darstellt, die zur Überprüfung während des Codeüberprüfungsvorgangs gemäß einer oder mehrerer hierin beschriebener Ausführungsformen gesendet wurden.
  • ist ein Flussdiagramm, das ein exemplarisches Verfahren für die Überwachung von Codeänderungseingaben in ein Codeüberprüfungssystem und für die Durchführung von Testabdeckungsberechnungen der Codeänderungen zur Erstellung von entsprechenden Testabdeckungsdaten für die Codeänderungen gemäß einer oder mehrerer hierin beschriebener Ausführungsformen darstellt.
  • ist ein Flussdiagramm, das ein exemplarisches Verfahren zur Erkennung einer neuen Codeänderungseingabe in ein Codeüberprüfungssystem darstellt, welches den Verlauf der Codeänderung überwacht und aktualisierte Testabdeckungsberechnungen an der Codeänderung durchführt, die auf dem überwachten Verlauf der Codeänderung gemäß einer oder mehrerer hierin beschriebener Ausführungsformen basieren.
  • ist ein Blockdiagramm, das ein exemplarisches Computergerät darstellt, welches für die Überwachung von Codeänderungseingaben in ein Codeüberprüfungssystem und für die Durchführung von Testabdeckungsberechnungen an den Codeänderungen eingerichtet ist, um entsprechende Testabdeckungsdaten für die Codeänderungen gemäß einer oder mehrerer hierin beschriebene Ausführungsformen zu erstellen.
  • Die hierin angegebenen Überschriften dienen lediglich Informationszwecken und beeinflussen nicht unbedingt den Umfang oder die Bedeutung der Ausführungsformen der vorliegenden Veröffentlichung.
  • Die Zeichnungen, die gleichen Referenzziffern und jegliche Akronyme legen Elemente fest oder agieren in derselben oder einer ähnlichen Struktur oder Funktionalität, um das Verständnis und die Zweckmäßigkeit zu verbessern. Die Zeichnungen werden im Detail im Verlauf der folgenden detaillierten Beschreibung beschrieben.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Verschiedene Beispiele und Ausführungsformen werden nun beschrieben. Die folgende Beschreibung bietet spezifische Details für ein vollständiges Verständnis und ermöglicht die Beschreibung dieser Beispiele. Jemand, der in der entsprechenden Kunst erfahren ist, wird jedoch verstehen, dass ein oder mehrere hierin beschriebenen Ausführungsformen ohne viele dieser Details angewandt werden können. Gleichwohl wird der Fachmann auch verstehen, dass eine oder mehrere Ausführungsformen der vorliegenden Offenbarung viele andere offensichtliche Merkmale enthalten können, die hier nicht im Detail beschrieben werden. Zudem können einige wohlbekannte Strukturen oder Funktionen nachfolgend nicht im Detail gezeigt oder beschrieben werden, um in der entsprechenden Beschreibung nicht für eine unnötige Verwirrung zu sorgen.
  • Die Ausführungsformen der vorliegenden Veröffentlichung beziehen sich auf Verfahren und Systeme zur Überwachung von Computercodeänderungen, die zur Überprüfung während dem Codeüberprüfungsvorgang gesendet wurden und zur Durchführung von Testabdeckungsberechnungen der Codeänderungen, um entsprechende Testabdeckungsdaten für die Codeänderungen zu erstellen. Wie hierin im Weiteren genauer beschrieben, kann ein zentraler Überwachungsdienst Testabdeckungsdaten für eine Codeänderungseingabe in ein Codeüberprüfungssystem erstellen und solche Testabdeckungsdaten einem oder mehreren Nutzern und/oder Systemen zur Verfügung stellen, die mit der bestimmten Codeänderung assoziiert sind. Gemäß mindestens einer hierin beschriebenen Ausführungsform kann der Dienst zum Beispiel (z. B.: senden, anbieten usw.) für eine Codeänderung erstellte Testabdeckungsdaten einem Autor der Codeänderung, einem Überprüfer der Codeänderung, einer Benachrichtigungskomponente des Codeänderungssystems und/oder jegliche Kombinationen hiervon zur Verfügung stellen. Die für eine Codeänderung erstellten Testabdeckungsdaten können von verschiedenen interessierten Parteien/Systemen verwendet werden, um zum Beispiel die Gesundheit des Codes einzuschätzen.
  • Wie oben besprochen ist es oft zeitraubend für den Codeüberprüfer, wenn sich ein Codeüberprüfer und ein Autor einer Codeänderung geografisch entfernt voneinander befinden (z. B.: mehrere Zeitzonen entfernt), den Autor der Codeänderung darum zu bitten, den vorhandenen Codeabdeckungsrechner manuell laufen zu lassen und die Ergebnisse manuell an den Überprüfer zu melden. In solchen Szenarien mit geografischer Distanz würde der Autor der Codeänderung, bevor der Überprüfer überhaupt die Chance hat, die Codeänderung zu sehen, von der Testcodeabdeckungsberechnung profitieren, indem sichergestellt wird, dass der Autor nicht vergessen hat, jegliche Codepfade in seiner oder ihrer Änderung zu prüfen. Der Autor kann zum Beispiel den gleichen Vorgang durchführen, welchen der Überprüfer durchführen würde und den Code manuell überprüfen, was fehleranfällig und zeitraubend ist, oder die Abdeckungsberechnung manuell laufen lassen, was der Autor eventuell vergisst zu tun oder sich nicht bewusst ist, dass ein solcher Vorgang leicht durchzuführen ist.
  • Einige vorhandene Herangehensweisen bieten binäre Information für jede Codeänderung „alle Tests erfolgreich abgeschlossen” oder „einige Tests fehlgeschlagen”. Solche Herangehensweisen bieten jedoch nicht die notwendige pro Zeile Lösung, um die oben beschriebenen Probleme zu adressieren. Andere vorhandene Herangehensweisen verwenden externe Systeme, welche alle Tests zu einem vordefinierten Zeitpunkt laufen lassen. Als solches sind diese anderen Herangehensweisen nur in der Lage, retrospektive Informationen anzubieten, sobald die Codeänderung bereits in den Code inkorporiert wurde.
  • Gemäß den Ausführungsformen der vorliegenden Veröffentlichung beziehen sich die Verfahren und Systeme für die automatische Bereitstellung von Codeänderung-Testabdeckungsdaten auf den Maßstab. Wie im Weiteren genauer beschrieben, können Testabdeckungsberechnungen automatisch an jeder Codeänderung durchgeführt werden, die als ‚über einen Zeitraum wesentlich entwickelt' festgelegt wurde. Gemäß mindestens einer Ausführungsform kann eine neue Codeänderung als wichtig genug festgelegt werden, um die Durchführung neuer/aktualisierter Testabdeckungsberechnungen zu rechtfertigen, wo ein Speicherauszug der neuen Codeänderung sich von dem Speicherauszug der vorher geprüften Codeänderung mindestens in den folgenden Arten unterscheidet: (1) ein oder mehrere Tests wurden zur Codeänderung hinzugefügt; (2) ein oder mehrere Tests wurden von der Codeänderung entfernt; (3) mehr als der Schwellenwert (z. B.: 10%) wurde als Code zur Codeänderung hinzugefügt, nicht einschließlich des Testcodes; (4) mehr als der Schwellenwert (z. B.: 10%) wurde von der Codeänderung entfernt, nicht einschließlich des Testcodes; (5) jegliche Kombination hiervon (1)–(4). Es sollte verstanden werden, dass die oben angegebenen Fakten exemplarischer Natur sind und zahlreiche andere Faktoren können außerdem in Betracht gezogen werden, wenn es darum geht, festzulegen, ob die neue Codeänderung „wichtig genug” ist, um neue/aktualisierte Testabdeckungsberechnungen zusätzlich zu oder anstatt der oben beschriebenen exemplarischen Faktoren zu rechtfertigen.
  • Gemäß mindestens einer Ausführungsform kann ein zentralisierter Dienst konfiguriert werden, um Codeänderungen zu überwachen, die zur Überprüfung gesendet wurden und um einen oder mehrere vorkonfigurierte Sammlungen von Tests an den Codeänderungen laufen zu lassen unter Verwendung eines vorhandenen Testabdeckungs-Berechnungswerkzeugs (z. B.: für die bestimmte Codesprache, die bei der Codeänderung verwendet wurde), das dem Fachmann bekannt ist. Der zentralisierte Dienst kann eine Benachrichtigung über die sich ergebende Testabdeckungsinformation (z. B.: Testabdeckungsnummer) an den Codeüberprüfer, den Code-Autor, das Codeüberprüfungssystem, eine oder mehrere interessierte Parteien und/oder jegliche Kombination hiervon senden. Laut einem Beispiel kann der Dienst eine solche Benachrichtigung über E-Mail senden. Bei einem oder mehreren anderen Beispielen kann der Dienst die Benachrichtigung in einem Benachrichtigungsbereich des Nutzeroberflächenbildschirms durch ein Codeüberprüfungssystem senden, indem die Benachrichtigung über einen Sofortnachrichtendienst gesendet wird oder durch Senden der Testabdeckungsdaten an ein oder mehrere andere Benachrichtigungssysteme.
  • Gemäß mindestens einer der hierin beschriebenen Ausführungsformen kann der zentralisierte Dienst konfiguriert werden, um die Codeänderungen zu überwachen, indem alle eingehenden, an ein Codeüberwachungssystem eingereichten Codeänderungen abonniert werden.
  • Es sollte beachtet werden, dass gemäß einer oder mehrerer Ausführungsformen der vorliegenden Veröffentlichung der hierin beschriebene Codeabdeckungsdienst konfiguriert werden kann, um Nutzern mit einem Mechanismus für das manuelle Aufrufen des Diensts zur Verfügung zu stellen. Falls eine Codeänderung, zum Beispiel zur Überprüfung eingereicht wird (z. B.: an ein Codeüberprüfungssystem), nicht automatisch vom Codeabdeckungsdienst erkannt wird oder falls ein dringender Bedarf an aktualisierten Testabdeckungsberechnungen besteht (z. B.: aufgrund großen Änderungen an der Codeänderung in Folge des Codeüberprüfungsvorgangs), kann ein Nutzer, der mit der Codeänderung assoziiert ist (z. B.: der Autor der Codeänderung, ein Überprüfer der Codeänderung usw.) manuell den Codeabdeckungsdienst aufrufen, um die verschiedenen hierin beschriebenen Vorgänge zu durchzuführen. Gemäß mindestens einer Ausführungsform können Nutzer des hierin beschriebenen Codeüberprüfungssystems Zugriff auf ein Dienstprogramm haben, das in der Lage ist, Benachrichtigungen an den Codeabdeckungsdienst in gleicher oder ähnlicher Weise zu senden, wie ein Codeüberprüfungsdienst (im Folgenden genauer beschrieben) Benachrichtigungen sendet, wenn eine Codeänderung erkannt wird. Des Weiteren gemäß mindestens einer Ausführungsform kann ein Benutzeroberflächenbildschirm, der mit dem Codeüberprüfungsdienst assoziiert ist einen auswählbaren Knopf beinhalten, den ein Nutzer auswählen kann, damit das Codeüberprüfungssystem eine Anfrage an den Codeüberprüfungsdienst im Namen des Nutzers sendet.
  • Sobald dem Dienst das erste Mal eine Codeänderung bekannt wird, kann der Dienst die Codeänderung weiterhin in regelmäßigen Zeitabständen überwachen (z. B.: stündlich, täglich usw.). Falls der Dienst festlegt, dass sich die Codeänderung wesentlich weiterentwickelt hat, kann der Dienst automatisch die Testabdeckungsberechnung erneut ablaufen lassen und neue Abdeckungsinformationen senden. Gemäß mindestens einer Ausführungsform kann der Dienst die Codeänderungen weiter überwachen, bis die Änderungen: (1) an die Codebasis eingereicht wurden; (2) verworfen und vom Überprüfungssystem gelöscht; oder (3) verfallen aufgrund eines Zeitlimits und als veraltet erklärt wurden. In diesem exemplarischen Szenario erkennt der Dienst, dass die Codeänderung bei der Codebasis eingereicht wurde, der Dienst kann konfiguriert werden, dass dieser einen abschließenden Testabdeckungsdurchlauf durchführt und eine endgültige Abdeckungsnummer „nach Einreichung” berechnet. In einem solchen Szenario kann der Dienst auch konfiguriert werden, um den Unterschied zwischen der ersten Codeabdeckungsberechnung (z. B.: vom Dienst ausgeführt) und der Abdeckungsberechnung nach Einreichung festzulegen und/oder eine Benachrichtigung über den Unterschied an die interessierten Parteien zu senden. Gemäß mindestens einer Ausführungsform können alle Informationen, die vom Dienst möglicherweise gesammelt wurden (z. B.: Testabdeckungsergebnisse für jeden Durchlauf eines vorkonfigurierten Tests für jede Codeänderung) zur Analyse von langfristigen Trends und allgemeiner Codegesundheit gespeichert werden.
  • Gemäß einer oder mehrerer hierin beschriebener Ausführungsformen befreit der automatisierte Charakter des Diensts den Autor einer Codeänderung davon, sich an das Starten einer Abdeckungsberechnung für die Codeänderung erinnern zu müssen. Stattdessen kann dem Codeüberprüfer der Codeänderung die Fähigkeit ermöglicht werden, visuell (und direkt) festzustellen, ob eine bestimmte Codezeile von den Tests abgedeckt wird und verschiedenen anderen mit der Codeänderung assoziierten Nutzern/Systemen/usw. können umfassende Testabdeckungsdaten (z. B.: eine allgemeine Testabdeckungsnummer) zukommen gelassen werden, die verwendet werden können, um die Codegesundheit des relevanten Codes einzuschätzen. Unter zahlreichen anderen Vorteilen verringert der Codeabdeckungsdienst der vorliegenden Veröffentlichung menschliche Fehler (z. B.: erhöht Korrektheit des Codeüberprüfungsvorgangs), verringert die Wartezeit in verschiedenen Stadien des Codeüberprüfungsvorgangs (z. B.: erhöht die Effizienz des Codeüberprüfungsvorgangs) und ermöglicht eine langfristige, projektübergreifende Analyse der Codegesundheit.
  • 1 stellt ein exemplarisches System dar für die Bereitstellung von Testabdeckungsdaten für die Codeänderungen, die zur Überprüfung währen dem Codeüberprüfungsvorgang gemäß einer oder mehrerer hierin beschriebener Ausführungsformen gesendet wurden. Das System 100 kann den Codekunden 105, Codeabdeckungs-Dienstkunde 115, Codeänderungsdienst 110, Codeabdeckungsdienst 120, Testausführer 130, Codeüberprüfungsdienst 150 und Benachrichtigungsdienst 145 beinhalten. Das System 100 kann auch eine oder mehrere Datenbanken beinhalten, die zur Datenspeicherung konfiguriert wurden, wie zum Beispiel der Codeabdeckungsspeicher 135 und der Testergebnisspeicher 140.
  • Gemäß mindestens einer Ausführungsform kann das System 100 eventuell ein verteiltes System sein, in welchem jede der Komponenten des Systems 100 konfiguriert werden können, um auf separaten Geräten zu laufen (z. B.: Computer, Server usw.). Codekunde 105 kann zum Beispiel auf einem Entwicklergerät (z. B.: Computer) laufen, während die restlichen Komponenten des Systems 100 an einem Ort in Betrieb genommen werden, auf den über ein Kommunikationsnetzwerk zugegriffen werden kann, das zwischen verschiedenen Nutzern des Systems 100 geteilt wird. Zusätzlich können viele Codekunden 105 mit den gleichen Diensten (z. B.: Codeabdeckungs-Dienstkunde 115, Codeänderungsserver 110, Codeabdeckungsdienst 120 usw.) kommunizieren. Gemäß einer oder mehrerer Ausführungsformen kann das System 100 in einer fehlertoleranten Weise gestaltet werden, wobei mehrere Instanzen des gleichen geteilten Vorgangs auf mehreren Computer ablaufen, die über ein Netzwerk miteinander verbunden sind.
  • Der Codekunde 105 kann eine Anwendung sein (z. B.: Computersoftware-Anwendung oder Programm), die konfiguriert ist, um einen Speicherauszug eines Quellcodes zu verwalten, der von einem Entwickler geändert wurde.
  • Codeabdeckungs-Dienstkunde 115 kann ein Dienstprogramm sein, das konfiguriert ist, um den Codeabdeckungsdienst 120 zu benachrichtigen bezüglich einer Codeänderung und auch zur Erstellung von Anfragen nach Codeabdeckungsberechnungen, wenn eine Codeänderung entdeckt wird.
  • Der Codeänderungsserver 110 kann ein Dienst sein, der konfiguriert ist, um Code-Speicherauszüge und eine Codeänderungsvorschläge zu verwalten, die von Entwicklern eingereicht wurden.
  • Codeabdeckungsdienst 120 kann ein Dienst sein, der konfiguriert ist, um Codeänderungsbenachrichtigungen zu überwachen, die vom Codeabdeckungs-Dienstkunden 115 erhalten wurden und Codeabdeckungsberechnungen durchführen (z. B.: Verwenden eines oder mehrerer vorhandener Testabdeckungs-Berechnungswerkzeuge).
  • Der Testausführer 130 kann ein Dienst sein, der konfiguriert ist, um Test an einem beliebigen Speicherauszug der Codebasis durchzuführen und die Ergebnisse der Testdurchführung zum Beispiel im Testergebnisspeicher 140 aufnehmen.
  • Der Codeüberprüfungsdienst 150 kann konfiguriert sein, um den Codeüberprüfungsvorgang gemäß einer oder mehrerer hierin beschriebener Ausführungsformen zu ermöglichen Entwickler können zum Beispiel den Codeüberprüfungsdienst 150 dazu verwenden, um eine Codeüberprüfung anzufragen und Codeüberprüfer können Kommentare zu vorgeschlagenen Codeänderungen beim Codeüberprüfungsdienst 150 abgeben. Zusätzlich kann der Codeüberprüfungsdienst 150 ein oder mehrere Werkzeuge beinhalten, welche Nutzern erlaubt, Anmerkungen zu vorgeschlagenen Codeänderungen zu machen (z. B.: hervorheben, Kommentare einfügen, Überarbeitungen anzeigen usw.).
  • Benachrichtigungsdienst 145 kann ein Dienst sein, der konfiguriert ist, um Benachrichtigungen über die Codeabdeckungs-Testergebnisse zu erstellen (z. B.: gespeichert im Testergebnisspeicher 140 vom Testausführer 130) und solche Benachrichtigungen an einen oder mehrere einzelne Nutzer oder Nutzergruppen zu senden (oder anderweitig zur Verfügung zu stellen).
  • Gemäß mindestens einer hierin beschriebenen Ausführungsform fließen exemplarische Datenflüsse zwischen den verschiedenen Komponenten des Systems 100 können folgendes beinhalten.
  • Codeabdeckungsdienst 120 kann konfiguriert werden, um Codeabdeckungsdaten vom Testergebnisspeicher 140 für abgeschlossene Testdurchführungen zu lesen (z. B.: durch den Testausführer 130). Der Codeabdeckungsdienst 120 kann zum Beispiel Daten über den Prozentsatz der geänderten Codezeilen lesen, die von einem oder mehreren Tests abgedeckt wurden, die vom Testausführer 130 durchgeführt wurden. In einem anderen Beispiel kann der Codeabdeckungsdienst 120 aus Testergebnissen 140 Daten über die Liste der Dateien lesen, die von einem vom Testausführer 130 durchgeführten Test abgedeckt wurden.
  • Gemäß mindestens einer Ausführungsform kann der Codeabdeckungsdienst 120 auch konfiguriert werden, um Daten vom Codeabdeckungsdienst 135 zu lesen als auch Daten darauf zu schreiben. Der Codeabdeckungsdienst 120 kann zum Beispiel konfiguriert werden, um den aktuellen Stand der Testabdeckungsberechnung für eine bestimmte Änderung des Codeabdeckungsspeichers 135 aufzunehmen (z. B.: die vom Codeabdeckungsdienst 120 durchgeführt wird). Gemäß einer oder mehrerer Ausführungsformen kann der Codeabdeckungsdienst 120 weiter konfiguriert werden, um solche Berichte vom Codeabdeckungsspeicher 135 zu lesen, um zum Beispiel die Ausführung einer Testabdeckungsberechnung für die Codeänderung wiederaufzunehmen, im Falle eines Serverneustarts (z. B.: nach einer Fehlfunktion).
  • Der Codeüberprüfungsdienst 150 kann konfiguriert werden, um Codeabdeckungsdaten vom Testergebnisspeicher 140 für abgeschlossene Testausführungen zu lesen (z. B.: durch den Testausführer 130). Der Codeüberprüfungsdienst 150 kann zum Beispiel Daten über eine Liste von Dateien lesen, die von einem der Tests abgedeckt wurden, die vom Testausführer 130 durchgeführt wurden und für jede dieser Dateien, die Liste der Codezeilen, die von den Tests abgedeckt wurden. Gemäß mindestens einer hierin beschriebenen Ausführungsform kann der Codeüberprüfungsdienst 150 die aus dem Testergebnisspeicher 140 gelesenen Daten verwenden, um zum Beispiel Zeilen an Code zu identifizieren und zu unterscheiden, die aus ungetesteten Codezeilen getestet wurden. Der Codeüberprüfungsdienst kann zum Beispiel getestete Codezeilen mit einer ersten Farbe hervorheben, wobei ungetestete Codezeilen mit einer zweiten Farbe hervorgehoben werden und dann alle Codezeilen (mit den Hervorhebungen) auf einem Codeüberprüfungs-Nutzeroberflächenbildschirm (nicht angezeigt) anzuzeigen, der verschiedenen Nutzern angezeigt werden kann, die mit dem Code assoziiert sind (z. B.: die Codeentwickler, Codeüberprüfer usw.). Der Codeüberprüfungsdienst 150 kann auch konfiguriert werden, um den Codeabdeckungsdienst 120 über Änderungen am überprüften Code zu benachrichtigen.
  • Der Testausführer 130 kann konfiguriert werden, um Daten auf den Testergebnisspeicher 140 zu speichern. Gemäß mindestens einer Ausführungsform kann der Testausführer 130 konfiguriert werden, um Testprotokolle, Informationen über die erfolgreiche/nicht erfolgreiche Testabsolvierung und Testabdeckungsdaten (z. B.: Liste der Dateien, die von einem der Tests abgedeckt wurden, die vom Testausführer 130 durchgeführt wurden und für jede dieser Dateien, die Liste der Codezeilen, die von den Tests abgedeckt wurden) auf den Testergebnisspeicher 140 zu schreiben. Der Testausführer kann zum Beispiel konfiguriert werden, um die folgenden exemplarischen Daten auf den Testergebnisspeicher 140 zu schreiben:
    Test_1 ERFOLGREICH
    Test_2 FEHLGESCHLAGEN
    Test_3 ZEITÜBERSCHREITUNG
    Test_4 BUILD-PROZESS FEHLGESCHLAGEN
    Code_Datei_1:
    Zeile 1: INSTRUMENTIERT, ABGEDECKT
    Zeile 2: INSTRUMENTIERT, ABGEDECKT
    Zeile 3: INSTRUMENTIERT, NICHT ABGEDECKT
    Zeile 4: NICHT
    ...
    Code_Datei_2:
    Zeile 1: INSTRUMENTIERT, ABGEDECKT
    Zeile 2: INSTRUMENTIERT, ABGEDECKT
    Zeile 3: INSTRUMENTIERT, NICHT ABGEDECKT
    Zeile 4: INSTRUMENTIERT, ABGEDECKT
    ...
  • Der Codeabdeckungs-Dienstkunde 115 kann konfiguriert werden, um Daten auf den Codeabdeckungsspeicher 135 zu schreiben. Gemäß mindestens einer Ausführungsform kann der Codeabdeckungs-Dienstkunde 115 konfiguriert werden, um den Vorfall einer Anfrage für eine Codeabdeckungsberechnung (z. B.: erstellt vom Codeabdeckungs-Dienstkunden 115, wenn eine Codeänderung erkannt wurde und an den Codeabdeckungsdienst 120 gesendet) im Codeabdeckungsspeicher 135 aufzuzeichnen. Wenn eine Anfrage auf eine Codeabdeckungsberechnung an den Codeabdeckungsdienst 120 gesendet wird, kann der Codeabdeckungs-Dienstkunde 115 verschiedene Daten über die Anfrage im Codeabdeckungsspeicher 135 protokollieren, wie die Codekundenkennung, eine Codeänderungskennung, einen Benutzernamen, eine Projektkonfiguration, einschließlich einer Liste der durchzuführenden Tests und zu instrumentierender Dateimuster oder jeglicher Kombination hiervon. Es sollte verstanden werden, dass verschiedene andere Daten auch vom Codeabdeckungs-Dienstkunden 115 im Codeabdeckungsspeicher 135 protokolliert werden können, zusätzlich zu oder anstatt der oben beschriebenen exemplarischen Daten.
  • Der Codekunde 105 kann konfiguriert werden, um Daten zum Codeabdeckungs-Dienstkunden 115 zu übertragen. Der Codekunde 105 kann zum Beispiel konfiguriert werden, um eine Anfrage an den Codeabdeckungs-Dienstkunden 115 zu senden, wo die Anfrage sich auf eine bestimmte Codeänderung bezieht und eine Projektkonfiguration, einschließlich einer Liste von durchzuführenden Tests und zu instrumentierenden Dateimustern für die Codeänderung beinhalten kann.
  • Gemäß mindestens einer Ausführungsform als Antwort auf die Datenübertragung durch den Codekunden 105 auf den Codeabdeckungs-Dienstkunden 115, kann der Codekunde 105 einen Status (z. B.: „O.K.”, „NICHT O.K.” usw.) vom Codeabdeckungs-Dienstkunden 115 empfangen. Der Codekunde 105 kann zum Beispiel einen „O.K.”-Status vom Codeabdeckungs-Dienstkunden 115 erhalten als Antwort auf die Festlegung durch den Codeabdeckungs-Dienstkunden 115, dass ein Speicherauszug eines von einem Entwickler geänderten Quellcodes erfolgreich zum Codeänderungsserver 110 hochgeladen wurde und auch, dass der Codeabdeckungsdienst 120 eine angeforderte Codeabdeckungsberechnung für die Codeänderung gestartet hat. In einem anderen Beispiel kann der Codekunde 105 einen „NICHT O.K.”-Status vom Codeabdeckungs-Dienstkunden 115 erhalten als Antwort auf die Festlegung des Codeabdeckungs-Dienstkunden 115, dass eine Fehlfunktion bei einem der oben beschriebenen Vorgänge aufgetreten ist.
  • Der Codeabdeckungs-Dienstkunde 115 kann konfiguriert werden, um Daten auf den Codeänderungsserver 110 und den Codeabdeckungsdienst 120 zu übertragen. Gemäß mindestens einer Ausführungsform kann der Codeabdeckungs-Dienstkunde 115 konfiguriert werden, um einen aktuellen Speicherauszug eines von einem Entwickler geänderten Quellcodes auf den Codeänderungsserver 110 hochzuladen. Der Codeabdeckungs-Dienstkunde 115 kann zum Beispiel den Speicherauszug des geänderten Quellcodes zum Codeänderungsserver 110 hochladen, um den Speicherauszug für den Testausführer 130 verfügbar zu machen. Im Folgenden werden exemplarische Daten dargestellt, die vom Codeabdeckungs-Dienstkunden 115 auf den Codeänderungsserver 110 übertragen werden können:
    <Benutzername>
    directory_1/Datei_1, <Datei1 Inhalt>
    directory_1/Datei_2, <Datei2 Inhalt>
    directory_2/Datei_3, <Datei3 Inhalt>
  • Der Codeabdeckungs-Dienstkunde 115 kann auch konfiguriert werden, um den Codeabdeckungsdienst 120 über die Codeänderung zu informieren. Gemäß mindestens einer Ausführungsform, kann der Codeabdeckungs-Dienstkunde 115 den Codeabdeckungsdienst 120 über eine Codeänderung informieren, indem eine Anfrage für eine Codeabdeckungsberechnung der Codeänderung an den Codeabdeckungsdienst 120 gesendet wird. Die Daten, welche in einer solchen Anfrage an den Codeabdeckungsdienst 120 gesendet werden können, dürfen zum Beispiel eine Kennung des Codeänderungs-Speicherauszugs für den Codeänderungs-Speicherauszug beinhalten, der zum Codeänderungsserver 110 hochgeladen wurde, eine Kennung der Codeänderung, einen Benutzernamen, eine Projektkonfiguration, einschließlich einer Liste an durchzuführenden Tests und zu instrumentierenden Dateimustern oder einer Kombination hiervon. Eine Anfrage für eine Codeänderungsberechnung einer bestimmten Codeänderung kann zum Beispiel die folgenden exemplarischen Daten beinhalten:
    Kennung des Codeänderungs-Speicherauszugs: 12 [einzigartig für die spezifische Codeänderung]
    Kennung der Codeänderung: 12345 [einzigartig für die spezifische Codeänderung]
    Benutzername: Nutzer_1
    Testmuster: Directory_1/Test_1, Directory_2/* [festlegen eines einzelnen Tests oder eines Wildcard
    Zeichenmusters, die/das auf alle Tests erweitert werden soll, die mit dem Muster übereinstimmen]
    Dateiinstrumentierungsmuster: Directory:1/*, directory_2/*
  • Es sollte verstanden werden, dass verschiedene andere Daten auch in einer Anfrage Für eine Codeabdeckungsberechnung beinhaltet werden können, die von einem Kodeabdeckungs-Dienstkunden 115 an den Codeabdeckungsdienst 120 gesendet wurden, zusätzlich zu oder anstatt den oben beschriebenen, exemplarischen Daten.
  • Als Antwort auf die Datenübertragung durch den Codeabdeckungs-Dienstkunden 115 auf den Codeänderungsserver 110 und den Codeabdeckungsdienst 120, kann der Codeabdeckungs-Dienstkunde 115 einen Status (z. B.: „O.K.- oder „NICHT O.K.”-Status) von jedem der Codeänderungsserver 110 und dem Codeabdeckungsdienst 120 erhalten. Als Antwort auf das Hochladen durch den Codeabdeckungs-Dienstkunden 115 eines Speicherauszugs des vom Entwickler geänderten Quellcodes auf den Codeänderungsserver 110, kann der Codeabdeckungs-Dienstkunde 115 einen „O.K.”-Status vom Codeänderungsserver 110 erhalten, falls der Quellcode-Speicherauszug erfolgreich hochgeladen wurde. Gemäß mindestens einer Ausführungsform kann der Codeabdeckungs-Dienstkunde 115 einen „O.K.”-Status vom Codeänderungsserver 110 erhalten, zusammen mit der Kennung eines Codeänderungs-Speicherauszugs, die auf den Codeänderungsserver 110 hochgeladen wurde. In einem anderen Beispiel, als Antwort auf das Hochladen eines Quellcode-Speicherauszugs durch den Codeabdeckungs-Dienstkunden 115 auf den Codeänderungsserver 110, kann der Codeabdeckungs-Dienstkunde 115 einen „NICHT O.K.”-Status vom Codeänderungsdienst 110 erhalten, falls der Quellcode-Speicherauszug nicht richtig oder nicht vollständig auf den Codeänderungsdienst 110 hochgeladen wurde. In einem anderen Beispiel, als Antwort auf das Senden einer Anfrage für eine Codeabdeckungsberechnung durch den Codeabdeckungs-Dienstkunden 115 an den Codeabdeckungsdienst 120, kann der Codeabdeckungs-Dienstkunde 115 einen „NICHT O.K.”-Status vom Codeabdeckungsdienst 120 erhalten, falls der Codeabdeckungsdienst 120 zum Beispiel nicht die angeforderte Codeabdeckungsberechnung gestartet hat.
  • Gemäß mindestens einer hierin beschriebener Ausführungsform, falls der Codeabdeckungs-Dienstkunde 115 einen „NICHT O.K.”-Status entweder vom Codeänderungsserver 110 oder vom Codeabdeckungsdienst 120 erhält, kann der Codeabdeckungs-Dienstkunde 115 konfiguriert werden, um den durchgeführten Vorgang abzubrechen (z. B.: Hochladen eines Quellcode-Speicherauszugs auf den Codeänderungsserver 110 oder Anfrage einer Codeabdeckungsberechnung durch den Codeabdeckungsdienst 120) und kann ein Fehlereignis im Codeabdeckungsspeicher 135 protokollieren. Das Fehlereignis, welches vom Codeabdeckungs-Dienstkunden 115 im Codeabdeckungsspeicher 135 protokolliert werden kann, kann zum Beispiel Daten über eine bestimmte Fehlfunktion beinhalten, wie den versuchten Vorgang, die involvierte Quellcodeänderung, Zeitstempelinformation und ähnlichem. In mindestens einem Beispiel können die im Codeabdeckungsspeicher 135 protokollierten Daten für verschiedene System-100-Fehlerbehebungszwecke verwendet werden.
  • Der Codeabdeckungsdienst 120 kann konfiguriert werden, um die Testausführung für eine bestimmte Codeänderung vom Testausführer 130 anzufordern. Gemäß mindestens einer Ausführungsform, kann die eventuell von dem Codeabdeckungsdienst 120 an den Testausführer 130 gesendete Anfrage ähnliche Daten beinhalten, wie die Daten, welche in einer Anfrage für eine Codeabdeckungsberechung beinhaltete sind, die vom Codeabdeckungs-Dienstkunden 115 an den wie oben beschriebenen Codeabdeckungsdienst 120 gesendet wurden. Die Anfrage, die zum Beispiel eventuell vom Codeabdeckungsdienst 120 an den Testausführer 130 gesendet wird, kann eine Untergruppe der Daten aus der Anfrage für die Codeabdeckungsberechnung beinhalten, die vom Codeabdeckungsdienst 120 erhalten wurde, einschließlich beispielsweise der Kennung des Codeänderungs-Speicherauszugs, die auf den Codeänderungsserver 110 hochgeladen wurde und der Projektkonfiguration, einschließlich der Liste der durchzuführenden Tests und der zu instrumentierenden Dateimuster.
  • Der Testausführer 130 kann konfiguriert werden, um einen Speicherauszug eines vom Entwickler geänderten Quellcodes vom Codeänderungsserver 110 zu lesen. Der Testausführer 130 kann zum Beispiel eine auf dem Codeänderungsserver 110 gespeicherte Codeänderung (z. B.: Codeabdeckungs-Dienstkunde 115) lesen, um Tests an der Codeänderung durchzuführen.
  • Der Testausführer 130 kann auch konfiguriert werden, um einen Status an den Codeabdeckungsdienst 120 zu berichten, basierend auf dem Ergebnis der vom Testausführer 130 für eine bestimmte Codeänderung durchgeführten Tests. Als Antwort auf die Festlegung durch den Testausführer 130, dass alle Tests für eine Codeänderung erfolgreich absolviert wurden, kann der Testausführer 130 zum Beispiel einen „O.K.”-Status an den Codeabdeckungsdienst 120 senden. In einem anderen Beispiel kann der Testausführer 130 einen „NICHT O.K.”-Status an den Codeabdeckungsdienst 120 senden als Antwort auf die Festlegung des Testausführers 130, dass ein oder mehrere Tests der Codeänderung fehlgeschlagen sind oder dass die angeforderten Tests für die Codeänderung nicht ausgeführt werden konnten. Gemäß mindestens einer Ausführungsform, kann der Codeabdeckungsdienst 120 den vom Testausführer 130 erhaltenen Status im Codeabdeckungsspeicher 135 protokollieren.
  • Der Codeabdeckungsdienst 120 kann konfiguriert werden, um eine E-Mail-Erstellung und eine Übertragung über den Benachrichtigungsdienst 145 anzufordern. Der Codeabdeckungsdienst 120 kann zum Beispiel anfordern, dass der Benachrichtigungsdienst 145 eine E-Mail (z. B.: an einen oder mehrere zugelassene oder benannte Empfänger) sendet, welche einen Bericht über die Codeänderung beinhaltet, für welche die Testausführung ausgeführt wurde (z. B.: durch den Testausführer 130) sowie eine allgemeine Codeabdeckungsberechnung (z. B.: Prozentsatz), die hieraus festgelegt wurde. Gemäß mindestens einer Ausführungsform, als Antwort auf das Senden einer Anfrage für eine E-Mail-Benachrichtigung an den Benachrichtigungsdienst 145, kann der Codeabdeckungsdienst 120 einen Statusbericht vom Benachrichtigungsdienst 145 erhalten. Der Codeabdeckungsdienst 120 kann zum Beispiel einen „O.K.”-Status vom Benachrichtigungsdienst 145 erhalten, falls die angeforderte E-Mail erfolgreich vom Benachrichtigungsdienst 145 gesendet wurde und kann einen „NICHT O.K.”-Status erhalten, falls die angeforderte E-Mail nicht vom Benachrichtigungsdienst 145 gesendet werden konnte. Gemäß mindestens einer Ausführungsform kann der Codeabdeckungsdienst 120 den vom Benachrichtigungsdienst 145 erhaltenen Status im Codeabdeckungsspeicher 135 protokollieren.
  • Gemäß einer oder mehrerer Ausführungsformen kann der Codeabdeckungsdienst 120 konfiguriert werden, um Codeabdeckungsdaten (z. B.: Codeabdeckungsberechnung basierend auf den vom Testausführer 130 erhaltenen Testergebnissen) an den Codeüberprüfungsdienst 150 zur Anzeige in einem Benachrichtigungsbereich auf einem Benutzeroberflächenbildschirm senden, der mit dem Codeüberprüfungsdienst 150 assoziiert ist. Der Codeabdeckungsdienst 120 kann zum Beispiel konfiguriert werden, um eine Übersicht der Codeabdeckungsergebnisse für eine bestimmte Codeänderung zu erstellen und die Übersicht im Benachrichtigungsbereich auf einem Benutzeroberflächenbildschirm anzeigen, der mit dem Codeüberprüfungsdienst 150 assoziiert ist.
  • 2 stellt einen exemplarischen Vorgang dar für die Überwachung von Codeänderungseinträgen in ein Codeüberprüfungssystem und für die Durchführung von Testabdeckungsberechnungen an Codeänderungen, um die entsprechenden Testabdeckungsdaten für die Codeänderung zu erstellen. Gemäß mindestens einer Ausführungsform kann der Vorgang 200 von einem verteilten System (z. B.: System 100 wird in 1 dargestellt) konfiguriert werden, um auf einem oder mehreren Servern abzulaufen.
  • Bei Datenblock 205 kann das Programm nach Benachrichtigungen über Änderungen am Codekunden überwacht werden. Ein Codeabdeckungsdienst kann zum Beispiel konfiguriert werden, um ein Dienstprogramm für Benachrichtigungen über eine von einem Entwickler getätigte Quellcodeänderung zu überwachen (z. B.: Codeabdeckungsdienst 120 kann Benachrichtigungen überwachen, die vom Codeabdeckungs-Dienstkunden 115 über die durch den Codekunden 105 eingereichten Codeänderungen im exemplarischen System 100, das in 1 angezeigt wird), erhalten wurden. Gemäß mindestens einer Ausführungsform können die bei Datenblock 205 überwachten Benachrichtigungen von einem Dienstprogramm konfiguriert worden sein, welches konfiguriert wurde, um Codeänderungsanfragen von einer Anwendung zu erhalten, welche einen Speicherauszug eines vom Entwickler bearbeiteten Quellcodes verwaltet.
  • Bei Datenblock 210 kann eine Benachrichtigung über eine Codeänderung erkannt werden, basierend auf der bei Datenblock 205 durchgeführten Überwachung. Ein Codeabdeckungsdienst kann zum Beispiel eine Codeänderung basierend auf einer Benachrichtigung erkennen, die von einem Codeabdeckungsdienst-Dienstkunden erhalten wurde (z. B.: Codeabdeckungsdienst 120 kann eine Codeänderung erkennen, basierend auf einer vom Codeabdeckungs-Dienstkunden 115 empfangenen Benachrichtigung im exemplarischen System 100, das in 1 dargestellt wird).
  • Bei Datenblock 215 können ein oder mehrere Tests für die am Datenblock 210 erkannte Codeänderung durchgeführt werden. Ein oder mehrere Abdeckungstests können zum Beispiel (z. B.: vom Testausführer 130 im exemplarischen System 100, das in 1 dargestellt wird) an der Codeänderung durchgeführt werden unter Verwendung eines Fachleuten bekannten Berechnungswerkzeugs für die Testabdeckung.
  • Bei Datenblock 220 können die Testabdeckungsdaten (z. B.: Codeabdeckungsberechnungen) für die Codeänderung basierend auf den am Datenblock 215 durchgeführten Tests durchgeführt werden. Gemäß mindestens einer Ausführungsform kann ein Codeabdeckungsdienst die aus den an der Codeänderung bei Datenblock 215 durchgeführten Tests erhaltenen Ergebnisse verwenden, um eine Codeabdeckungsberechnung (z. B.: ein Prozentsatz) für die Codeänderung zu erstellen (z. B.: Codeabdeckungsdienst 120 kann Ergebnisse verwenden, die vom Testausführer 130 erhalten wurden, um eine Codeabdeckungsberechnung zu erstellen, im exemplarischen System 100, das in 1 dargestellt wird).
  • Bei Datenblock 225 kann eine Benachrichtigung an einen oder mehrere Empfänger gesendet werden, (z. B.: Nutzer, Systeme, Dienste usw.) die mit der Codeänderung assoziiert sind, wo die Benachrichtigung die Testabdeckungsdaten andeutet oder beinhaltet, die am Datenblock 220 erstellt wurden. Bei Datenblock 225 kann zum Beispiel eine E-Mail an einen oder mehrere zugelassene oder ernannte Empfänger gesendet werden, wo die E-Mail einen Bericht der Codeänderung enthält, für welchen die Tests bei Datenblock 215 durchgeführt wurden, zusammen mit einer allgemeinen Codeabdeckungsberechnung, die bei Datenblock 220 basierend auf den Testergebnissen festgelegt wurde. Gemäß mindestens einer Ausführung kann die Benachrichtigung, die eventuell bei Datenblock 225 gesendet wird, eine Veröffentlichung einer Übersicht von Codeabdeckungsergebnissen für die Codeänderung in einem Benachrichtigungsbereich auf einem Benutzeroberflächenbildschirm sein, der mit einem Codeüberprüfungsdienst assoziiert ist (z. B.: Codeüberprüfungsdienst 150 im Beispielsystem 100, dargestellt in 1).
  • 3 stellt einen exemplarischen Vorgang dar zur Erkennung einer neuen Codeänderungseingabe in ein Codeüberprüfungssystem, zur Überwachung von Änderungen an der Codeänderung (z. B.: als Folge eines Codeüberprüfungsvorgangs) und Durchführung von aktualisierten Testabdeckungsberechnungen an der Codeänderung, basierend auf den Änderungen, die an der Codeänderung gemacht wurden (z. B.: die Entwicklung der Codeänderung) gemäß einer oder mehrerer hierin beschriebener Ausführungsformen. Gemäß mindestens einer Ausführungsform kann der Vorgang 300 von einem verteilten System durchgeführt werden (z. B.: dem in 1 dargestellten System 100), welches konfiguriert ist, um auf einem oder mehreren Servern abzulaufen.
  • Bei Datenblock 305 kann eine in einem Codeüberprüfungssystem eingehende Codeänderung erkannt werden. Ein Entwickler kann zum Beispiel eine Quellcodeänderung (z. B.: zur Nachprüfung und/oder Zulassung) an ein Codeüberprüfungssystem einreichen und diese Einreichung kann von einer Systemkomponente erkannt werden (z. B.: eine Codeänderung, die von einem Entwickler im Kundencode 105 gemacht wurde, kann vom Codeabdeckungsdienst 120 basierend auf einer vom Codeabdeckungs-Dienstkunden 115 erstellten Benachrichtigung erkannt werden, wie im exemplarischen System 100, das in 1 dargestellt wird).
  • Bei Datenblock 310 kann eine Festlegung gemacht werden, ob eine Abdeckungsberechnung (z. B.: Testabdeckungsmessung) im Voraus für die am Datenblock 305 erkannte, eingehende Codeänderung angefordert wurde. Gemäß mindestens einer Ausführungsform kann die Festlegung am Datenblock 310 basierend auf verschiedenen Daten gemacht werden, die mit der eingehenden Codeänderung assoziiert sind.
  • Die am Datenblock 305 erkannte Codeänderung kann zum Beispiel eine Kennung für einen Codekunden, eine Kennung für eine Codeänderung, einen Benutzernamen, eine Projektkonfiguration, einschließlich einer Liste der durchzuführenden Tests und zu instrumentierenden Dateimuster oder einer jeglichen Kombination hiervon beinhalten. Die mit der Codeänderung assoziierten Daten können verwendet werden, um zum Beispiel festzulegen, ob jegliche Abdeckungstestergebnisse für die Codeänderung gespeichert werden (z. B.: im Testergebnisspeicher 140 im exemplarischen System 100, das in 1 abgebildet ist).
  • Falls am Datenblock 310 ermittelt wird, dass eine Abdeckungsmessung nicht im Voraus für die eingehende Codeänderung angefordert wurde, kann der Vorgang enden. Gemäß mindestens einer Ausführungsform, falls bei Datenblock 310 ermittelt wird, dass derzeit keine Abdeckungsmessung für die Codeänderung existiert (z. B.: im Testergebnisspeicher 140 im exemplarischen System 100, das in 1 dargestellt wird), können die Testabdeckungsberechnungen für die Codeänderung durchgeführt werden, um entsprechende Testabdeckungsdaten für die Codeänderung gemäß dem oben beschriebenen und in der 2 dargestellten Beispielvorgang 200 zu erstellen.
  • Falls andernfalls bei Datenblock 305 ermittelt wird, dass eine Abdeckungsmessung im Vorraus für die eingehende Codeänderung angefordert wurde, kann dann am Datenblock 315 die eingehende Codeänderung mit der vorherigen Codeänderung verglichen werden, die bereits für die Abdeckung getestet wurde. Bei Datenblock 315 kann zum Beispiel ein Speicherauszug der eingehenden Codeänderung (z. B.: vom Codekunden 105 für den Codeabdeckungs-Dienstkunden 115 im Beispielsystem 100 zur Verfügung gestellt, in 1 dargestellt) mit einem Speicherauszug der vorher getesteten Codeänderung (z. B.: gespeichert auf dem Codeänderungsserver 110 im Beispielsystem 100, in 1 dargestellt) verglichen werden, um festzulegen, in welchem Ausmaß die Codeänderung abgeändert wurde.
  • Basierend auf dem am Datenblock 315 durchgeführten Vergleich kann eine Festlegung am Datenblock 320 gemacht werden, ob die aktualisierten Testabdeckungsberechnungen (Messungen) für die Codeänderung benötigt werden. Gemäß mindestens einer Ausführungsform kann die Festlegung am Datenblock 320 basierend darauf gemacht werden, in welchem Ausmaß sich die Codeänderung der vorher getesteten Version und der am Datenblock 305 erkannten Version entwickelt (z. B.: abgeändert oder überarbeitet) hat. Eine neue Codeänderung kann zum Beispiel als bedeutend genug festgelegt werden, dass diese die Durchführung von neuen/aktualisierten Testabdeckungsberechnungen rechtfertigt, wo ein Speicherauszug der neuen Codeänderung sich vom Speicherauszug der vorher getesteten Codeänderung mindestens in den folgenden Arten unterscheidet: (1) ein oder mehrere Tests wurden zur Codeänderung hinzugefügt; (2) ein oder mehrere Tests wurden von der Codeänderung entfernt; (3) mehr als ein Schwellenwert (z. B.: 10%) wurde zum als Code zur Codeänderung hinzugefügt, nicht einschließlich dem Testcode; (4) mehr als ein Schwellenwert (z. B.: 10%) wurde von der Codeänderung entfernt, nicht einschließlich dem Testcode (5) jegliche Kombination von (1)–(4). Es sollte verstanden werden, dass zahlreiche andere Faktoren ebenso in Betracht gezogen werden können, wenn bei Datenblock 320 um die Festlegung geht, ob eine neue Version einer am Datenblock 305 erkannten Codeänderung „bedeutend genug” ist, um neue/aktualisierte Testabdeckungsberechnungen zusätzlich zu oder anstatt der oben beschriebenen Beispielfaktoren zu rechtfertigen.
  • Falls bei Datenblock 320 festgelegt wird, dass eine aktualisierte Testabdeckungsberechnung nicht notwendig ist für eine bestimmte Codeänderung, kann der Vorgang zu Datenblock 305 zurückkehren und wiederholen. Auf der anderen Hand, falls bei Datenblock 320 festgelegt wird, basierend auf dem bei Datenblock 315 durchgeführten Vergleich, dass die Codeänderung sich genug entwickelt hat, um eine aktualisierte Abdeckungsberechnung zu rechtfertigen, kann der Vorgang zu Datenblock 325 fortschreiten.
  • Gemäß mindestens einer Ausführungsform können die verbleibenden Datenblöcke 325, 330 und 335 im Beispielvorgang 300 ähnliche Vorgänge beinhalten, wie jeweils die Vorgänge an den Datenblöcken 215, 220 und 225 im Beispielvorgang 200, der im Einzelnen oben beschrieben wurde un in der 2 dargestellt wird. Daher werden die Vorgänge der Datenblöcke 325, 330 und 335 der Kürze wegen im Beispielvorgang 300 nicht weiter beschrieben.
  • 4 ist ein hochrangiges Blockdiagramm eines Beispielcomputers (400), der zur Überwachung von Codeänderungseingaben in ein Codeüberprüfungssystem und zur Durchführung von Testabdeckungsberechnungen an den Codeänderungen eingestellt ist, um entsprechende Testabdeckungsdaten für die Codeänderungen gemäß einer oder mehrerer hierin beschriebener Ausführungsformen zu erstellen. In der Basiskonfiguration (401) besitzt das Computergerät (400) normalerweise einen oder mehrere Prozessoren (410) und einen Systemspeicher (420). Ein Speicherbus (430) kann zur Kommunikation zwischen dem Prozessor (410) und dem Systemspeicher (420) verwendet werden.
  • Abhängig von der gewünschten Konfiguration kann der Prozessor (410) jeglichen Typs sein, einschließlich, jedoch nicht beschränkend auf einen Mikroprozessor (μP), einen Mikrokontroller (μC), einen digitalen Zweikanal-Signalprozessor (DSP) oder jegliche Kombination hiervon. Der Prozessor (410) kann eine oder mehrere Cache-Ebenen besitzen wie einen Cache der ersten Ebene (411) und einen Cache der zweiten Ebene (412), einen Prozessorkern (413) und Register (414). Der Prozessorkern (413) kann aus einer arithmetischlogischen Einheit (ALU), einer Gleitkommaeinheit (FPU), einem digitalen Signalprozessorkern (DSP-Kern) oder einer beliebigen Kombination dieser Komponenten bestehen. Ein Speichercontroller (416) kann zusätzlich zum Prozessor (410) vorhanden sein oder der Speichercontroller (415) kann bei manchen Implementierungen ein interner Teil des Prozessors (410) sein.
  • Abhängig von der gewünschten Konfiguration kann der Systemspeicher (420) jeglichen Typs sein, einschließlich, jedoch nicht beschränkend auf flüchtige Speicher (wie RAM), nicht flüchtige Speicher (wie ROM, Flash-Speicher usw.) oder jegliche Kombination hiervon. Zum Systemspeicher (420) gehört normalerweise ein Betriebssystem (421), eine oder mehrere Anwendungen (422) und Programmdaten (424). Die Anwendung (422) kann einen Dienst (423) beinhalten zur Bereitstellung von Testabdeckungsdaten für die Codeänderungen (z. B.: für Codeänderungen, die bei einem Codeüberprüfungssystem eingereicht wurden, wie zum Beispiel das Codeüberprüfungssystem 100, das in 1 dargestellt wird). Programmdaten (424) können das Speichern von Befehlen beinhalten, die wenn von einem oder mehreren informationsverarbeitenden Geräten ausgeführt werden, einen Dienst zur Bereitstellung von Testabdeckungsdaten für die Codeänderungen implementieren. Zusätzlich, gemäß mindestens einer Ausführungsform können die Programmdaten (424) Codeänderungen und Testergebnisdaten (425) beinhalten, die Daten über eine oder mehrere Änderungen beinhalten, die an einer Codeänderung in Folge des Codeüberprüfungsvorgangs vorgenommen wurden, sowie Daten über die Testabdeckungsberechnungen, die an der Codeänderung durchgeführt wurden (z. B.: vom Dienst (423) zur Bereitstellung von Testabdeckungsdaten für Codeänderungen). Bei einigen Ausführungsformen kann die Anwendung (422) so eingerichtet werden, um mit Programmdaten (424) auf einem Betriebssystem (421) zu arbeiten.
  • Das Computergerät (400) kann zusätzliche Funktionen oder Funktionalitäten haben und zusätzliche Schnittstellen, um die Kommunikation zwischen der Grundkonfiguration (401) und jeglichen erforderlichen Geräten und Schnittstellen zu ermöglichen.
  • Der Systemspeicher (420) ist ein Beispiel eines Computerspeichermediums. Zu den Computerspeichermedien zählen unter anderem RAM, ROM, EEPROM, Flashspeicher und andere Speichertechnologie, CD-ROM, Digital Versatile Disks (DVD) sowie andere optische Speicher, Magnetkassetten, Magnetband, Magnetplattenspeicher und andere Magnetspeichergeräte oder jedes sonstige Medium, das zum Speichern der gewünschten Informationen verwendet werden und auf das durch das Computergerät 400 zugegriffen werden kann. Alle Computerspeichermedien dieser Art können ein Teil des Geräts (400) sein.
  • Das Computergerät (400) kann als Teil eines kleinformatigen und tragbaren (oder mobilen) Elektronikgeräts implementiert werden, wie ein Mobiltelefon, ein Smartphone, ein persönlicher digitaler Assistent (PDA), ein persönliches Medienwiedergabegerät, ein Tablet-Computer (Tablet), ein kabelloses Web-Watch-Gerät, ein persönliches Headset-Gerät, ein anwendungsspezifisches Gerät oder ein Hybridgerät, welches jegliche der oben genannten Funktionen beinhaltet. Das Computergerät (400) kann auch als Personal Computer implementiert werden mit sowohl Laptop- als auch Nicht-Laptopkonfiguration.
  • Die vorangegangene detaillierte Beschreibung legt verschiedene Ausführungsformen der Geräte und/oder Prozesse über die Nutzung von Blockdiagrammen, Flussdiagrammen und/oder Beispielen dar. Insoweit wie solche Blockdiagramme, Flussdiagramme und/oder Beispiele eine oder mehrere Funktionen und/oder Operationen enthalten, wird von Fachleuten verstanden, dass jede Funktion und/oder Operation innerhalb solcher Blockdiagramme, Flussdiagramme oder Beispiele individuell und/oder kollektiv durch eine Bandbreite an Hardware, Software, Firmware oder praktisch irgendeiner Kombination davon implementiert werden kann. In einer Ausführungsform können einige Teile des hier beschriebenen Gegenstands über anwendungsspezifische integrierte Schaltungen (ASICs), Field Programmable Gate Arrays (FPGAs), digitale Signalprozessoren (DSPs) oder andere integrierte Formate implementiert werden. Dennoch werden die Fachkundigen feststellen, dass einige Aspekte der hier dargelegten Ausführungen, teilweise oder gänzlich, ebenso in integrierten Kreisläufen implementiert werden können, als ein oder mehrere Computerprogramme, die auf einem oder mehreren Computer ausgeführt werden, als ein oder mehrere Programme, die auf einem oder mehreren Prozessoren ausgeführt werden, als Firmware oder irgend eine Kombination davon; und dass ein Entwurf der Kreisläufe und/oder des Schreibens des Codes für die Software und/oder Firmware unter Berücksichtigung der vorliegenden Veröffentlichung eine große Leistung wäre. Außerdem werden Fachleute verstehen, dass die Mechanismen dieses hier beschriebenen Gegenstands in der Lage sind, als ein Programmprodukt in einer Vielzahl von Formen verteilt zu werden, und dass eine veranschaulichende Ausführungsform des hier beschriebenen Gegenstands unabhängig von der besonderen Art des nicht-flüchtigen signalführenden Mediums gilt, das für die tatsächliche Verteilung verwendet wird. Beispiele eines nicht flüchtigen signalführenden Medium schließen ein, sind jedoch nicht beschränkt auf folgende: ein beschreibbares Medium, wie eine Diskette, ein Festplattenlaufwerk, eine Kompaktplatte (CD), eine Digital-Video-Disk (DVD), ein digitales Tonband, ein Computerspeicher usw.; und ein Übertragungsmedium, wie ein digitales und/oder analoges Kommunikationsmedium, (z. B.: ein Faseroptikkabel, ein Lichtwellenleiter, eine drahtgebundene Kommunikationsverbindung, eine kabellose Kommunikationsverbindung usw.).
  • Was die Nutzung von im Wesentlichen allen Mehrzahl- und/oder Einzahlbegriffen hierin betrifft, können die Experten je nach Eignung für den Kontext und/oder die Anwendung die Mehrzahlform zur Einzahlform und umgekehrt bilden. Die verschiedenen Singular-/Plural-Permutationen können hierin ausdrücklich aus Gründen der Klarheit dargelegt.
  • Folglich wurden bestimmte Ausführungsformen des Gegenstands beschrieben. Weitere Ausführungsformen gehören zum Umfang der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen beschriebenen Handlungen in einer anderen Reihenfolge ausgeführt werden und dennoch erwünschte Ergebnisse erzielen. Zusätzlich erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die bestimmte gezeigte Reihenfolge oder aufeinanderfolgende Reihenfolge, um erwünschte Ergebnisse zu erzielen. Bei bestimmten Implementierungen können Multitasking und eine Parallelbearbeitung vorteilhaft sein.

Claims (11)

  1. System (100) zum Bereitstellen von Testabdeckungsdaten für eine Codeänderung, wobei dieses System Folgendes umfasst: einen oder mehrere Prozessor(en); und ein nicht transitorisches computerlesbares Medium, das gekoppelt ist mit dem einen oder den mehreren Prozessoren, die darin gespeicherte Anweisungen aufweisen, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Operationen durchzuführen, umfassend: das Erkennen einer eingehenden Codeänderung an einen Codeüberprüfungsdienst (150); Durchführen einer oder mehrere Testabdeckungsberechnungen für die eingehende Codeänderung; das Erstellen von Testabdeckungsdaten für die Codeänderung basierend auf einer oder mehrerer durchgeführter Testabdeckungsberechnungen; und das Senden einer Benachrichtigung der für die Codeänderung erstellten Testabdeckungsdaten an mindestens einen Empfänger, der mit der Codeänderung assoziiert ist.
  2. System nach Anspruch 1, worin ein Prozessor bzw. mehrere Prozessoren dazu veranlasst werden, weitere Operationen durchzuführen, die Folgendes umfassen: das Überwachen des Codeüberprüfungsdiensts für Benachrichtigungen über Änderungen an einem Codekunden (105); und Erkennen der eingehenden Codeänderung basierend auf einer empfangenen Benachrichtigung über eine Änderung im Codekunden.
  3. System nach Anspruch 1, worin ein Prozessor bzw. mehrere Prozessoren dazu veranlasst werden, weitere Operationen durchzuführen, welche umfassen: das Festlegen, dass eine Testabdeckungsberechnung für eine vorherige Version der eingehenden Codeänderung durchgeführt wurde; und das Durchführen von einer oder mehrerer aktualisierter Testabdeckungsberechnungen für die eingehende Codeänderung basierend auf einer Festlegung, dass die eingehende Codeänderung sich von der vorherigen Version der Codeänderung unterscheidet.
  4. System nach Anspruch 3, worin das Festlegen, dass eine Testabdeckungsberechnung für eine vorherige Version der eingehenden Codeänderung durchgeführt wurde, auf einer Kennung der Codeänderung basiert, der sowohl mit der eingehenden Codeänderung, als auch mit der vorherigen Version der eingehenden Codeänderung assoziiert ist.
  5. System nach Anspruch 3, worin das Festlegen, dass sich die eingehende Codeänderung von der vorherigen Version der Codeänderung unterscheidet, auf einem Vergleich eines Speicherauszugs der eingehenden Codeänderung mit einem Speicherauszug einer vorherigen Version der Codeänderung basiert.
  6. System nach Anspruch 3, worin der eine oder die mehreren Prozessoren dazu veranlasst werden, weitere Operationen durchzuführen, welche Folgendes umfassen: das Vergleichen eines Speicherauszugs der eingehenden Codeänderung mit einem Speicherauszug einer vorherigen Version der Codeänderung; und das Festlegen, basierend auf dem Vergleich, dass sich die eingehende Codeänderung von der vorherigen Version der Codeänderung mindestens in den folgenden Arten unterscheidet: ein oder mehrere Tests wurden zur Codeänderung hinzugefügt; ein oder mehrere Test wurden von der Codeänderung entfernt; mehr als ein Schwellenwert des neuen Codes, der nicht der Testcode ist, wurde zur Codeänderung hinzugefügt; und mehr als ein Schwellenwert des Codes, der nicht der Testcode ist, wurde von der Codeänderung entfernt.
  7. System nach Anspruch 1, worin mindestens ein mit der Codeänderung assoziierter Empfänger mindestens einen Autor der Codeänderung, einen Überprüfer der Codeänderung und einen Codeüberprüfungsdienst (150) beinhaltet, durch welchen auf die Codeänderung zugegriffen werden kann.
  8. System nach Anspruch 1, wobei der eine oder die mehreren Prozessoren veranlasst werden, weitere Operationen durchzuführen, umfassend: das Veröffentlichen einer Benachrichtigung in einem Benachrichtigungsbereich auf einem Benutzerschnittstellenbildschirm, der mit dem Codeüberprüfungsdienst assoziiert ist, worin auf die veröffentlichte Benachrichtigung durch mindestens einen Empfänger zugegriffen werden kann, der mit der Codeänderung assoziiert ist.
  9. System nach Anspruch 1, wobei der eine oder die mehreren Prozessoren veranlasst werden, weitere Operationen durchzuführen, umfassend: das Empfangen einer Anfrage für die aktualisierten Testabdeckungsberechnungen für eine Codeänderung, die beim Codeüberprüfungsdienst eingereicht wurden, worin die Anfrage nach aktualisierten Testabdeckungsberechnungen vor Erkennen der eingereichten Codeänderung empfangen wurde; und das Durchführen einer oder mehrerer aktualisierter Testabdeckungsberechnungen für die eingereichte Codeänderung als Antwort auf die Anfrage.
  10. Ein oder mehrere nicht-transitorische computerlesbare Medien, die, wenn Sie von einem oder mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Operationen durchzuführen, umfassend: das Überwachen eines Codeüberprüfungssystems für Benachrichtigungen über Änderungen an einem Codekunden; Erkennen einer eingehenden Codeänderung im Codeüberprüfungssystem basierend auf einer erhaltenen Benachrichtigung über eine Änderung am Codekunden; das Durchführen von einer oder mehreren Testabdeckungsberechnungen für die eingehende Codeänderung; Erstellen von Testabdeckungsdaten für die Codeänderung basierend auf einer oder mehrerer durchgeführter Codeabdeckungsberechnungen; und das Senden einer Benachrichtigung der für die Codeänderung erstellten Testabdeckungsdaten an mindestens einen Empfänger, der mit der Codeänderung assoziiert ist.
  11. Ein oder mehrere nicht-transitorische computerlesbare Medien nach Anspruch 10, worin ein oder mehrere Prozessoren dazu veranlasst werden, weitere Vorgänge durchzuführen, umfassend: das Festlegen, dass eine Testabdeckungsberechnung für eine vorherige Version der eingehenden Codeänderung durchgeführt wurde; und das Durchführen einer oder mehrerer aktualisierter Testabdeckungsberechnungen für die eingehende Codeänderung basierend auf einer Festlegung, dass die eingehende Codeänderung sich von der vorherigen Version der Codeänderung unterscheidet.
DE202014010910.9U 2013-12-18 2014-12-11 Vorgang zur Anzeige von Testabdeckungsdaten während der Codeüberprüfung Active DE202014010910U1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/132,902 US9405662B2 (en) 2013-12-18 2013-12-18 Process for displaying test coverage data during code reviews
US14/132,902 2013-12-18

Publications (1)

Publication Number Publication Date
DE202014010910U1 true DE202014010910U1 (de) 2017-01-16

Family

ID=52278808

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202014010910.9U Active DE202014010910U1 (de) 2013-12-18 2014-12-11 Vorgang zur Anzeige von Testabdeckungsdaten während der Codeüberprüfung

Country Status (6)

Country Link
US (1) US9405662B2 (de)
EP (1) EP3084610A1 (de)
KR (1) KR101672378B1 (de)
CN (1) CN105830037B (de)
DE (1) DE202014010910U1 (de)
WO (1) WO2015094901A1 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150212993A1 (en) * 2014-01-30 2015-07-30 International Business Machines Corporation Impact Coverage
US10146669B2 (en) * 2014-07-25 2018-12-04 International Business Machines Corporation Indicating a readiness of a change for implementation into a computer program
CN105630670A (zh) * 2015-12-16 2016-06-01 北京奇虎科技有限公司 一种代码覆盖率的测试方法和装置
CN106293749A (zh) * 2016-08-15 2017-01-04 云南电网有限责任公司信息中心 一种基于持续集成的源代码管控系统
US9606793B1 (en) * 2016-09-14 2017-03-28 Red Hat Israel, Ltd. Backporting of bug patches
US20180081791A1 (en) * 2016-09-16 2018-03-22 Oracle International Corporation Plugin for multi-module code coverage in web applications
KR102016472B1 (ko) * 2017-02-28 2019-09-02 슈어소프트테크주식회사 코드 커버리지 측정 방법 및 장치, 그리고 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
US10678673B2 (en) * 2017-07-12 2020-06-09 Fujitsu Limited Software program fault localization
CN107480066B (zh) * 2017-08-18 2020-10-30 网易(杭州)网络有限公司 代码覆盖率统计方法、装置、存储介质、处理器和终端
CN107832211B (zh) * 2017-11-02 2020-03-27 上海振华重工电气有限公司 基于事件触发实现过程监控的自动化测试系统及方法
US10248549B1 (en) * 2017-11-02 2019-04-02 Citrix Systems, Inc. Systems and methods for detection of untested code execution
US10430319B1 (en) * 2018-05-04 2019-10-01 Fmr Llc Systems and methods for automatic software testing
US10853231B2 (en) * 2018-12-11 2020-12-01 Sap Se Detection and correction of coding errors in software development

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2147036A1 (en) * 1994-05-16 1995-11-17 Yih-Farn Robin Chen System and method for selective regression testing
US6895577B1 (en) * 1999-05-13 2005-05-17 Compuware Corporation Risk metric for testing software
US7428726B1 (en) * 2000-04-12 2008-09-23 Compuware Corporation Techniques for software configuration tracking
US7603660B2 (en) * 2005-06-01 2009-10-13 Microsoft Corporation Code coverage test selection
US20070028218A1 (en) * 2005-08-01 2007-02-01 Masser Joel L Apparatus, system, and method for a software test coverage analyzer using embedded hardware
CN1952818B (zh) * 2005-10-22 2010-12-15 康佳集团股份有限公司 自动检验测试结果的程序单元测试方法
US8205191B1 (en) * 2006-06-02 2012-06-19 Parasoft Corporation System and method for change-based testing
US8713513B2 (en) * 2006-12-13 2014-04-29 Infosys Limited Evaluating programmer efficiency in maintaining software systems
US8694958B1 (en) * 2007-09-14 2014-04-08 The Mathworks, Inc. Marking up objects in code generation
US8079018B2 (en) * 2007-11-22 2011-12-13 Microsoft Corporation Test impact feedback system for software developers
US8448141B2 (en) 2008-03-31 2013-05-21 International Business Machines Corporation Evaluation of software based on change history
US8276123B1 (en) * 2008-07-22 2012-09-25 Juniper Networks, Inc. Adaptive regression test selection within testing environments
US20100146340A1 (en) * 2008-12-09 2010-06-10 International Business Machines Corporation Analyzing Coverage of Code Changes
US20100235809A1 (en) * 2009-03-12 2010-09-16 Honeywell International Inc. System and method for managing a model-based design lifecycle
US8423967B2 (en) * 2009-07-01 2013-04-16 International Business Machines Corporation Automated level-based targeted test configuration
US8776007B2 (en) 2010-05-07 2014-07-08 Accenture Global Services Limited Assessment of software code development
JP5767471B2 (ja) 2010-12-24 2015-08-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation テストの網羅性を評価する装置及び方法
US9535823B2 (en) * 2011-02-28 2017-01-03 Typemock Ltd. Method and apparatus for detecting software bugs
US9207935B2 (en) 2011-04-07 2015-12-08 Infosys Limited Early analysis of software design diagrams
US8635598B2 (en) * 2011-06-20 2014-01-21 Microsoft Corporation Automatic code decoration for code review
US9218271B2 (en) 2011-10-04 2015-12-22 International Business Machines Corporation Test planning based on dynamic coverage analysis
CN103246600B (zh) * 2012-02-10 2016-04-06 广州博纳信息技术有限公司 软件测评快速校验方法
US9032369B2 (en) 2012-03-26 2015-05-12 Software Ag Systems and/or methods for executing appropriate tests based on code modifications using live, distributed, real-time cache and feedback loop
US9317399B2 (en) * 2012-09-28 2016-04-19 Synopsys, Inc. Policy evaluation based upon dynamic observation, static analysis and code change history
US8996921B2 (en) * 2012-11-08 2015-03-31 International Business Machines Corporation Indicating coverage of Web application testing
US9201646B2 (en) * 2013-01-05 2015-12-01 Vmware, Inc. Automatic code review and code reviewer recommendation
US9946634B2 (en) * 2013-12-09 2018-04-17 International Business Machines Corporation System and method for determining test coverage

Also Published As

Publication number Publication date
KR20160068978A (ko) 2016-06-15
US20150169431A1 (en) 2015-06-18
US9405662B2 (en) 2016-08-02
WO2015094901A1 (en) 2015-06-25
CN105830037B (zh) 2018-01-12
CN105830037A (zh) 2016-08-03
EP3084610A1 (de) 2016-10-26
KR101672378B1 (ko) 2016-11-03

Similar Documents

Publication Publication Date Title
Su et al. Guided, stochastic model-based GUI testing of Android apps
McIntosh et al. An empirical study of the impact of modern code review practices on software quality
US10102113B2 (en) Software test automation systems and methods
Molyneaux The art of application performance testing: from strategy to tools
Potdar et al. An exploratory study on self-admitted technical debt
Da Costa et al. A framework for evaluating the results of the szz approach for identifying bug-introducing changes
Hu et al. Efficiently, effectively detecting mobile app bugs with appdoctor
US9824002B2 (en) Tracking of code base and defect diagnostic coupling with automated triage
CN105556515B (zh) 数据库建模与分析
Kochhar et al. Understanding the test automation culture of app developers
Kula et al. Do developers update their library dependencies?
D’Ambros et al. Evaluating defect prediction approaches: a benchmark and an extensive comparison
Bavota et al. A large-scale empirical study on self-admitted technical debt
Maiya et al. Race detection for Android applications
Shang et al. An exploratory study of the evolution of communicated information about the execution of large software systems
US8694967B2 (en) User interface inventory
Ampatzoglou et al. The effect of GoF design patterns on stability: a case study
Mirakhorli et al. Detecting, tracing, and monitoring architectural tactics in code
Chen et al. Characterizing logging practices in java-based open source software projects–a replication study in apache software foundation
US8079018B2 (en) Test impact feedback system for software developers
US8286143B2 (en) Method and system for monitoring code change impact on software performance
Thung et al. An empirical study of bugs in machine learning systems
US8141053B2 (en) Call stack sampling using a virtual machine
US10346282B2 (en) Multi-data analysis based proactive defect detection and resolution
Shang et al. Studying the relationship between logging characteristics and the code quality of platform software

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Term of protection extended to 6 years
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE