PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Script ("Benchmark") für Websurfing-Simulation schreiben


Platos
2021-08-22, 12:57:06
Ich würde gerne ein Skript schreiben, welches möglichst durchschnittliches Websurfing simuliert. Einmal mit Videos und einmal ohne.

Dabei sollen Webseiten geladen werden (einfach), Wartezeiten eingebaut werden (einfach), in Webseiten gescrollt werden (Schwierig?) und in Webseiten die Maus bewegt werden (schwierig?). Das ganze soll dann als Dauerschleife genutzt werden können, wobei eine Schleife auch nicht gerade zu kurz sein sollte (es soll schliesslich nicht immer die selbe Webseite aufgerufen werden).

Das andere Skript soll einfach noch Webseiten von Youtueb mit 4k60 Videos laden. Das wäre dann keine zusätzliche Hürde, denke ich.

Kann mir da jemand helfen bzw. Anreize geben, wie und wodurch ich das machen kann? Meine Idee war, eine Batch-Datei zu erstellen, die mittels Terminal eben diese Dinge erledigt. Ich denke Webseiten aufrufen und Wartezeiten einbauen kriege ich noch hin mit etwas Auffrischung meiner Kenntnisse :D Aber beim anderen könnte ich durchaus Hilfe brauchen.

Ich erwarte nicht, dass ihr mir den "Code" schreibt. Aber ein paar Anreize, wie man die Maus bewegt oder scrollt und wie man das vernünftig schreibt, wäre Hilfreich.

Das ganze soll dann wie gesagt ein Benchmark sein. Dieser dient der Energiemessung, also d.h man soll damit ermitteln können, wie viel Strom man beim Browsing verbraucht. Notebookcheck hat z.B ein Skript für Webbrowsing, um die Akkulaufzeit zu messen (Im Grunde ist das das selbe Prinzip). Das Skript sollte also nicht den Energieverbrauch stark verfälschen.

Monger
2021-08-22, 13:26:06
Für Browser hat sich mittlerweile Selenium als UI Automatisierung durchgesetzt. Gibt auch ne "Selenium IDE", die Aktionen aufzeichnen und wieder abspielen kann.

https://en.m.wikipedia.org/wiki/Selenium_(software)#:~:text=Selenium%20IDE%20is%20a%20complete%20integrated%20de velopment%20environment,tests.%20It%20was%20previously%20known%20as%20Selenium%2 0Recorder.

Bin aber grad unsicher ob Selenium mit den Scrollbars interagiert, oder das indirekt via DOM Manipulation macht. Um aber den von dir gewünschten Stresstest zu fahren, sollte das ausreichen.

Aber aufgepasst: manche Seiten lassen sich super automatisieren, manche total beschissen. Nicht wundern wenns auf Anhieb nicht klappt, probier evtl. anfangs was simpleres.

Platos
2021-08-22, 13:57:07
Ist das eine Software? Denkst du, dass diese Software selbst die CPU Last erhöhen könnte? Es soll ja damit die durchschnittliche Leistungsaufnahme berechnet werden und ein "rohes" Skript könnte da weniger Leistung ziehen, wie eine ganze Software?

Was genau müsste ich da downloaden :D ?
https://www.selenium.dev/downloads/

https://www.notebookchat.com/index.php?topic=42357.msg214102#msg214102

Hier wird folgendes gesagt: Ein recht einfaches Script das im iframe nacheinander verschiedenste Webseiten aufruft.

Was ist iframe?

Monger
2021-08-22, 14:01:26
Ist das eine Software? Denkst du, dass diese Software selbst die CPU Last erhöhen könnte?

Ich weiß nicht welche Präzision du brauchst, aber der Overhead durch Selenium ist sehr gering. Ist nicht unüblich, damit Performance zu messen.


https://www.notebookchat.com/index.php?topic=42357.msg214102#msg214102

Hier wird folgendes gesagt:

