Quantcast
Channel: cc :: somkiat
Viewing all 2000 articles
Browse latest View live

อย่าเพิ่งใช้งาน Robot framework SeleniumLibrary 6.1.1 นะ

$
0
0

สำหรับใครที่ใช้งาน Robot framework และ SeleniumLibrary อยู่
และใช้งานกับ Selenium grid ด้วยแล้ว
นั่นคือใน keyword Open Browser จะใช้งาน remote_url
จากการใช้งานพบว่า ไม่สามารถใช้งานได้
เพราะว่า ไม่ทำการส่งรายละเอียดของ request การทกสอบไปได้
ทำให้ Hub ใน Selenium grid ไม่สามารถหา node ทำงานได้
นานมาก ๆ จนเกิด timeout และไม่สามารถทดสอบได้

การแก้ไขในเบื้องต้นคือ กลับไปใช้งาน SeleniumLibrary 6.1.0 ก่อน

เท่าที่ดูพบว่า library นี้จะพยายามแก้ไขปัญหาจาก Selenium 4.10
ที่มีการเปลี่ยนแปลงเยอะ
ดังนั้นใช้กันอย่างระมัดระวังด้วยครับ


Google Chrome 117 สามารถทำการ mock XHR/fetch request ได้แล้ว

$
0
0

ใน Google Chrome 117 นั้น ทำการเพิ่มความสามารถใน DevTool เยอะเลย
หนึ่งในนั้นคือ การ override content ของ XHR/fetch request ได้
นั้นหมายความว่า สามารถทำการ mock api ต่าง ๆ
ที่เรียกจาก web browser ออกไปได้

โดยจะสามารถ override content ต่าง ๆ ได้ดังนี้

  • XHR/Fetch
  • Image
  • Font
  • Script ต่าง ๆ เช่น JS และ CSS เป็นต้น
  • HTML

การใช้งานเบื้องต้นเป็นดังนี้

ทำการ inspect ดูในส่วนของ network

จากนั้นทำการ allow permission ใน browser ให้สามารถ access ไปยัง disk ของเครื่อง
เพื่อทำการบันทึกการ override

สุดท้ายลองreload ใหม่ จะแสดงผลการเข้าส่วนที่ override ไว้ดังนี้

เท่านี้ก็ใช้งานได้แล้ว ง่ายมาก ๆ
ลอง Download ไปใช้กันดูครับ

สรุปจากการอ่านบทความ How Quora scaled MySQL to 100k+ Queries Per Second ?

$
0
0

เห็นใน feed มีการ share บทความเรื่อง How Quora scaled MySQL to 100k+ Queries Per Second
เป็นการ scale MySQL database ของระบบ Quora
ซึ่งเป็นระบบถามตอบปัญหาต่าง ๆ นั่นเอง
โดยมีการใช้งานคร่าว ๆ คือ

  • ผู้ใช้งานจำนวน 300 ล้านคนต่อเดือน
  • มีการ post คำถามประมาณ 10,000 post ต่อวัน

ข้อมูลต่าง ๆ จะเก็บไว้ใน MySQL นั่นเอง
ดังนั้นมาดูกันว่าทางระบบทำการ scale กันอย่างไร

ในการจัดการนั้น จะแบ่งออกเป็น 3 เรื่องตามรูปแบบของการใช้งาน

  • จำนวนการอ่านข้อมูล (Select)
  • จำนวนการเขียนข้อมูล (Insert, Update, Delete)
  • ขนาดของข้อมูลที่จัดเก็บ

มารายละเอียดแต่ละหัวข้อดังนี้

เรื่องที่ 1 จำนวนการอ่านข้อมูล (Select)

เนื่องจากระบบ Quora นั้นมีอัตราการอ่านข้อมูลที่สูงมาก ๆ
การ scale ด้านอ่านข้อมูลจึงสำคัญมาก ๆ
ซึ่งจะแบ่งการจัดการหรือปรับปรุงเป็น 2 เรื่องหลัก ๆ คือ

  • Query ที่ซับซ้อน เนื่องจากใช้งาน CPU สูงมาก ๆ รวมไปถึงการ join ที่เยอะ ๆ (ลูกอีช่าง join) และการ aggregate ข้อมูล (group by) รวมทั้งการดึงข้อมูลใน table ที่มีจำนวน row เยอะ
  • ในเรื่องหนึ่ง ๆ มีจำนวนการดึงข้อมูลที่สูง หรือ บ่อย ๆ ต้องทำการขยาย หรือ เพิ่มเครื่อง หรือต้องมีการทำ caching ขึ้นมา

