Assertions Markup und

book Assertions and markup

Es ist sehr wichtig, einen guten Prozess beim Schreiben der Testsuite. Ich werde über die eine, die für JLS verwendet wurde, zu sprechen.

Nach wie vor ist das Endprodukt der Anzahl der Prüfungen angegeben. Es besteht ein Zusammenhang zwischen den Tests und der Spezifikation. Die Behauptung gesteuerten Prozess gibt eine Vorstellung von dem, was jede Gruppe von Tests tatsächlich Kontrollen in der Spezifikation. Mit Hilfe dieser Beziehung die Entwickler die Reichweite berechnen kann, nutzen Sie die Liste der Behauptungen, auf denen die Tests nicht geschrieben wurden, etc.

Behauptung ist eine Aussage aus einer Spezifikation, die getestet werden können. Und der erste Schritt ist, alle Behauptungen, die in der Spezifikation zu identifizieren. Danach kann der Entwickler Tests schreiben.

Beispiel für die Behauptungen aus der Java Language Specification: smt Assertions and markup

  • Einen Compiler-Fehler auftritt, wenn die gleiche Modifier scheint mehr als einmal in einer Interface-Deklaration.
  • Die binären Namen eines Mitglieds Typ besteht aus den binären Namen seines unmittelbar einschließenden Typ, gefolgt von $, gefolgt von den einfachen Namen des Mitglieds.
  • Eine continue-Anweisung darf nur erfolgen, in einer Weile zu tun, oder für die Anweisung.

Es könnte viele Aussagen, die nicht überprüfbar oder Unsicherheit verbunden sind. Manchmal werden solche Aussagen gehören Wörter wie "möglich" oder "vielleicht". Es ist nicht wahr, dass wenn in einem Satz das Wort "kann" es ist nicht überprüfbar, aber normalerweise ist es so.

Beispiele für nicht prüfbare Aussagen:

  • Wir empfehlen nicht, wie "gemischte Schreibweise" für Array-Deklarationen.
  • Situationen, in denen die Klasse eines Objekts ist nicht statisch bekannt kann zu Laufzeit-Fehlern Typ.
  • Wenn wirft jedoch Auswertung eines Ausdrucks eine Ausnahme, dann ist der Ausdruck gesagt wird abrupt abgeschlossen.

Es gibt viele Diskussionen und Streitigkeiten über die Behauptungen. Einige sagen, dass Beispiele nicht als Behauptungen behandelt werden. Andere sagen, dass jede Aussage eine Behauptung ist, und es gibt zwei Arten von ihnen: überprüfbare und nicht überprüfbar. Meine persönliche Meinung ist, dass eine Behauptung ist sicherlich etwas, überprüfbar. Und in den meisten Fällen Beispiele sind Behauptungen, nur weil der Test schriftliche Prüfung der speziellen Beispiel kann.

Der Prozess der Ermittlung Behauptungen in der Spezifikation heißt Markup. Es gibt viele Ansätze. Aber in jedem Fall muss der Benutzer in der Lage, Informationen darüber, ob die Aussage ist eine Behauptung und irgendwie unterscheiden, eine Behauptung von einem anderen zu gelangen. Es könnte ein separates Repository mit Zuordnung von Aussagen und ihre id's Aussagen sein. Ich mag die Idee der Integration der Markup in der Spezifikation. Dieser Ansatz wurde gewählt, die für den Bereich der Sprache Java SE Testpaket. Die JLS wurde in FrameMaker geschrieben. Mit dem Export-Mechanismen die PDF-und HTML-Versionen erstellt wurden. Die HTML-Version wurde bei der Erstellung der Test-Suite verwendet.

In JLS und JLS-2 einige spezielle Anker den Anfang und das Ende einer Aussage identifiziert. Ergänzende Informationen war die assertionID und kurze Zusammenfassung der Aussage. Das Ende Anker war ein Bild und einen Link auf die Probe. Die HTML-Ansicht und Code-Ansicht auf den entsprechenden Abbildungen. Die Behauptung, id's sind arr033, arr034, arr020, etc.

JLC2 html1 Assertions and markup

JLC2 html code1 Assertions and markup

Die allgemeine Idee kann wie folgt beschrieben werden:

<a name=assertionID> <! - shord Beschreibung als HTML-Kommentar ->
Assertion hier
<img src="pics/assert.gif"> <a href="path zu test"> Test-ID, das ist das gleiche wie Behauptung ID </ a>

Wenn einzelne Aussagen in verschiedenen Teilen der Spezifikation werden von einem Test der erste Tag getestet wird so etwas wie arr033_0, arr033_1, arr033_2 werden.

Diese Art von Architektur war für JLS und JLS-2 verwendet. Es war leicht für JLS3 geändert, aber die Grundidee wurde beibehalten. Ich kenne einige Beispiele von Ansätzen mit nicht-statischen Behauptung IDs in einem separaten Repository, wo sich einige ID-Hash-Wert berechnet auf der Grundlage des Inhalts gehalten. Aus mehreren Gründen Dabei zeigte sich, als nicht eine sehr gute Lösung. Es ist immer ein schwieriger Prozess der Migration auf die neue Version der Spezifikation. Aber meiner Meinung nach ist es viel einfacher mit der statischen ID's in der Spezifikation eingebettet.



