praegune kellaaeg 17.06.2025 18:28:07
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
brixxx
Lõuapoolik


liitunud: 04.01.2012
|
10.08.2015 19:09:41
Regex probleemid |
|
|
Täna lõpuks sain ühe regexi tööle, väga optimeeritud küll regex ei ole, aga vähemalt leiab atribuudi väärtuse.
Regex: <test value="([0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9])"\/>
Täpsemalt koostasin Jmeteris ühe SOAP/XML-RPC Request ning nüüd üritan response datast leida kindlat elemendi attribuuti (ühesuguseid elemente on mitmeid, aga atribuudi väärtus erineb) - vajalik on, et see oleks esimene leitud elemendi atribuudi väärtus. Täpsustuseks Response data tuleb väga suur, et osa andmeid jääb response datas puudu.
Näidis - response data oleks:
<tests>
<test value="54481574952185"/>
<test value="14875942186549"/>
<test value="25714936485170"/>
</tests>
Probleem tekib, siin selles, et kõigepealt üritasin regexi tööle saada lehel regex101.com, sain tööle ja leiab õiged atribuudi väärtuse ning tundub, et leiab ka esimese sama nimetusega elemendi atribuudi väärtuse, mis mul vaja ongi.
Kuid kui kasutan sama regexit Jmeter funktsioonis Regular Expression Extractor, sel juhul leiab hoopis muu väärtuse ning kui avada response data ning otsida sealt dokumendist leitud atribuudi väärtust, siis ei leia.
Ei saagi aru, milles probleem on - ise arvan, kas otsib kaugemalt response datast atribuuti mida response data ei kuva või regex tekitab random väärtuse, aga samas väärtuse formaat tundub alati korrektne (nt. 20150607154836).
Lisan siia Jmeter funktsiooni Regular Expression Extractori ekraanipildi, mis valikud on täidetud:
Äkki keegi oskab kommenteerida, milles probleem on?
viimati muutis brixxx 11.08.2015 16:39:17, muudetud 2 korda |
|
tagasi üles |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
11.08.2015 12:10:35
|
|
|
Nii, JMeteri spetsiifikast - Match no. on sul 0 ja kõrval kirjas, et 0 tähendab random ehk juhuslik. Seega vaadatakse sul kogu response data läbi ja tagastatakse juhuslik match. Kui sa tahad esimest matchi saada, siis pane sinna lahtrisse 1.
Kaks sammu tagasi võttes - kas see regex peab nii jube olema? Kas ma saan aru, et sa tahad matchida väärtusi, kus on vähemalt 14 numbri pikkude väärtus? Või peab ta täpselt 14 numbrit olema? Igal juhul, kas JMeteris see ei töötaks?
<test value="([0-9]{14,})"\/> |
Juhul, kui peab täpselt 14 olema, mitte 14 või rohkem, siis võta koma ära.
_________________ Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist. |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
brixxx
Lõuapoolik