โดยรวม ๆ แล้ว ต้องให้ database ทำงานเท่าที่จำเป็นเท่านั้น
ไม่ควรให้ทำงานอะไรที่เยอะเกินไป
ยกตัวอย่างเช่น

  • ถ้าต้อง join เยอะ ๆ ก็ลดการ join ด้วยการทำ pre-aggregation/join ไว้ก่อนดีกว่าไหม
  • ใช้งาน paging เพื่อลดการดูข้อมูลลงไป

ส่วนในการใช้งาน caching ก็ต้องระวังการ cache ที่ไม่ดีด้วยเช่นกัน
ไม่ใช่ต้อง caching ข้อมูลทั้งหมดเสมอไป

ใน table ใด มีข้อมูลที่เยอะ ๆ ก็ต้องระวัง
เพราะว่า เปลือง resource มาก ๆ performance ก็แย่
การ backup ก็ลำบาก
ดังนั้น ต้องเข้าใจก่อนว่าข้อมูลอะไรที่ต้องการใช้งาน หรือ ใช้งานจริง ๆ
อะไรที่ไม่ใช้ก็ลบทิ้งไปบ้าง (retention policy)
หรือต้อง split ข้อมูลเป็นกลุ่ม ๆ ตามการใช้งานเป็นต้น

ส่วนเรื่องการจัดการ storage ของ database จะใช้งาน RockDB

เรื่องที่ 2 จำนวนการเขียนข้อมูล (Insert, Update, Delete)

ในระบบมีการเขียนข้อมูลที่ไม่เยอะมากนัก
โดย MySQL จะเป็น cluster (master/slave)
ก็ยังมีปัญหาการ sync ข้อมูลจาก master ไปยัง slave ที่ช้า เมื่อมีการใช้งานเยอะขึ้น
เลยปรับมาใช้การ sunc แบบ parallel แทน
ถ้าส่วนงานไหนที่ต้องเขียนเยอะ ๆ จะใช้งาน HBase แทน
รายละเอียดการ optimize database เพิ่มเติม

Reference Websites

สรุปการใช้งาน Structured Log ของ Go กัน

$
0
0

ก่อนหน้านี้ Go 1.21 ออกมานั้น มี Structured log package (log/slog) ออกมาให้ใช้งาน
ซึ่งเคยอธิบายการใช้งานเบื้องต้นไว้ที่นี่
แต่ว่าต้องไปแบ่งปันเรื่อง logging สำหรับระบบที่พัฒนาด้วย Go
จึงทำการอธิบายแบบละเอียดขึ้นไว้หน่อย
มาเริ่มกันเลย

เริ่มจากปัญหาและข้อจำกัดของ log package กันก่อน

  • ปัญหาของ log level ใน go นั้นทำการจัดการเหมือนกันเลย ทำให้ยากต่อการแบ่ง หรือ กรองเอาบาง level
  • ไม่สนับสนุน context ทำให้ยากต่อการเพิ่มข้อมูลต่าง ๆ ลงไปใน log
  • ไม่สามารถจัดการเรื่อง log sampling ได้ นั่นคือจะเก็บ log ทุกอย่าง
  • สามารถ configuration ได้น้อย ทำให้ใช้งานจริง ๆ ไม่ได้
  • ไม่สนับสนุน structured log message ใช้ได้แค่ plain text เท่านั้น ต้องไปใช้ 3-party package นั่นเอง

ปัญหาต่าง ๆ ทำให้ log package ที่เป็น 3-party package ออกมามากมาย เช่น

  • logrus
  • zap

ดังนั้นใน Go 1.21 ได้เพิ่ม log/slog package เข้ามา