Was ist iframe?
IFrame ist ne Browsertechnik, in der ein Browserfenster isoliert in ein anderes eingebettet wird. Machen viele Webseiten so.

Platos
2021-08-22, 14:07:40
Ja, dann nehme ich doch dieses Selenium. Aber was muss ich da downloaden?

Und bezüglich Aufzeichnen: Wäre das nicht noch besser, wenn man möglichst eine praxisnahe Simulation erstellen will?

Könntest du mir die beiden Downloadlinks verlinken :D ? Ich weiss nicht genau, welche Version ich da downloaden muss. Da gibts irgendwie mehrere.

Monger
2021-08-22, 14:23:08
Das ist das Addon für Chrome:
https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd

Platos
2021-08-22, 14:30:29
Ah, es ist ein Add on? Ok, ich werde es mir mal ansehen, danke.

Platos
2021-08-22, 15:32:31
Hmm leider kann man damit das Mausrad nicht benutzen. Wird irgendwie nicht aufgezeichnet.

Ich frage mich allerdings, ob man diese Tests auch auf anderen Geräten abspielen kann. Das soll ja auf verschiedenen Geräten abgespielt werden können.

Platos
2021-08-22, 16:07:46
Also zumindest die Recordfunktion ist ziemlich nutzlos. Man kann das Mausrad nicht benutzen, kann die Tastatur nicht benutzen (wenn ich eine andere url eingebe während dem aufnehmen und dort dann etwas anklicke funktioniert nichts mehr) .

Es geht nur, wenn ich nur die maus benutze bzw. nur die linke Mausetaste. Nichts anderes. Da muss ich mir wohl was anderes überlegen.

Edit: Doch die Tastatur kann man nutzen. Aber irgendwie funktioniert einfach alles nicht richtig. Einfach mal browsen und aufnehmen kann man getrost vergessen leider.

universaL
2021-08-23, 09:38:44
hmm... Selenium wird gerne für automatisierte Tests genutzt (TDD, Integrationstests). Hier dann auch in Verbindung mit Firefox und Chrome, meist wahrscheinlich in den Headless-Varianten, aber das wird für dich wahrscheinlich nicht das Richtige sein.

Es sollte quasi für jede populäre Sprache eine Anbindung an Selenium geben, in welcher Sprache programmierst du denn?

In Ruby zum Bleistift in Verbindung mit Capybara sieht es dann Pseudo-mäßig so aus:


visit "google.com"
fill :search_field_id, with: "selenium and capybara are cool!"
click "some css selector"
...


aber imho: Am Ende musst du eh deinen eigenen Webserver/deine eigenen Webseiten mitbringen, für einen reproduzierbaren Lauf ist das Internet zu veränderlich

Platos
2021-08-24, 15:49:08
Hmm ja, ich sehe, das wird schwierig. Ich glaube, ich kann nur bestimmte Webseiten aufrufen, das wird wohl das einzige sein, was halbwegs langfristig geht (man muss eben nur Webseiten nehmen, die nicht gleich morgen zugehen). Und Videos werden wohl nur welche gehen, die ich selbst uploade, damit sie auch wirklich da oben bleiben.

Simon Moon
2021-08-25, 04:19:29
Selenium ist eher da um eine Webseite zu testen. Du möchtest aber wie ich verstehe eher deinen PC während dem surfen benchmarken?

Dann wär sowas evtl. geeigneter
https://github.com/marty90/PyChromeDevTools

Die Maus wirst du da aber denke ich nicht brauchen können. Es macht auch relativ wenig Sinn für ein Script deine Mausbewegung aufzunehmen - das funktioniert ja dann nur gerade bei der Aufzeichnung und exakt gleichen Rahmenbedingungen. Änderst du die Auflösung, die Webseite passt das Design an, dein Browser rendert etwas anders nach einem Update usw. macht die Aufzeichnung u.U. nutzlos. Es ist daher sinnvoller sich am Code der Seite zu orientieren und die Events die du auslösen möchtest zu scripten. Also bspw. geh auf Seite xy, klicke auf Link ab, führe dort javascript nk aus usw. Den Cursor kann man für die Performance denke ich vernachlässigen, das verursacht keine Rechenlast.

