Jaa


Regressiotestaus Vertaa-komennolla

PQTest Compare -komento on tehokas regressiotestaukseen tarkoitettu työkalu, jonka avulla voit arvioida liittimen toimintoja ja komentotekstin luontia perusteellisesti. Sen monipuolisuuden havainnollistamiseksi seuraavissa osioissa annetaan erilaisia esimerkkejä, jotka on räätälöity eri skenaarioita mukaan.

Peruskyselyt

Yksinkertaisin testausmuoto on lisätä yksittäinen kyselylauseke .query.pq-tiedostoon, jonka voit suorittaa käyttämällä Vertaa-komentoa. PQTest arvioi lausekkeen ja luo .pqout-tiedoston (tuloste) samalla nimellä. Kaikissa myöhemmissä suorituksissa se vertaa .query.pq-tiedoston arvioinnista luotua tulosta pqout(output)-tiedostoon samalla nimellä ja palauttaa arvioinnin tuloksen.

Esimerkki 1 – Kyselytiedoston Running Compare -komento, kun tulostetiedostoa ei ole

Seuraava esimerkki suorittaa yksittäisen kyselytestitiedoston käyttäen määritettyä Power Query -laajennusta ja luo tulostetiedoston vertailtavaksi.

<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"
  }
]

Esimerkki 2 – Kyselytiedoston Running Compare -komento, kun tulostetiedostoa ei ole olemassa ja FailOnMissingOutputFile-merkintä on määritetty

<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"
  }
]

Esimerkki 3 – Running Compare -komento kyselytiedostolle, jossa on tulostetiedosto

Seuraava esimerkki suorittaa yksittäisen kyselytestitiedoston käyttäen määritettyä Power Query -laajennusta, vertaa sitä tulostiedostoon ja palauttaa tuloksen.

<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"
  }
]

Testaaminen parametrikyselyllä

Parametrikysely on kysely, joka yhdistetään suorituksen aikana suoritettavaan testikyselyyn, jossa parametrikysely suoritetaan ensin. Tämän toiminnon avulla voit jakaa PQ/test-kyselytiedoston kahteen osaan: parametrikyselytiedostoon ja testikyselytiedostoon.

Agnostinen tietolähdetestaus parametrilla ja testikyselyn muodolla

Esimerkki käyttötapauksesta, jossa tästä toiminnosta olisi hyötyä, on tietolähdeagnostisen testiohjelmiston luominen. Voit käyttää parametrikyselyä tietojen noutamiseen tietolähteestä, ja testikysely on yleinen M. Jos haluat suorittaa testit toiselle liittimelle, sinun tarvitsee vain lisätä/päivittää parametrikysely osoittamaan kyseiseen tietolähteeseen.

Parametrikyselyn tärkein ero on se, että testikysely noudattaa eri muotoa. Sen sijaan, että se olisi kaavalauseke, sen on oltava M-funktio, joka ottaa yhden syöteparametrin, joka edustaa parametrikyselystä palautettua taulukkoa.

Oletetaan, että sinulla on seuraava testikysely:

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

Jos haluat muuntaa sen testi- ja parametrikyselyksi, sinun on jaettava ne seuraavasti:

Parametrikysely:

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

Testaa kyselyä:

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

Esimerkki 4 – Käyttämällä sekä parametrikyselyä että testikyselyä Vertaa-komennolla

<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"
  }
]

Diagnostiikan vertailu

Diagnostiikkatietoja voidaan arvioida käyttämällä Vertaa-komentoa tilaamalla diagnostiikkakanavalle. Kun Vertaa-komento suoritetaan, PQTest tulostaa .diagnostics-tiedoston kullekin tilatulle kanavalle, jossa oli tapahtuma. Se vertaa diagnostiikkatapahtumaa tulevissa suorittamisissa sen .diagnostics-tiedostoon, joka on samankaltainen kuin .pqout.

Esimerkki 5 – ODBC:n (Open Database Näyttöyhteys ivity) diagnostiikkakanavan tilaaminen kyselyn delegoinnin vahvistamiseksi lähteeseen

Seuraavassa esimerkissä näytetään, miten voit tilata ODBC-kanavan, joka sieppaa ODBC-ohjaimen luoman SQL-ohjaimen, kun kyselyn delegointia lähteeseen käytetään.

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

ODBC-diagnostiikkakanavan avulla voidaan varmistaa, että kysely on taittuu ja että se luo oikean SQL:n.

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

Kysely delegoi nyt lähteeseen ja luo seuraavan ODBC-komentotekstin .diagnostics-tiedostoon:

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

Asetustiedoston käyttäminen

Mikä tahansa vertaa-komennon komentorivin syöteparametri voidaan välittää myös JSON-asetustiedoston kautta. JSON-tiedostossa voi olla seuraavat asetukset:

Asetus Tyyppi Kuvaus
ExtensionPaths matriisi Matriisi poluista, jotka osoittavat liitintiedostoon (mez/pqx).
FailOnMissingOutputFile bool Vertaa-toiminto ei luo PQOut-tiedostoa ja epäonnistuu, jos sitä ei ole olemassa.
FailOnFoldingFailure bool Vertaa epäonnistuu, jos kyselyn delegointi lähteeseen -virhe annetaan.
ParameterQueryFilePath merkkijono M-lausekkeita sisältävä kyselytiedosto, joka yhdistetään suorituksen aikana testikyselytiedostoon. Yleinen käyttötapaus on, että käytössä on yksittäinen parametrikyselytiedosto, jolla määritetään M-lauseke useiden testikyselyiden tietojen noutamista varten.
QueryFilePath merkkijono Testattava kyselytiedosto, joka sisältää M-lausekkeen (.pq).
TrxReportPath merkkijono Luo TRX (Visual Studio Test Results File) -tulostiedoston ja erottaa JSON-tiedostot kutakin tietyn polun testiä varten.
Diagnostiset kanavat matriisi Testisuoritukseen liitettävien diagnostiikkakanavien nimi (esimerkiksi Odbc kyselyn delegointi lähteeseen -lausekkeiden sieppaamiseksi).

Jos käytössä on sekä komentorivin syöte- että asetusasetus, komentorivin syöte priorisoidaan.

Esimerkki 6 – Asetustiedoston käyttäminen komentoriviargumenttien sijaan

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

Yllä oleva komento vastaa seuraavaa komentoa:

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

Tässä settings.json on seuraava JSON-tiedosto:

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

Testaa paristot Vertaa-komennolla

Testiakku on kokoelma testejä, joissa arvioidaan koodin eri ominaisuuksia. Sijoita kyselytiedostot samaan kansioon, jotta PQTest voi helposti paikantaa ne. Määritä tietyn testitiedostonimen välittämisen sijaan kansiopolku, ja PQTest suorittaa kaikki .query.pq-testikyselytiedostot yksittäisessä läpäisyssä.

Esimerkki 7 - Testiakun suorittaminen

Oletetaan, että kansio nimeltä testi sisältää seuraavat tiedostot:

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

Koko testiakku voidaan suorittaa seuraavalla komentorivillä:

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

Testien ohittaminen testejä suoritettaessa

Testi voidaan ohittaa testejä suoritettaessa muuttamalla .query.pq-tiedoston laajennukseksi .query.pq.ignore.

Esimerkki 8 – Testin ohittaminen testejä suoritettaessa

Oletetaan, että kansio nimeltä testi sisältää seuraavat tiedostot:

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

Contoso.testa.query.pq- ja contoso.testc.query.pq-tiedostot suoritetaan, mutta contoso.testb.query.pq.ignore ohitetaan, kun testiakun suorittamiseksi suoritetaan seuraava komento:

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