ซึ่งเขียนโครงสร้างของ package ออกมาคร่าว ๆ ได้ประมาณนี้

สิ่งที่จะเห็นได้ชัดคือ ใน Logger นั้นจะมี function ต่าง ๆ ให้ใช้งานตาม log level
รวมทั้งการส่งค่าต่าง ๆ เข้าไปได้ เช่น handler เป็นต้น
อีกอย่าง แต่ละ log level จะไม่มีการเรียกใช้งาน panic() หรือ exit() เหมือนกับ log package

การใช้งานแบบง่าย ๆ

[gist id="a9822fb8da96d927354a1532230ff1ca" file="1.go"]

ทำการเพิ่ม JSONHandler เข้ามาใน Logger

[gist id="a9822fb8da96d927354a1532230ff1ca" file="2.go"]

เราสามารถทำการ custom handler ผ่าน HandlerOptions ได้
สามารถกำหนดค่าต่าง ๆ ได้ เช่น log level และ attribute replace เป็นต้น

ใน log message นั้น สามารถเพิ่ม attribute และ nested key เข้าไปได้

ใช้งานผ่าน struct Attr ซึ่งมี type ต่าง ๆ ให้เลือกใช้งานมากมาย
หรือทำเป็น group ก็ได้

[gist id="a9822fb8da96d927354a1532230ff1ca" file="3.go"]

ทำการ custom log level ผ่าน interface Leveler

[gist id="a9822fb8da96d927354a1532230ff1ca" file="4.go"]

แน่นอนในส่วนของ Handler ก็ custom ได้ ผ่าน interface Handler

โดย default จะมีเพียง 2 handler คือ Text และ JSON เท่านั้น
ดังนั้นในการใช้งานอาจจะต้อง custom อีกแน่นอน

[gist id="a9822fb8da96d927354a1532230ff1ca" file="5.go"]

ใน log message อาจจะมี sensitive data ดังนั้นใน slog ก็สามารถซ่อนได้

จะทำการซ่อนไม่ให้แสดงใน log ผ่าน interface LogValuer
ยกตัวอย่าง จะแสดงเพียง id ของ User เท่านั้น

[gist id="a9822fb8da96d927354a1532230ff1ca" file="6.go"]

ใช้งาน slog ร่วมกับ web framework ต่าง ๆ ได้

มีคนทำ middleware ให้ลองนำไปใช้งานกันด้วย
เช่น slog: Echo middleware

หรือจะเป็น 3-party log package ต่าง ๆ ก็ใช้งาน slog เป็น backend ของตนเอง
ทำให้สามารถทำงานได้เป็นปกติ เช่น

ดูรายละเอียดเพิ่มเติมได้ที slog package

ขอให้สนุกกับการ coding ครับ

Reference Websites

ทาง GitHub บังคับให้ต้องใช้งาน Two-factor authentication (2FA) ก่อนสิ้นปี 2023

$
0
0

ตอนนี้ทาง GitHub ได้ประกาศให้สมาชิกที่ใช้งาน
ต้องทำเปิดการใช้งาน two-factor authentication (2FA)
ซึ่งมีระยะเวลาให้เปิดใช้งานก่อนสิ้นปี 2023 นี้
เพื่อช่วยเพิ่มความปลอดภัยของการใช้งานมากยิ่งขึ้น
โดยเรื่องนี้ค่อย ๆ ทำการ rollout ในกลุ่มเล็ก ๆ ต้องแต่เดือนมีนาคมแล้ว

อย่าลืมไปเปิดกันละครับ

Spring Modulith 1.0 GA ออกมาแล้ว

$
0
0

หลังจากที่รอมานาน และ ใช้งานกันบ้างแล้ว สำหรับ Spring Modulith
ตั้งแต่เป็น R&D project มาจนถึง experimental project ใน Spring
มาตอนนี้ออกตัวเต็ม ๆ มาแล้ว project หลักของ Spring

โดยที่ Spring Modulith จะมี feature หลัก ๆ ดังนี้

  • ทำงานร่วมกับ Spring Boot ได้เลย
  • ทำการ verify ความสัมพันธ์ของ project ได้เลย เช่น ตรวจสอบเรื่อง มี cyclic dependency หรือไม่
  • ทำ integration test ได้
  • สามารถสร้างเอกสาร architecture ของ project ได้ ในรูปแบบของ UML
  • ทำงานร่วมกับ Actuator สำหรับ observability ของระบบงานได้อีกด้วย