Mit dem Framework hast du Zugriff auf die DevTools. Du kannst da dann z.b. auch Infos übers System abfragen, messen wie lange eine Seite zum rendern braucht, einstellen was im Cache sein soll usw. usf. Hier eine Übersicht der Funktionen:
https://chromedevtools.github.io/devtools-protocol/

Platos
2021-08-25, 16:32:12
Also ich will einen "Benchmark" erstellen, der auf jedem Gerät mit Windows 10 lauffähig ist. Er soll nicht die Leistung des Geräts testen, er soll gar nichts testen, er soll eine Last simulieren und zwar die, die man beim Browsen hat. Also es ist eher eine Simulation, die durchgeführt werden können soll.

Ziel ist, während dessen die Leistung zu messen bzw. die Energie und Zeit und dann die durchschnittliche Leistung (des gesammten Geräts).

Und ja, stimmt. Eine AUfnahme führt da nicht zum Ziel. Allerdings wenn ich die Maus nicht bewegen kann/soll und auch nicht scrollen kann, dann muss ich auch nicht klicken. Dann kann ich einfach ein Script erstellen, dass ständig Webseiten aufruft und dazwischen 10-30s Zeit vergehen lässt. Denn im Grunde wäre das nichts anderes mehr, wenn ich weder scrollen noch die Maus bewegen kann.

Da weiss ich aber nicht so recht, wie realitätsnah das ganze dann noch ist. Und bei aufwendigen Webseiten führt Scrollen schon zu einer höheren Auslastung. Die Mausbewegung vlt. weniger.

Webseiten aufrufen sollte ich doch auch mit dem Terminal machen können bzw. einer Batch datei, oder?

Simon Moon
2021-08-25, 18:59:19
Relevant ist ja, womit du die Webseite aufrufst um die Last zu simulieren.

Du kannst z.b. eine Seite anpingen. Dann wird einfach ein TCP Paket gesendet und geschaut, ob eine Antwort kommt. Oder du nimmst curl, das lädt dann einfach runter, was unter dem Link verfügbar ist.

Du kannst eine Webseite auch mit Lynx (Browser für den Terminal) aufrufen, das erzeugt dann schon etwas Last auf deinem PC, da zumindest der HTML Code interpretiert und gerendert wird. Oder du kannst eine Seite mit Google Chrome aufrufen, dass erzeugt dann wesentlich mehr Last, da auch der Javascript, Webassambly etc. Code ausgeführt wird.

Das Scrollen führt bei aufwändigen Webseiten deshalb zu einer höheren Auslastung, weil der Content im Browser neu gerendert werden muss. Das ist dann ein Input-Event, das du in dein Script einbaust: https://chromedevtools.github.io/devtools-protocol/tot/Input/ .

So kannst du dann ganz genau definieren, was dein Browser auf welcher Webseite genau tun soll und das wird dann immer exakt gleich ausgeführt und du kannst verschiedene Systeme vergleichen. Voraussetzung ist hier halt Chrome, afaik gibts für FF nichts Vergleichbares. Windows 10 an sich ruft keine Webseiten auf, das ist immer eine Anwendung die das in irgendeiner Form tut.

Platos
2021-08-25, 20:28:07
Ja, geht natürlich auch mit chrome, ist ja egal. Aber hört sich sehr aufwendig an, vor allem als Neuling.

Aber es muss auf jeden Fall wirklich der Browser geöffnet werden (vom Terminal aus kann man ja auch nen Browser öffnen und dort dann ne Webseite aufrufen lassen).