liitunud: 04.01.2012
|
11.08.2015 16:35:03
|
|
|
Fukiku kirjutas: |
Nii, JMeteri spetsiifikast - Match no. on sul 0 ja kõrval kirjas, et 0 tähendab random ehk juhuslik. Seega vaadatakse sul kogu response data läbi ja tagastatakse juhuslik match. Kui sa tahad esimest matchi saada, siis pane sinna lahtrisse 1.
Kaks sammu tagasi võttes - kas see regex peab nii jube olema? Kas ma saan aru, et sa tahad matchida väärtusi, kus on vähemalt 14 numbri pikkude väärtus? Või peab ta täpselt 14 numbrit olema? Igal juhul, kas JMeteris see ei töötaks?
<test value="([0-9]{14,})"\/> |
Juhul, kui peab täpselt 14 olema, mitte 14 või rohkem, siis võta koma ära. |
Tänud nüüd sain tööle, nüüd on võibolla veidi kergem edasi minna automaattesti koostamisega. Minu regex on seetõttu suht jube kuna alles õppin regexit kasutama ning väga hästi veel ei oska seda.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Pean siiski uuesti täie poole pöörduma - olen üritanud terve päev erinevate variantidega 2 probleemi lahendada.
Koostan taas näidis xml-i:
<list>
<books>
<book year="2010" state="norway"/>
<book year="1985" state="sweden"/>
<book year="2004" state="germany"/>
</books>
</list>
1. Probleem on selles, et ei suuda kuidagi töötavat regexsit kirjutada, et otsiks sellise asukoha järgi - <books>/<book year="2010" state="norway"/>:
Toon mõned regexid nt - mida proovisin:
* <books>\/<book year="[0-9]{4}";
* (<books>)\/(<book year="[0-9]{4}")
* (<books>\/<book year="[0-9]{4}")
* (<books>)+(<book year="[0-9]{4}")
* (<books>+<book year="[0-9]{4}")
Aga midagi ei leita, olen netist mitmeid juhendeid ja regexi testreid katsetanud ja lugenud ning ei leia mitte sobivat süntaksit.
2. Probleem on selles kui leida, kas eraldi ühe elemendi teine attribuudi väärtus või ühe regexiga leida kõik kahe attribuudi väärtused. Kuidas seda on võimalik teha, olen netis samuti terve päev uurinud ja katsetanud erinevaid variante ning tundub, et leiab ainult esimese atribuudi väärtuse.
Esimese atribuudi väärtuse leiab regexiga:
* <book year="([0-9]{4})"
Teise atribuudi väärtuse puhul üritan leida - erinevat pidi, toon nt:
* <book year="([0-9]{4})" state="([a-z])"\/>
* <book year="([0-9]{4})" state="([a-z])";
* <book state="([a-z])"\/>
* <book year="([0-9]{4})" state=""\/>
* <book year="([0-9]{4})" state.
|
|
tagasi üles |
|
 |
troglodyte
Kreisi kasutaja

liitunud: 09.08.2002
|
|
Kommentaarid: 34 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
brixxx
Lõuapoolik


liitunud: 04.01.2012
|
11.08.2015 20:06:45
|
|
|
Tänud vastuse eest, selle asja sain toimima, et leian nüüd elemendi mõlema atribuudi väärtuse - nt. regex: <book year="([0-9]{4})" state="([a-z]{0,})" - ning ükshaaval saan ka leida:
* <book year="([0-9]{4})"| state="([a-z]{0,})" - year='2010';
* <book year="([0-9]{4})" |state="([a-z]{0,})" - state='norway'
Kuid seda probleemi ei suuda ikka lahendada, et regex otsib enne elemendi üles ning siis alamelemendist hakkab atribuudi väärtusi otsima. Kuna vaja teha test, leida esimene element nt. test, aga kuna response data xml on suur ning on mitmeid test elemente, aga õige test element on just nt. elemendi tests all. Seega tahaksingi alamelemendi asukoha ära identifitseerida.
Vastuseks, miks minu näidis xml on selline sodi, siis vastuseks sellele, et SOAP/XML-RPC Request annab response data xml-ks sellise sodi xml-i.
Korrektse xml-ga sain asukoha identifitseerimise tööle - (?<books>)<book year="([0-9]{4})" state="([a-z]{0,})" , aga kas keegi oskaks soovitada, kuidas seda regexit kasutada näidis xml-s.
Leidsin vist lahenduse, kuidas xml teha korrektseks, kasutades beanshell string Replace nagu nt. var res = str.replaceAll("\\\\u003c", "<"); - link.
Homme hakkan tööl uurima neid leitud asju, kas need toimivad.
|
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
11.08.2015 23:30:00
|
|
|
Miks sa XML'i ei töötle XML'i vahenditega ja miks vaja regexiga pornot teha?
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
brixxx
Lõuapoolik


liitunud: 04.01.2012
|
12.08.2015 03:07:26
|
|
|
mikk36 kirjutas: |
Miks sa XML'i ei töötle XML'i vahenditega ja miks vaja regexiga pornot teha? |
Vaja on teha automaattest, kus 1-st Soap Requesti response datast saab muutujad ning siis käivitab leitud muutujatega uue Soap Requesti. Hetkel väga kindel ei ole, kas Regular Expression Extractor funktsioonist saadud muutujaid saan Soap Requestis kasutada muutujatena, aga kui selgub, et ei saa, siis ilmselt peab kasutama beanshelli, õnneks regex on enam vähem õige, siis tuleb ainult beanshell skript välja mõelda.
|
|
tagasi üles |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
12.08.2015 10:59:17
|
|
|
mikk36 mõtles, et miks Sa sellest < ja > jamast korralikku XML-i ei tee ja seda näiteks XPath Extractor'iga ei töötle?
Pealegi, kas mingit mugavamat viisi automaattestimiseks pole, kui JMeter? JMeter on mõeldud koormustestimiseks, st palju ja korraga koormust andma. Kui sa tahad funktsionaalsust testida a'la ühiktestid, siis selleks on ehk mugavamaid vahendeid olemas kui JMeter. Olles elus ühe suure JMeter projekti teinud, siis ei, rohkem ei taha, suhteliselt kole asi on see.
_________________ Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist. |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
brixxx
Lõuapoolik