ลองนำมาใช้งานกันดูครับ Go Go Go

Reference Websites

SeleniumLibrary แก้ไขการทำงานกับ remote browser แล้ว

$
0
0

จาก blog เรื่อง อย่าเพิ่งใช้งาน Robot framework SeleniumLibrary 6.1.1 นะ
ตอนนี้ทางทีมพัฒนาของ Selenium Library
ได้ปล่อย version แก้ไขมาให้แล้ว คือ 6.1.2rc1 (ยังไม่ใช่ตัว stable)
แต่เท่าที่ลองใช้งานสามารถแก้ไขปัญหาของการส่งข้อมูลไปยัง remote browser

ดังนั้นลองทำการทดสอบใช้งานกันดูครับ

[code] $pip install robotframework-seleniumlibrary==6.1.2rc1 [/code]


มาแล้วนะ สำหรับ Postman บน VSCode

$
0
0

หลังจากที่เปิดให้ลงชื่อเข้าไปลองใช้งาน
ตอนนี้ทาง Postman ได้ปล่อย extension บน VSCode มาให้ใช้งานแล้ว
สามารถทำการติดตั้งและลองใช้งานกันเลย
แต่ยังอยู่ในสถานะ beta นะ

ขั้นการใช้งานก็จะเหมือนใช้ผ่าน Postman desktop คือ
ทำการ login ก่อน หรือ กรอก token ก็ได้

จากนั้นก็เริ่มใช้งานกัน (ช้า ๆ นิดหน่อย)

ลองใช้งานกันดูครับ


สวัสดี Redis 7.2 มี feature ใหม่ ๆ เพียบ

$
0
0

Redis 7.2 ถูกปล่อยออกมา โดยมี feature ใหม่ ๆ เพิ่มเข้ามา
ซึ่งจะอยู่ใน Enterprise version เสียมากกว่า ดังนี้

  • auto-tiering (Redis on Flash)
  • native triggers
  • scalable serarch

ปรับปรุงประสิทธิภาพของอ่านและเขียนข้อมูล
และเน้นที่การ search ข้อมูลมากยิ่งขึ้น
ที่ค้นหาข้อมูลชนิด vector และสนับสนุน LLM (Large Language Model) อีกด้วย

ยังมี Triggers and Functions
ที่ทำให้เราเขียน code ใน Redis ได้เลย
ซึ่งก่อนหน้านี้เขียนด้วยภาษา Lua
ตอนนี้รองรับ JavaScript อีก ตัวอย่าง

[gist id="2e6afa8829268bb9dbb270eb0bf4d376" file="1.js"]

ทำไมดูไปดูมา เหมือนจะเขียน store procedure/trigger ใน Database เลยนะ !!

และยังมี Redis Data Integration (RDI) เพิ่มเข้ามาเป็น preview feature
เพื่อนำข้อมูลจาก data source ต่าง ๆ เข้ามายัง Redis ได้เลย
เช่น PostgreSQL, Mysql, Oracle และ Cassandra เป็นต้น

ว่าแล้วลองทำการ upgrade ก่อน
ใช้จาก Docker image เลย

Review การใช้งาน Postman ใน VSCode แบบเร็ว ๆ

$
0
0

จาก blog แนะนำการใช้งาน Postman ใน VSCode นั้น
มีบอกว่าให้ลองทำ review การใช้หน่อยว่าเป็นอย่างไร
จากการใช้งานสัก 1 ชั่วโมงนั้น
ก็ทำการสรุปการใช้งานไว้ดังนี้

สั้น ๆ ก็ไปใช้งาน Postman app เหมือนเดิมเถอะ !!