Aber dann schaue ich mir das mal an, wobei ich vermutlich Stückchenweise über die nächsten Wochen mal dran arbeiten werden.

Simon Moon
2021-08-25, 20:56:08
Du möchtest ja die Last beim surfen simulieren und dazu gehört halt auch ein Browser. Genauso wie du bei einem Gamebenchmark auch die entsprechende Engine brauchst, um dann abschätzen zu können wie die Last bei dem Spiel ist.

Viel einfacher ist nicht mehr möglich. Du hast ja alle Funktionen die der Browser so mitbringt, gelistet. Du hast eine Javascript Engine um den Code einer Website auszuführen. Und du hast diverse Metriken, die du abfragen kannst.

Da ist sogar ein Beispiel auf der github page:
import PyChromeDevTools
import time

chrome = PyChromeDevTools.ChromeInterface()
chrome.Network.enable()
chrome.Page.enable()

start_time=time.time()
chrome.Page.navigate(url="http://www.google.com/")
chrome.wait_event("Page.loadEventFired", timeout=60)
end_time=time.time()

print ("Page Loading Time:", end_time-start_time)


Du kannst mit Python nebenbei auch interaktiv im Terminal arbeiten. Einfach "python3" (oder evtl. nur "python") eingeben im Terminal und die shell öffnet sich.

Freestaler
2021-08-25, 23:20:47
Tipp am Rande Pass einfach auf das du den Effekt von unterschiedlicher Werbung weg kiegst. Evtl. Einfach über die Menge? Werbungeffekt z.b. 5 sek oder 30 videovorwerbubg oder gif statt jpg usw.

Platos
2021-08-26, 19:16:13
Ach, das habe ich auch nicht bedacht. Das wird ja immer aufwendiger/unmöglicher:D Stimmt eig. schon, bei heutigen Webseiten ist ja die Werbung oftmals fast die ganze Last, die verursacht wird. Aber wenn ich einfach sehr viele Webseiten aufrufe, sollte die Werbung da potentiell weniger unterschied machen, oder nicht? Bei Videos hatte ich ja die Idee, dass ich selbst welche (ohne Werbung) hochlade. Denn das müsste man ohnehin machen, wenn man nicht will, dass irgendwann die Videos nicht mehr hochgeladen sind und alles neu gemacht werden muss.

Aber ich weiss ja nicht, ob das so eine gute Idee ist mit dem Webseiten-Skript. Weil es geht eigentlich darum, die Effizienz von Geräten (PCs/Laptops) zu testen. Aber eben in verschiedenen Lastszenarien. Für Idle und Vollast ist das einfach. Aber wie könnte ich die Last einer Browsingsession simulieren? Also es geht um den Stromverbrauch. ALso jetzt abgesehen von eben einem SKript, das Webseiten aufruft.

Ich weiss, es gibt Benchmarks, aber die simulieren keine Last, die testen die CPU/GPU auf eben ihre Leistungsfähigkeit, fordern also bewusst viel. Ich will ja aber eine Simulation haben und ich glaube, dafür gibt es keine Software im Internet (oder doch?). Deswegen dachte ich, ich könnte selbst was erstellen.

Aber es sollte schon reproduzierbar sein und auch nicht extrem viel Aufwand erfordern (Ich habe eig. keine wirklichen Programmierkenntisse, müsste mich also dann durch Turtorials kämpfen etc.)

Vlt. erstelle ich nochmals eine neue Frage :D

Simon Moon
2021-08-27, 12:15:33
Aber wie könnte ich die Last einer Browsingsession simulieren?






Mit einem Browser? :|

Platos
2021-08-27, 17:38:22
Mit einem Browser? :|

Jaa... aber scheint mir schwierig, wenn so viele Variablen rein spielen, eine reproduzierbare Simulation zu erstellen.

Aber gut, werde mir das ganze später nochmals anschauen ^^ Habe momentan viel zu tun.