liitunud: 04.01.2012
|
13.08.2015 02:50:51
|
|
|
Fukiku kirjutas: |
mikk36 mõtles, et miks Sa sellest < ja > jamast korralikku XML-i ei tee ja seda näiteks XPath Extractor'iga ei töötle?
Pealegi, kas mingit mugavamat viisi automaattestimiseks pole, kui JMeter? JMeter on mõeldud koormustestimiseks, st palju ja korraga koormust andma. Kui sa tahad funktsionaalsust testida a'la ühiktestid, siis selleks on ehk mugavamaid vahendeid olemas kui JMeter. Olles elus ühe suure JMeter projekti teinud, siis ei, rohkem ei taha, suhteliselt kole asi on see. |
Kirjeldatud automaattesti 2-e soap requestiga kasutangi koormustestiks.
Mul ongi plaanis replaceda valed < ja > - < ja >. Mulle soovitati just regexit ning teiseks ei oska eriti xpath-i ka, õnneks regex hakkab ühe enam selgemaks saama.
Leidsin ka asukoha leidmise korrektse regeks ilma response data parsimiseta - (<books>)?(<book year="([0-9]{4})" state="([a-z]{0,})") ja (<films>)?\W<book year="([0-9]{4})".
|
|
tagasi üles |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
13.08.2015 09:58:11
|
|
|
Käsitsi regulaaravaldistest oma kodukootud XML parseri ehitamine ei ole vast väga mõistlik. XPath ei ole ka absoluutselt mingi raketiteadus.
Võtame näiteks selle sama raamatute nimekirja, mis sul siin enne oli.
xml:
|
<books> <book year="2010" state="norway"/> <book year="1985" state="sweden"/> <book year="2004" state="germany"/> </books>
|
Tahad teada kolmanda raamatu riiki? XPath avaldis on selline:
Võrreldes regulaaravaldisega väga lihtne ja loogiline - nagu failisüsteemis navigeerimine.
_________________ Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist. |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
brixxx
Lõuapoolik


liitunud: 04.01.2012
|
13.08.2015 13:57:35
|
|
|
Fukiku kirjutas: |
Käsitsi regulaaravaldistest oma kodukootud XML parseri ehitamine ei ole vast väga mõistlik. XPath ei ole ka absoluutselt mingi raketiteadus.
Võtame näiteks selle sama raamatute nimekirja, mis sul siin enne oli.
xml:
|
<books> <book year="2010" state="norway"/> <book year="1985" state="sweden"/> <book year="2004" state="germany"/> </books>
|
Tahad teada kolmanda raamatu riiki? XPath avaldis on selline:
Võrreldes regulaaravaldisega väga lihtne ja loogiline - nagu failisüsteemis navigeerimine. |
Selle lihtsa xml-ga isegi oskaks xPathi koostada, aga kui olen üritanud suurest response datast xpathi saada, siis ei leia midagi olen isegi kasutanud notepad++ xpathi õppimiseks. Aga üritan täna edasi uurida xpathi lahendust.
Sain Jmeteris juba regexit kasutades projekti valmis ning regex on saanud suht selgeks.
|
|
tagasi üles |
|
 |
LKits
HV Guru

liitunud: 06.09.2007
|
|
Kommentaarid: 13 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
13 |
|
tagasi üles |
|
 |
riaak
HV Guru

liitunud: 22.09.2002
|
20.10.2015 15:49:12
|
|
|
(\.?\d+)+
_________________ ¯\_(ツ)_/¯ |
|
Kommentaarid: 119 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
105 |
|
tagasi üles |
|
 |
LKits
HV Guru

liitunud: 06.09.2007
|
|
Kommentaarid: 13 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
13 |
|
tagasi üles |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
LKits
HV Guru

liitunud: 06.09.2007
|
|
Kommentaarid: 13 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
13 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|