มาดูการใช้งานกันเป็นดังนี้

  • มี feature เพียง collection, request เท่านั้น
  • โดยความสามารถพื้นฐานคือ Request จะใช้งานได้ปกติ ทั้ง HTTP, Web Socket และ gRPC request เช่น สร้าง บันทึก ทดสอบ เป็นต้น
  • ใช้งาน Environment ได้ปกติ
  • ใน collection นั้น ไม่สามารถ edit description ได้ ไม่สามารถ import/export/run collection ได้ ทำได้คือสร้าง ลบ แก้ไข เขียน test และ เพิ่ม request เป็นต้น
  • ไม่สามารถเขียน document ได้
  • Collection ไม่สามารถ import/export ได้
  • Request สามารถ import ผ่าน cURL command ได้

เป็นเพียงแค่ beta version เท่านั้นนะครับ
ลองใช้งานกัน พอแก้ขัดไปได้นะ

ลาก่อน Visual Studio for Mac !!

เพิ่งเห็น Resource Saver Mode ใน Docker Destop

$
0
0

ใน Docker Desktop 4.22 นั้น ทำการเพิ่ม Experimental features เข้ามา
ชื่อว่า Resource Saver Mode
เป้าหมายเพื่อลดการใช้งาน resource ต่าง ๆ ทั้ง memory และ CPU ของ Docker
รวมทั้งการใช้งาน battery ของเครื่องอีกด้วย

ถ้าเปิด Docker desktop ไว้ แต่ไม่ได้ใช้งานเกิน 30 วินาที
จะเข้าสู่ Resource Saver Mode ทันที
จะเห็น icon เปลี่ยนไปมีเหมือนใบไม้ขึ้นมาที่ docker
และจะเห็นได้ว่า CPU กับ memory ใช้ 0% นั่นคือไม่ใช้เลย
ถึงแม้จะมี container run อยู่ก็ตาม
เนื่องจากจะทำการบันทึก state ของ containerไว้ใน memory แทน

แต่สามารถทำการเปลี่ยนเรื่องเวลาได้ใน setting ด้วยค่าดังนี้
เช่น 60 วินาที

[code] "autoPauseTimeoutSeconds": 60 [/code]

คำถาม fmt.Println() ต่างจาก println() อย่างไร ?

$
0
0

จากการแบ่งปันเรื่องการพัฒนาระบบงานด้วยภาษา Go นั้น
มีคำถามว่า fmt.Println() ต่างจาก println() อย่างไร ?
สิ่งที่ตอบไปเป็นดังนี้

  • println() เป็น build-in function สร้างมาเพื่อการ debug เท่านั้น
  • fmt.Println() เป็น function ใน package fmt

ดูสั้น ๆ ไปหน่อย เลยขยายความหน่อย

เริ่มจากการไปดู code ของทั้งคู่เป็นดังนี้

[gist id="ab21da3ae33ee015bab5f152880f7cc9" file="1.txt"]

จะเห็นได้ว่า println() นั้นรับค่าได้เพียง primitive type
พวก array และ ข้อมูลพวก structure ต่าง ๆ ก็ไม่รองรับ


ส่วน fmt.Println() ใด ๆ ก็ได้ any คือ interface{} นั่นเอง รวมทั้งยังมี return value นะ
เพราะว่าหลาย ๆ คนน่าจะยังไม่รู้มั้ง !!

อีกทั้งถ้าดูในการ implement แล้วนั้น
println() จะทำการส่งข้อมูลมายัง standard error
ส่วน fmt.Println() จะทำการส่งข้อมูลมายัง standard output

รวมทั้ง fmt.Println() จะมี dependency เยอะ เช่น log package เป็นต้น
ส่วน println() นั้นไม่มีเลย

TODO

Postman interceptor สำหรับ web browser

$
0
0

ตอนนี้ทาง Postman ได้ปล่อย Postman interceptor
สำหรับทุก ๆ browser ออกมาแล้ว ซึ่งเป็น extension นั่นเอง
ประกอบไปด้วย

Postman interceptor นั่นคือเครื่องมือสำหรับ ดักจับ request ที่ออกจาก browser
จากนั้นก็ทำการสร้างเป็น request และ collections ให้ได้เลย
โดยที่สามารถกรองหรือเลือกเฉพาะ domain ที่ต้องการได้
หรือจะใช้ cookie จาก browser มาใช้ก็ได้

