Κοινή χρήση μέσω


Δοκιμή παλινδρόμησης με την εντολή σύγκρισης

Η εντολή σύγκρισης PQTest είναι ένα ισχυρό εργαλείο για τις δοκιμές παλινδρόμησης, δίνοντάς σας τη δυνατότητα να αξιολογήσετε διεξοδικά τις συναρτήσεις της σύνδεσης και τη δημιουργία κειμένου εντολών. Για να δείξουμε την ευελιξία του, οι επόμενες ενότητες θα παρέχουν διάφορα παραδείγματα προσαρμοσμένα σε διαφορετικά σενάρια.

Βασικά ερωτήματα

Η απλούστερη μορφή δοκιμής είναι η προσθήκη μιας μοναδικής παράστασης ερωτήματος σε ένα αρχείο .query.pq, το οποίο μπορείτε να εκτελέσετε χρησιμοποιώντας την εντολή σύγκρισης . Το PQTest αξιολογεί την παράσταση και δημιουργεί ένα αρχείο .pqout (έξοδος) με το ίδιο όνομα. Για τυχόν επόμενες εκτελέσεις, συγκρίνει την έξοδο που δημιουργείται από την αξιολόγηση του αρχείου .query.pq με το αρχείο pqout (έξοδος) με το ίδιο όνομα και επιστρέφει την έξοδο της αξιολόγησης.

Παράδειγμα 1 - Εκτέλεση εντολής σύγκρισης για ένα αρχείο ερωτήματος, όταν δεν υπάρχει αρχείο εξόδου

Το παρακάτω παράδειγμα εκτελεί ένα μεμονωμένο αρχείο δοκιμής ερωτήματος χρησιμοποιώντας την καθορισμένη επέκταση Power Query και δημιουργεί ένα αρχείο εξόδου για σύγκριση.

<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq
[
  {
    "Details": "Contoso.Contents(\"TestEndpoint\")",
    "EndTime": "2020-12-11T18:04:14.8991822+00:00",
    "Method": "Compare.TestFiles",
    "Name": "contoso.query.pq",
    "StartTime": "2020-12-11T18:04:11.1532388+00:00",
    "Output": [
      {
        "SourceFilePath": "contoso.query.pq",
        "OutputFilePath": "contoso.query.pqout",
        "Status": "Output File Generated",
        "SerializedSource": null,
        "SourceError": null,
        "OutputError": null
      }
    ],
    "Status": "Passed",
    "Type": "PQTest.Expression"
  }
]

Παράδειγμα 2 - Εκτέλεση εντολής σύγκρισης για ένα αρχείο ερωτήματος όταν δεν υπάρχει αρχείο εξόδου και ορίζεται η σημαία FailOnMissingOutputFile

<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq -fomof
[
  {
    "Details": "Contoso.Contents(\"TestEndpoint\")",
    "EndTime": "2020-12-11T18:04:14.8991822+00:00",
    "Method": "Compare.TestFiles",
    "Name": "contoso.query.pq",
    "StartTime": "2020-12-11T18:04:11.1532388+00:00",
    "Output": [
      {
        "SourceFilePath": "contoso.query.pq",
        "OutputFilePath": "contoso.query.pqout",
        "Status": "Missing Output File",
        "SerializedSource": "Output of contoso.query.pq",
        "SourceError": null,
        "OutputError": null
      }
    ],
    "Status": "Failed"
    "Type": "PQTest.Expression"
  }
]

Παράδειγμα 3 - Εκτέλεση εντολής σύγκρισης για ένα αρχείο ερωτήματος με ένα αρχείο εξόδου παρόν

Το παρακάτω παράδειγμα εκτελεί ένα μεμονωμένο αρχείο δοκιμής ερωτήματος χρησιμοποιώντας την καθορισμένη επέκταση Power Query, το συγκρίνει με το αρχείο εξόδου και επιστρέφει το αποτέλεσμα.