, , , , , , , , , , , , , , , , , ,
  • Share / Bookmark
Print This Post Print This Post

Spezifikation, Konformität, Verträglichkeit, Tests ... Was sind sie überhaupt?

Manchmal all diese Begriffe scheinen ziemlich verwirrend. Oder ist es besser zu sagen, dass sie meistens oder sogar immer. abstract Specification, conformance, compatibility, tests... What are they all about? Vor allem, wenn verschiedene Personen und Firmen die Situation um sie zu verstehen in unterschiedlicher Weise. Also fangen wir von Anfang an.

Es gibt viele Spezifikationen oder Normen um uns herum. Webster Dictionary beschreibt Norm als etwas etabliert Beispiel durch Autorität, Sitte oder allgemeine Zustimmung als Modell oder. Also im Grunde ist es die Liste der Regeln, die während der Verwendung anderer haben zu gehorchen.

Lassen Sie uns eine Computer-Sprache. Vor allem der Spezifikation ist erforderlich, dass das gesamte Konzept Modell, sagen die Entwickler, was als ein Programm geschrieben werden können, beschreiben wird, wie es sich verhalten, was wird kompiliert, ausgeführt werden und etc. Nach der Erstellung aller notwendigen Unterlagen diesen - das ist es, kann man genau dort zu stoppen. Wenn die Idee gut genug ist, mehrere andere Unternehmen wünschen konnte, um ihre Implementierungen zu erstellen: Fe-Compiler und Ausführung Umgebungen. Aber sie gehorchen müssen der Spezifikation. Ansonsten gelten die gleichen Programme werden auf einer laufen und laufen unterschiedlich oder sogar auf der anderen die Umsetzung scheitern. Fulfillment durch eine Umsetzung aller genannten Anforderungen genannt wird Konformität.

Warum ist es so wichtig? money coins Specification, conformance, compatibility, tests... What are they all about? Nun, sagen wir mal diese neue Sprache verwendet wurde, um ein Programm für die Börse zu schaffen. Stell dir vor es in den USA geschrieben wurde, gut getestet und verwendet an der NYSE. Es war so gut, dass andere Länder in der ganzen Welt eine Lizenz gekauft und begann es zu benutzen für ihre Umsetzung dieser neuen Sprache. Wenn eine Anwendung nicht gehorchte der spec, könnte das gleiche Programm verschiedene Dinge mit Kunden Geld zu tun. Grundsätzlich diesem Programm Börse zu veräußern, wenn der Handelsvertreter "buy"-Taste, oder kaufen Stahl anstelle von Obst geschoben.

Die gute Frage könnte lauten: "Warum unterschiedliche Implementierungen? Lassen Sie uns ein und es nutzen. ". Es gibt verschiedene Antworten. Mehrere Unternehmen Vielleicht möchten Sie diese Sprache auf verschiedenen Plattformen (Solaris, Linux, Windows) und Geräte (Desktop, Handy, PDA, Taschenrechner Studenten, etc) zu verwenden. Andere wollen Algorithmen für ihre Bedürfnisse zu optimieren, zB so setzen sie die großen Datenbank-Programm werden 10-mal schneller.

Der entscheidende Punkt ist, dass verschiedene Implementierungen müssen genau die gleiche Arbeit und nach dem spec. Wenn sie sich so nennt man sie kompatibel. Das Schlimme ist, dass niemand sicher sein kann. Deshalb ist die Überprüfung Mechanismus benötigt wird. Normalerweise ist es ein Test-Suite, die Kompatibilität überprüft die Konformität und. Und in diesem Fall ist es falsch zu sagen, fast etwas kompatibel oder 99% kompatibel ist. Es könnte entweder Ja oder Nein.

no bug2 Specification, conformance, compatibility, tests... What are they all about? Let's move Richtung ein Beispiel. Sun Microsystems Java erfunden Sprache. Um genauer zu sein mehrere Versionen von Java für verschiedene Märkte geschaffen. Die bekanntesten sind Java ME , Java SE und Java EE . Und für jeden von ihnen gibt es eine separate Spezifikation. Sun Microsystems hat seine eigene Anwendung, die am häufigsten verwendet wird. Doch die Sprache ist so gut, dass es ziemlich viele andere Unternehmen und deren Implementierungen. Für die Kompatibilität und Konformität Zwecke gibt es TCKs (Conformance Test Kit). TCK ist ein Produkt, eine Reihe von Tests, die bei einer Implementierung korrekt ist nach den Regeln von der Spezifikation zu überprüfen beinhaltet.

Meine Absicht war es, eine Idee von dem, was Spezifikation konform sind Kompatibilität und TCK und warum sie so wichtig sind, zu geben.



, , , , , , , , , , , , , , , , , , ,
  • Share / Bookmark
Print This Post Print This Post