น่าจะเป็นเครื่องมืออีกตัวที่ช่วยให้ง่ายต่อการทดสอบ API
ลอง download มาใช้งานกันดู

ทำเข้าใจง่ายดี Go 1.21 All You Need to Know 

$
0
0

ทำเข้าใจง่ายดี Go 1.21 All You Need to Know 
สามารถเข้าไปดูได้ใน Miro
ทำการสรุป feature ที่น่าสนใจใน Go 1.21 ประกอบไปด้วย

  • Structured logging
  • WebAssembly System interface
  • Profile-Guided optimization
  • Slices and Maps comparison
  • Loop variables
  • Build-in functions => clear, min, max

NodeJS 20.6 :: สนับสนุน .env file แล้ว

$
0
0

เพิ่งเห็นว่า NodeJS 20.6 นั้นสนับสนุนการใช้งานร่วมกับไฟล์ .env แล้ว
นั่นคือสามารถอ่าน environment variable จากไฟล์ .env ได้เลย
โดยใส่เป็น option ใน node command line
ส่วนใน code ก็อ่านจาก process.env ได้เลย
น่าจะช่วยให้การจัดการง่ายขึ้น
แถมไม่ต้องลง package เพิ่มอีกด้วย เช่น dotenv เป็นต้น

ตัวอย่างการใช้งานเป็นดังนี้

ไฟล์ .env

[gist id="79dc4ceea5ca42a2ffed71f50483b8b4" file=".env"]

ทำการอ่านข้อมูลจาก environment variable ผ่าน process package

[gist id="79dc4ceea5ca42a2ffed71f50483b8b4" file="index.js"]

ทำการ run ผ่าน node commandline

[gist id="79dc4ceea5ca42a2ffed71f50483b8b4" file="1.txt"]

เพียงเท่านี้ก็ใช้งานได้แบบง่าย ๆ แล้ว
ขอให้สนุกกับการ coding ครับ

เพิ่งเห็นว่า Mojo เป็นให้ Download แล้ว

$
0
0

หลังจากที่ Mojo เปิดให้ใช้งานผ่าน Mojo playground มาให้ลองใช้
มาวันนี้เพิ่งเห็นว่า ให้ทำการ download มา run ที่เครื่องได้แล้ว

โดยที่ Mojo คือ ภาษาโปรแกรมสำหรับพัฒนาระบบ AI
ซึ่งมีพื้นฐานอยู่บนภาษา python

สามารถ Download กันได้เลย
ซึ่งมีครบทุก ๆ OS
รวมทั้ง extension บน VSCode
น่าจะได้เวลามาทำความรู้จักกับ Mojo หน่อยแล้ว

Reference websites

VSCode :: ใช้งาน Built-in port forwarding

$
0
0

ใน VSCode 1.82 นั้น ได้ปล่อย feature ที่น่าสนใจมาหลายตัว
หนึ่งในนั้นคือ Built-in port forwarding
โดยไม่ต้องลง extension หรือ เครื่องมือใด ๆ เพิ่มเติม
ทำให้สามารถพัฒนา และ ทดสอบระบบงานผ่าน internet หรือ public ip ได้ง่ายขึ้น

ปล. ด้านหลังของการทำงานคือ Dev Tunnels

การใช้งานก็ไม่ยาก

เริ่มด้วย update VSCode มาเป็น version 1.82
จากนั้นทำการ start web server ใน command line
ตัวอย่างเช่น NodeJS
ทำการ start ที่ port = 3000

จากนั้นไปที่ tab Port และกดปุ่ม Forward a Port เลย

ทำการ authen/authorize ผ่าน GitHub ก่อน

ใส่ port ที่ต้องการ จะได้รับ URL ที่เป็น public
สามารถเข้าใช้งานผ่าน internet ได้เลย
โดยกำหนด visibility เป็น private หรือ public ได้เลย

ในการใช้งานครั้งแรกก็ทำการ Authorize ให้ GitHub Dev Tunnels ก่อน

ก่อนนี้ถ้าจะทำงานในรูปแบบนี้ ต้องใช้งานผ่าน

ลองใช้งานกันดูครับ ใช้งานง่ายและสะดวกดี