<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq
[
  {
    "Details": "Contoso.Contents(\"TestEndpoint\")",
    "EndTime": "2020-12-11T18:04:14.8991822+00:00",
    "Method": "Compare.TestFiles",
    "Name": "contoso.query.pq",
    "StartTime": "2020-12-11T18:04:11.1532388+00:00",
    "Output": [
      {
        "SourceFilePath": "contoso.query.pq",
        "OutputFilePath": "contoso.query.pqout",
        "Status": "Passed",
        "SerializedSource": null,
        "SourceError": null,
        "OutputError": null
      }
    ],
    "Status": "Passed",
    "Type": "PQTest.Expression"
  }
]

Δοκιμή με ερώτημα παραμέτρου

Το ερώτημα παραμέτρου είναι ένα ερώτημα που συνδυάζεται με ένα ερώτημα δοκιμής κατά τον χρόνο εκτέλεσης, με το ερώτημα παραμέτρου να εκτελείται πρώτο. Αυτή η λειτουργικότητα σάς επιτρέπει να διαιρέσετε το αρχείο ερωτήματος PQ/δοκιμής σε δύο μέρη: το αρχείο ερωτήματος παραμέτρου και το αρχείο ερωτήματος δοκιμής.

Δοκιμή μη αναγνωρίσιμης προέλευσης δεδομένων με παράμετρο και μορφή ερωτήματος δοκιμής

Ένα παράδειγμα μιας περίπτωσης χρήσης όπου αυτή η λειτουργικότητα θα ήταν χρήσιμη είναι η δημιουργία μιας οικογένειας μη αναγνωρίσιμων δοκιμών προέλευσης δεδομένων. Μπορείτε να χρησιμοποιήσετε το ερώτημα παραμέτρου για να ανακτήσετε δεδομένα από την προέλευση δεδομένων και να ζητήσετε το ερώτημα δοκιμής να είναι γενικό M. Εάν θέλετε να εκτελέσετε τις δοκιμές για μια άλλη σύνδεση, χρειάζεται μόνο να προσθέσετε/ενημερώσετε το ερώτημα παραμέτρου ώστε να παραπέμπει στη συγκεκριμένη προέλευση δεδομένων.

Μια βασική διαφορά όταν χρησιμοποιείτε ένα ερώτημα παραμέτρου είναι ότι το ερώτημα δοκιμής ακολουθεί μια διαφορετική μορφή. Αντί να είναι παράσταση τύπου, πρέπει να είναι μια συνάρτηση M που λαμβάνει μία παράμετρο εισόδου, η οποία αντιπροσωπεύει τον πίνακα που επιστρέφεται από το ερώτημα παραμέτρου.

Ας υποθέσουμε ότι έχετε το ακόλουθο ερώτημα δοκιμής:

let
    Source = Snowflake.Databases("...", "..."),
    Database = Source{[Name="...",Kind="Database"]}[Data],
    SelectColumns = Table.RemoveColumns(Database, { "Data" })
in
    SelectColumns

Για να μετατραπεί σε ένα ερώτημα δοκιμής και παραμέτρου, πρέπει να τα διαιρέσετε ως εξής:

Ερώτημα παραμέτρου:

let
    Source = Snowflake.Databases("...", "..."),
    Database = Source{[Name="...",Kind="Database"]}[Data],
    Schema = Database{[Name="...",Kind="Schema"]}[Data],
    Taxi_Table = Schema{[Name="...",Kind="Table"]}[Data],
in
    Taxi_Table

Δοκιμή ερωτήματος:

(Source) => let
    SelectColumns = Table.RemoveColumns(Source, { "VendorID" })
in
    SelectColumns

Παράδειγμα 4 - Χρήση ερωτήματος παραμέτρου και ερωτήματος δοκιμής με εντολή σύγκρισης

<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq -pa contoso.parameter.pq
[
  {
    "Details": "(Source) => let\r\n    Schemas = Table.RemoveColumns(Source, { \"Data\" })\r\nin\r\n    Schemas",
    "EndTime": "2020-12-11T18:04:14.8991822+00:00",
    "Method": "Compare.TestFiles",
    "Name": "contoso.query.pq",
    "StartTime": "2020-12-11T18:04:11.1532388+00:00",
    "Output": [
      {
        "SourceFilePath": "contoso.query.pq",
        "OutputFilePath": "contoso.query.pqout",
        "Status": "Passed",
        "SerializedSource": null,
        "SourceError": null,
        "OutputError": null
      }
    ],
    "Status": "Passed",
    "Type": "PQTest.Expression"
  }
]

Σύγκριση διαγνωστικών

Οι επιπλέον διαγνωστικές πληροφορίες μπορούν να αξιολογηθούν κατά τη χρήση της εντολής σύγκρισης με την εγγραφή σε ένα διαγνωστικό κανάλι. Όταν εκτελείται η εντολή σύγκρισης , το PQTest εξάγει ένα αρχείο .diagnostics για κάθε εγγεγραμμένο κανάλι που είχε ένα συμβάν. Για τυχόν επόμενες εκτελέσεις, συγκρίνει το διαγνωστικό συμβάν με το αρχείο .diagnostics του, όμοια με το .pqout.

Παράδειγμα 5 - Εγγραφή στο διαγνωστικό κανάλι ODBC (Open Database Σύνδεση ivity) για επικύρωση αναδίπλωσης ερωτήματος

Το παρακάτω παράδειγμα δείχνει πώς μπορείτε να εγγραφείτε στο κανάλι ODBC, το οποίο καταγράφει οποιαδήποτε SQL που δημιουργείται από το πρόγραμμα οδήγησης ODBC όταν χρησιμοποιείται αναδίπλωση ερωτήματος.

<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq -dc "Odbc"

Το διαγνωστικό κανάλι ODBC μπορεί να χρησιμοποιηθεί για να επαληθευτεί ότι ένα ερώτημα αναδιπλώνεται και ότι δημιουργεί το σωστό SQL.

let
    Source = AzureSpark.Tables("...")
    T1 = Source{[Schema="default",Item="DATABASE"]}[Data],
    SelectColumns = Table.Group(T1, {}, {{"Maximum", each List.Max([number_column]), type number}}),
    FirstN = Table.FirstN(SelectColumns, 1)
in
    FirstN

Το ερώτημα τώρα αναδιπλώνεται και δημιουργεί το ακόλουθο κείμενο εντολής ODBC στο αρχείο .diagnostics:

[
  {
    "Command": "DESCRIBE default.DATABASE;"
  },
  {
    "Command": "select top 1 max(`number_column`) as `C1` from `SPARK`.`default`.`DATABASE`"
  }
]

Χρήση αρχείου ρυθμίσεων

Οποιαδήποτε παράμετρος εισόδου γραμμής εντολών για την εντολή σύγκρισης μπορεί επίσης να διαβιβαστεί μέσω ενός αρχείου ρυθμίσεων JSON. Το JSON μπορεί να έχει τις ακόλουθες επιλογές:

Επιλογή Τύπος Description
ExtensionPaths πίνακας Πίνακας διαδρομών που δείχνουν προς το αρχείο σύνδεσης (mez/pqx).
FailOnMissingOutputFile δυαδ. Η σύγκριση δεν δημιουργεί ένα αρχείο PQOut και αποτυγχάνει εάν δεν υπάρχει.
FailOnFoldingFailure δυαδ. Η σύγκριση αποτυγχάνει εάν παρουσιαστεί σφάλμα αναδίπλωσης ερωτήματος.
ParameterQueryFilePath συμβολοσειρά Αρχείο ερωτήματος που περιέχει παραστάσεις M, που συνδυάζονται στον χρόνο εκτέλεσης με το αρχείο ερωτήματος δοκιμής. Μια συνηθισμένη περίπτωση χρήσης είναι να έχετε ένα μοναδικό αρχείο ερωτήματος παραμέτρου για να καθορίσετε μια παράσταση M για την ανάκτηση των δεδομένων για πολλά ερωτήματα δοκιμής.
QueryFilePath συμβολοσειρά Αρχείο ερωτήματος που περιέχει παράσταση M (.pq) που θα ελεγχθεί.
TrxReportPath συμβολοσειρά Δημιουργεί ένα αρχείο αποτελεσμάτων TRX (αρχείο αποτελεσμάτων δοκιμής Visual Studio) και ξεχωριστά αρχεία JSON για κάθε δοκιμή σε μια συγκεκριμένη διαδρομή.
DiagnosticChannels πίνακας Το όνομα των διαγνωστικών καναλιών που θα επισυναφθούν στην εκτέλεση της δοκιμής (για παράδειγμα, Odbc για την καταγραφή δηλώσεων αναδίπλωσης ερωτήματος).