สรุปจากการแบ่งปันใน Tester’s Day 2023 – Everything You Can Test

$
0
0

เมื่อวันเสาร์ที่ 9 กันยายนที่ผ่านมา
มีโอกาสเข้าร่วมแบ่งปันความรู้ในงาน Tester’s Day 2023 – Everything You Can Test
ซึ่งเป็น virtual event สำหรับแบ่งปันประสบการณ์การทำสอบระบบงาน
โดยในปีนี้มีหัวข้อที่น่าสนใจเยอะเลย
ส่วนผมได้แบ่งปันเรื่องของการใช้งาน Postman สำหรับทดสอบระบบ API

ทำการบันทึกการแบ่งปันไว้ดังนี้

อธิบายการใช้งาน Postman สำหรับทดสอบระบบ API
แต่แนะนำให้ใช้ตั้งแต่การออกแบบไปเลย
ประกอบไปด้วย

  • การออกแบบ API
  • การเขียนเอกสารของ API
  • การทดสอบ API
  • การพัฒนากับ API ด้วยการ Mock Server ของ API ขึ้นมา
  • การทดสอบทั้งแบบ manual และ automation
  • การทำงานเป็นทีม
  • การ sync ข้อมูลด้วยการใช้เครื่องมือ หรือ ข้อมูลที่เดียวกัน
  • การจัดการ version ของเอกสาร เพื่อให้ทุกคนได้ข้อมูล version เดียวกัน และรู้ว่ามีการเปลี่ยนแปลงอย่างไรบ้าง

ซึ่งทั้งหมดนี้ สามารถใช้งานผ่าน Postman ได้เลย
ประกอบกับการใช้งาน Postman CLI และ Newman CLI เข้ามาช่วยการทดสอบแบบอัตโนมัติ
แสดงการทำงานดังรูป

รวมทั้งแนะนำความสามารถเพิ่มเติมของ Postman อีกเช่น

ปีหน้าเจอกันอีกครับ
ขอบคุณครับ สำหรับพื้นที่ในการแบ่งปัน

สามารถดูเอกสารที่แบ่งปันได้ที่ GitHub::Up1

ปล. ใครสนใจ workshop เกี่ยวกับ Postman in the Right way มาเจอกันได้ครับ

การ convert จาก Postman Collections มาเป็น K6 script

$
0
0

จากงาน Tester Day 2023 นั้น มี session เกี่ยวกับ performance testing
โดยใช้เครื่องมือ 2 ตัวคือ Postman และ K6
หนึ่งในการทำ workshop นั้น
มีวิธีการ convert จาก Postman Collections มาเป็น K6 script
ที่อยู่ในรูปแบบของภาษา JavaScript

แต่การ convert มาเป็น K6 script นั้น

เนื่องจากการทำ performance testing ใน Postman นั้น
จะติดปัญหาเรื่อง จำนวน concurent limit ของแต่ละ price plan
ดังนั้นไปใช้งาน K6 น่าจะสะดวกกว่านะ

โดยสามารถทำการ download ได้จาก GitHub :: Postman to K6
แต่ถ้าเข้าไปดูจะพบว่าทาง grafana ไม่ได้ maintain ต่อแล้ว
ต้องไปที่ apideck-libraries/postman-to-k6 แทนนะครับ

ทำการติดตั้งผ่าน npm/yarn ได้เลย
หรือจะใช้งานผ่าน Docker ก็ได้ เอาตามสะดวก
เป็นอีกเครื่องมือที่ช่วยอำนวยความสะดวกอย่างมาก


สามารถทำได้อีกเพียบ แสดงดังรูป

อีกสิ่งที่น่าสนใจคือ report การทดสอบจาก K6 นั้น

สามารถนำเป็นจัดเก็บและแสดงบน dashboard ได้หลากหลายรูปแบบอีกด้วย
ยกตัวอย่างเช่น Prometheus + Grafana เป็นต้น
แสดงเพิ่มเติมดังรูป

ลองใช้งานกันดูครับ
ใช้งานง่ายมาก ๆ

Reference Websites

Viewing all 2000 articles
Browse latest View live