Στην περίπτωση που παρέχονται τόσο η επιλογή εισαγωγής γραμμής εντολών όσο και η επιλογή ρυθμίσεων, η εισαγωγή γραμμής εντολών έχει προτεραιότητα.

Παράδειγμα 6 - Χρήση αρχείου ρυθμίσεων αντί για ορίσματα γραμμής εντολών

<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq -fomof

Η παραπάνω εντολή ισοδυναμεί με την ακόλουθη εντολή:

<Path to PQTest.exe>.\PQTest.exe compare -sf settings.json

Όπου settings.json είναι το ακόλουθο αρχείο JSON:

{
  "ExtensionPaths": ["contoso.mez"],
  "QueryFilePath": "contoso.query.pq",
  "FailOnMissingOutputFile": true
}

Δοκιμή μπαταριών με εντολή σύγκρισης

Η μπαταρία δοκιμής είναι μια συλλογή δοκιμών που αξιολογούν πολλαπλές πτυχές του κείμενού σας. Τοποθετήστε τα αρχεία ερωτημάτων στον ίδιο φάκελο, έτσι ώστε το PQTest να μπορεί να τα εντοπίσει εύκολα. Αντί να διαβιβάσετε ένα συγκεκριμένο όνομα αρχείου δοκιμής, καθορίστε τη διαδρομή φακέλου και το PQTest εκτελεί όλα τα αρχεία του ερωτήματος δοκιμής .query.pq σε ένα μόνο πέρασμα.

Παράδειγμα 7 - Εκτέλεση μιας μπαταρίας δοκιμών

Υποθέτοντας ότι ένας φάκελος με την ονομασία test περιέχει τα ακόλουθα αρχεία:

  • contoso.testa.query.pq
  • contoso.testb.query.pq
  • contoso.testc.query.pq

Μπορείτε να εκτελέσετε ολόκληρη την μπαταρία δοκιμής χρησιμοποιώντας την ακόλουθη γραμμή εντολών:

<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q .\test

Παράβλεψη δοκιμών κατά την εκτέλεση μιας μπαταρίας δοκιμών

Μια δοκιμή μπορεί να αγνοηθεί κατά την εκτέλεση μιας μπαταρίας δοκιμών αλλάζοντας την επέκταση του αρχείου .query.pq σε .query.pq.ignore.

Παράδειγμα 8 - Παράβλεψη μιας δοκιμής κατά την εκτέλεση μιας μπαταρίας δοκιμών

Υποθέτοντας ότι ένας φάκελος με την ονομασία test περιέχει τα ακόλουθα αρχεία:

  • contoso.testa.query.pq
  • contoso.testb.query.pq.ignore
  • contoso.testc.query.pq

Τα αρχεία contoso.testa.query.pq και contoso.testc.query.pq εκτελούνται, αλλά τα αρχεία contoso.testb.query.pq.ignore παραβλέπονται όταν εκτελείται η ακόλουθη εντολή για την εκτέλεση της μπαταρίας δοκιμής:

<Path to PQTest.exe>.\PQTest.exepqtest.exe compare -e contoso.mez -q .\test