Skip to Content

Blog Archives

Gherkin and Cucumber ทางเลือกใหม่ในการจัดการ Automation Testing ให้เป็นระบบ

ในกระบวนการพัฒนา Software แบบ Agile นั้น ใช้ User Story เพื่ออธิบาย Feature, Requirement ต่าง ๆ ของ Software ในมุมมองของ end-user แต่อย่างไรก็ตาม ก็ยังคงมีอุปสรรคในการสื่อสาร User Story เหล่านี้ระหว่าง Business Team และ Tech Team ให้เข้าใจตรงกัน Gherkin ถูกประดิษฐ์ขึ้นเพื่อช่วยแก้ไขปัญหานี้

 

Gherkin เป็นภาษาสำหรับบรรยาย Requirement และ Acceptance Criteria ในรูปแบบที่คล้าย Human Language ซึ่งช่วยให้ทีมงานทำความเข้าใจ Requirement ต่าง ๆ ได้ง่าย ทั้งในเชิง Business และ Technical

 

Gherkin Systax

การอธิบาย Scenario ด้วย Gherkin มีองค์ประกอบดังนี้

  1. Scenario: อธิบายสถานการณ์ของการใช้ระบบ
  2. Given: Precondition / Context / Step ที่ต้องเกิดขึ้นเพื่อนำระบบไปอยู่ใน State ที่ต้องการ ก่อนที่ผู้ใช้งานจะมี Interaction ใด ๆ กับระบบ ส่วนของ Given สามารถมีหลายข้อได้ และเชื่อมกันด้วย And
  3. When: Interaction ต่างที่ User กระทำ หากมีหลาย Action ให้เชื่อมด้วย And
  4. Then: ผลลัพธ์ที่เกิดขึ้น มักจะกล่าวถึงสิ่งที่เราต้องตรวจสอบ เช่น user interface, report, message, command output เป็นต้น และยังรวมถึง External System ที่เกี่ยวข้องด้วย เช่น หากมีการส่งข้อมูลไปยังระบบอื่น

 

Case Study: Login

ในบทความนี้ขอยกกรณีศึกษา User Story การเข้าสู่ระบบ (Login) โดยให้มี User Story ดังนี้

As a customer, I want to login using username and password, so that I can see information in the homepage.

 

Business Analyst (BA) สามารถเขียน Scenario ต่างๆ ในรูป Gherkin ได้ดังต่อไปนี้


Scenario Outline: Check login is successful with valid credentials

Given user is on login page

When user enters valid username and password – username: <username>, password: <password>

And clicks on login button

Then user is navigated to the home page

Examples:

| username | password |

| Raghav   |    12345 |

| Ele      |    12345 |


Scenario Outline: Check login is failed with invalid credentials

Given user is on login page

When user enters invalid username and password – username: <username>, password: <password>

And clicks on login button

Then error message is displayed – invalid credential

Examples:

| username | password |

|                    |    11111 |


 

จากตัวอย่าง มีการใช้ Example เพื่อกำหนด Test Data (Sample) สำหรับการทดสอบ โดยแต่ละ Scenario แรกมี 2 sample และ Scenario ที่สองมี 1 sample สิ่งที่เกิดขึ้นคือ เมื่อทำการทดสอบ โปรแกรมจะนำค่าใน Sample นี้ไปแทนค่า Variable ต่าง ๆ ของ Scenario นั้น เช่น <username>, <password>

นอกจากนี้แล้วเราสามารถใช้ Tag เพื่อใช้แบ่งกลุ่ม จัดระเบียบ จำแนก scenario ได้ โดยใส่เครื่องหมาย @ ตามด้วยข้อความใด ๆ ที่เราต้องการ ไว้หน้า Scenario เช่น เราต้องการแยก Positive/Negative Test หรือต้องการกำหนด Scenario สำหรับ Smoke Test ก็สามารถใส่ Tag @positive, @negative, @smoke ลงไปได้

Tag เหล่านี้จะถูกใช้ตอน Execute Test โดยระบุ Tag Name ของ Scenario ที่เราต้องการทดสอบลงไป โปรแกรมก็จะ Execute เฉพาะ Scenario เหล่านั้นให้

 


@positive

@smoke

Scenario Outline: Check login is successful with valid credentials


@negative

Scenario Outline: Check login is failed with invalid credentials


 

เรารวบรวม Scenario ที่เป็นรูปแบบ Gherkin ไว้ใน File ที่เรียกว่า Feature File และ File นี้จะถูกนำมาสร้างเป็น Code สำหรับ Automated Test ได้ โดยอาศัยเครื่องมือที่ชื่อว่า Cucumber โดยในบทความต่อไปนี้จะยกตัวอย่างการใช้ Cucumber ร่วมกับ Maven, Eclipse, Seleninum

เมื่อเราใช้ Cucumber อ่าน Feature File เราจะได้ Output ออกมาเป็น Code Snippet ซึ่งเป็นโครงร่างเพื่อนำไปเขียน Code ต่อดังรูปตัวอย่าง

รูปฝั่งซ้ายเป็น Feature File (userlogin.feature) ส่วนฝั่งขวาเป็น Code Snippet ในภาษา Java (LoginSteps.java) สำหรับนำไปเขียน code ทำ Automated Test ต่อ ให้สังเกตว่าใน Code จะมี Annotation @Given, @When, @Then ซึ่งจะสอดคล้องกับ Scenario ใน userlogin.feature

 

เมื่อเราได้ Code Snippet แล้ว เราสามารถใช้ Selenium Library for Java เพื่อสร้าง “Glue Code” สำหรับ Automated Test ต่อไปได้ โดยจะแบ่งเป็น Class Page Factory และ Class Test Step

Page Factory Class เป็น Class ที่เป็นตัวแทนของ Page (หน้าจอ) ที่เราต้องการทดสอบ เราจะประกาศตัวแปร Web Element ต่าง ๆ เท่าที่จำเป็นในการทดสอบ เช่น หน้าจอ Login ก็จะมี Web Element ได้แก่ name (Textbox), password (Textbox), login (Button) นอกจากนี้จะมีส่วนที่เป็น division สำหรับแสดงข้อความ error message อยู่ 2 ที่ ซึ่งไม่ได้กำหนด ID แต่ใช้ CSS Class ชื่อว่า invalid-feedback

 

สร้าง Class LoginPage_PF เป็น Page Factory โดยให้มีตัวแปร Web Element สอดคล้องกับหน้าจอ ดังนี้

 

สังเกตใน Class LoginPage_PF จะมีตัวแปร WebElement ผูกกับ ID ของ Object ต่าง ๆ บนหน้าจอ ด้วย Annotation @FindBy(id) นอกจากนี้เราสามารถสร้าง List ของ WebElement ได้ เช่น ค้นหา Object บนหน้าจอ ที่ใช้ CSS Class ชื่อว่า “invalid-feedback”

 

สำหรับ Constructor นั้น ให้รับ Parameter เป็น WebDriver เข้ามา ซึ่งจะทำให้เราสามารถผูก WebElement กับ Object บนหน้าจอได้

 

จากนั้นเราเขียน code selenium ที่สั่งให้ทำ Action ต่าง ๆ บนหน้าจอ เช่น การกรอก username ในช่อง name, การกรอก password ในช่อง password, การคลิกปุ่ม Login, การตรวจหาข้อความ “Password is invalid”

 

หลังจากที่ทำ Page Factor Class LoginPage_PF เสร็จแล้ว เราก็จะมาเขียน “Glue Code” ใน LoginSteps Class ต่อ ซึ่ง Class นี้จะเรียกใช้งาน LoginPage_PF และมี Method ต่าง ๆ สอดคล้องกับกับ Scenario ใน Feature File (userlogin.feature)

 

เราเริ่มจาก Code สำหรับ Initialize และ Finalize ก่อน

  • Method browserSetup() ใช้สำหรับ setup การทดสอบ โดยทั่วไปจะ create driver ของ browser ขึ้นมา (เช่น Chrome, Firefox, Edge ซึ่งในตัวอย่างนี้ใช้ Microsoft Edge) กำหนดค่า setting ทั่วไป (เช่น timeout)
  • Method teardown() ใช้สำหรับสิ้นสุดการทำงาน โดยทั่วไปจะ close driver และ quit driver

 

 

  • จาก Code ที่แสดง เราสามารถกำหนดให้บาง Method ทำงานก่อนที่จะเริ่ม execute test ได้ โดยใส่ Annotation @Before(order) ได้ พร้อมระบุ Order เป็นเลขลำดับ ในที่นี้เราใส่ @Before ให้กับ method browserSetup ()
  • ในทางกลับกัน เราสามารถกำหนดให้บาง Method ทำงานหลังการ execute test ได้เช่นกัน โดยใส่ Annotation @After(order) ในที่นี้เราใส่ @After ให้กับ method teardown()

 

จากนั้นเราเขียน code ส่วนที่เหลือ คือ Test Step ต่าง ๆ ตาม Scenario ซึ่งจะไปเรียกใช้ Method ต่าง ๆ ที่เราสร้างไว้ใน LoginPage_PF

  • user_enters_valid_username_and_password() : การกรอก username และ Password
  • clicks_on_login_button() : การกดปุ่ม Login

 

 

สุดท้ายคือ Code สำหรับตรวจสอบผลลัพธ์ ซึ่งในที่นี้จะตรวจสอบว่าหน้าจอที่แสดงเป็นหน้าจอ Home Page หรือไม่โดยค้นหา Object ปุ่ม Logout ถ้าค้นหาพบ แสดงว่าหน้าจออยู่ที่ Home Page แล้ว

 

สังเกตว่าจะเรียกใช้ Page Factory อีก Class หนึ่งคือ HomePage_PF ซึ่งมี Web Element ที่เราสนใจคือปุ่ม Logout

 

สุดท้ายเมื่อ Build แล้ว เราสามารถ Run Automated Test ได้ผ่าน Eclipse หรือ Command Line ก็ได้

รูปต่อไปนี้แสดงการใช้ Command Line “mvn test”

 

โปรแกรมก็จะเปิด Browser ขึ้นมา และทำ Action ต่าง ๆ ที่เราเขียน Scenario ไว้ โดยอัตโนมัติ จะสังเกตว่าแต่ละการทดสอบของ Scenario จะแสดง Scenario Step (Gherkin) คู่กับ Glue Code ที่ทำงาน โดยแสดง Package Name, Class Name, Method Name เช่น

  • Step “Given user is on login page” มี Glue Code ที่คู่กันคือ LoginStep.user_is_on_login_page

ซึ่งสิ่งนี้เองที่ทำให้เห็นภาพชัดเจนขึ้นว่า การใช้ Gherkin-Cucumber จะช่วยจัดระเบียบ ให้ทำความความเข้าใจและเชื่อมโยงระหว่าง Scenario และ Test ได้ดีขึ้น นอกจากนี้ หากอนาคตมีการเปลี่ยนรายละเอียดของ Step ก็จะทราบส่วนที่ต้องแก้ไข Code Automated Test ได้เร็วขึ้นด้วย

 

ในตอนท้าย โปรแกรมจะแสดงสรุปผลการ Test ว่าผ่านหรือไม่ผ่านกี่ Scenario

 

หากเราต้องการทดสอบบาง Scenario เราสามารถระบุ Cucumber option ตอนที่ Run maven test ได้ ในที่นี้ขอยกตัวอย่างง่าย ๆ ดังต่อไปนี้

  • กรณีต้องการทดสอบ scenario ที่มี tag ชื่อที่เราต้องการ เช่น

    • ต้องการทดสอบ scenario tag positive

mvn test -Dcucumber.options=”–tags @positive”


    • ต้องการทดสอบ scenario tag smoke

mvn test -Dcucumber.options=”–tags @smoke”


 

  • กรณีที่ Project มีหลาย Feature File เราสามารถเจาะจง Feature File ที่ต้องการทดสอบได้

    • การเจาะจงทดสอบเพียง Feature File ที่เราต้องการ ให้ระบุ Relative path ของ Feature file นั้น

mvn test -Dcucumber.options=”src/test/resources/features/userlogin.feature”


    • การเจาะจงทดสอบเพียง Feature File ใน Directory ที่เราต้องการ ให้ระบุ Relative path ของ Directory นั้น

mvn test -Dcucumber.options=”src/test/resources/features”


 

สำหรับบทความนี้ก็ขอจบเท่านี้ครับ หากสนใจโซลูชั่นด้านดิจิทัล สามารถติดต่อเราได้ที่อีเมล Marketing@stream.co.th หรือโทร. 02-679-2233 นะครับ

เรียบเรียงโดย Siripod Surabotsophon

Reference

  • Selenium Cucumber Java BDD Framework

https://youtu.be/4e9vhX7ZuCw

  • Source Code ในบทความนี้ สามารถ Download ได้จาก GitHub

https://github.com/siripods/SeleniumCucumberBDD

 

0 0 Continue Reading →

Global-Active Device ปกป้องข้อมูลระดับองค์กร ลดทอนข้อจำกัดด้าน Data Recovery

เมื่อก่อนการทำ Data Recovery จะต้องคอยกังวลเรื่องการประเมินข้อมูลใหม่ หรือข้อมูลที่เปลี่ยนแปลงจะสูญหายไปมากเพียงใด เนื่องจากยังไม่ได้สำรองข้อมูล (Recovery Point Objective: RPO) ไหนจะเรื่องระยะเวลาที่ใช้ในการดำเนินการทำงานต่อ (Recovery Time Objective: RTO) แต่ในตอนนี้ ข้อจำกัดเหล่านั้นจะหมดไป

ด้วยเทคโนโลยีใหม่จาก Hitachi Vantara ซึ่งสามารถทำให้ RPO และ RTO เป็นศูนย์ เพราะคุณสมบัติ Global-Active Device (GAD) ที่มากับอุปกรณ์จัดเก็บข้อมูลตระกูล G F E และ 5000 Series ซึ่งอยู่ภายใต้ Product-Line Family ที่เรียกว่า Virtual Storage Platform (VSP) แล้ว Global-Active Device (GAD) คืออะไร

Global-Active Device (GAD) เป็นอีกหนึ่งความสามารถของอุปกรณ์จัดเก็บข้อมูลตระกูล VSP ที่สามารถสร้างเครื่องจัดเก็บข้อมูลเสมือน (Virtualize Storage Machine) ขึ้นมา โดยที่เครื่องจัดเก็บข้อมูลเสมือนจะทำการจำลองอาร์เรย์ (Array) สำหรับจัดเก็บข้อมูลของอุปกรณ์จัดเก็บข้อมูล VSP สองชุดแยกออกจากกัน และทำให้ปรากฏเป็นอาร์เรย์หน่วยเก็บข้อมูลเดียวสำหรับเซิร์ฟเวอร์โฮสต์เดี่ยว (Host Server) หรือคลัสเตอร์ของเซิร์ฟเวอร์โฮสต์ (Cluster of Host Servers)

นอกจากนี้ GAD ยังมีความสามารถทำให้ระบบจัดเก็บข้อมูลหลัก (Primary Storage) และระบบจัดเก็บข้อมูลรอง (Secondary Storage) ใช้ข้อมูลจริงของระบบจัดเก็บข้อมูลหลักได้ และไดรฟ์ข้อมูลหลักและรองของอุปกรณ์ที่ใช้งานคุณสมบัติ Global-Active จะได้รับหมายเลข LDEV เสมือนเดียวกันในเครื่องจัดเก็บข้อมูลเสมือน สิ่งนี้ทำให้โฮสต์สามารถดู Volume คู่เป็น Volume เดียวบนระบบจัดเก็บข้อมูลเดียว และทั้งสอง Volume นั้นจะได้รับข้อมูลเดียวกันจาก Host

เมื่อการเขียนข้อมูลเสร็จสิ้นใน Volume ใดก็ตาม ข้อมูลจะถูกจำลอง (Replicate) ไปยัง Volume อีกคู่หนึ่งอย่างต่อเนื่องก่อนที่การเขียนจะเสร็จสิ้น ซึ่งช่วยให้ไดรฟ์ข้อมูล Sync กันตลอดเวลา และทำให้มั่นใจได้ว่า RPO และ RTO เป็นศูนย์ในกรณีที่ระบบจัดเก็บข้อมูลหรือไซต์ล้มเหลว

เครื่องจัดเก็บข้อมูลเสมือนสามารถขยายไปยังระบบจัดเก็บข้อมูลที่แยกจากกันด้วยระยะทางไกลสูงสุดถึง 500 กิโลเมตร และด้วยคุณสมบัติของ GAD  ทำให้เหมาะกับการทำงานที่ต้องการความ Non-disruptive, High Availability (HA), Disaster Recovery (DR) หรือการบริการย้ายศูนย์ข้อมูลอย่างรวดเร็ว นอกจากนี้การเคลื่อนย้ายของหน่วยเก็บข้อมูลเครื่องภายใต้สภาพแวดล้อมการจัดเก็บข้อมูลสำหรับการทำ Load-Balance หรือการบำรุงรักษาทั่วไปก็เป็นเรื่องที่ง่ายและไม่กระทบต่อตัวอุปกรณ์จัดเก็บข้อมูล

 

ข้อดีจากการมี Global-Active Device (GAD)

     Global-Active Device (GAD) ของ Hitachi Vantara เป็นผู้นำด้านการใช้งานในรูปแบบการทำงาน Active-Active ที่มาพร้อมกับ ความเรียบง่ายในการใช้งาน (Simplicity) ความสามารถในการขยาย (Scalability) และ ผลตอบแทนการลงทุน (Return on Investment (ROI)) ที่คุ้มค่าตอบโจทย์ทุกธุรกิจในยุคปัจจุบัน

     1. ความเรียบง่าย (Simplicity) เนื่องจาก GAD เป็นหนึ่งในความสามารถการจำลองเสมือนของอุปกรณ์จัดเก็บข้อมูลที่อยู่ภายใต้ระบบบริหารจัดการ Storage Virtualization Operating System RF (SVOS RF) ของ Hitachi จึงไม่จำเป็นต้องใช้อุปกรณ์เพิ่มเติมหรือซอฟต์แวร์เพิ่มเติมสำหรับเซิร์ฟเวอร์โฮสต์ (Host Server) หรือเครื่องเสมือน (Virtual Machine)

     2. ความสามารถในการขยาย (Scalability) Hitachi GAD ให้การประมวลผลข้อมูลแบบ Active-Active อย่างแท้จริงทั่วทั้งอาร์เรย์จัดเก็บข้อมูล ซึ่งขยายขอบเขตเกินกว่าการใช้งานในผลิตภัณฑ์ยี่ห้ออื่นๆ ที่มีเพียงอาร์เรย์จัดเก็บข้อมูลเดียวเท่านั้นที่ทำงานอยู่ ในขณะที่อีกอาร์เรย์หนึ่งใช้สำหรับสแตนด์บาย (Standby) และ Controller ในอาร์เรย์จัดเก็บข้อมูลบนอุปกรณ์จัดเก็บข้อมูลตระกูล VSP แต่ละอันยังมีคุณสมบัติ Active-Active ซึ่งทำให้เราขยายประสิทธิภาพได้ดีกว่า Controller ของผู้จำหน่ายรายอื่นที่เป็น Active/Passive หรือ ALUA (Asymmetric Logical Unit Access)

     3. ผลตอบแทนการลงทุน (Return on Investment: ROI) ด้วยคุณสมบัติของอุปกรณ์จัดเก็บข้อมูลตระกูล VSP ที่มีความสามารถในการจำลองพื้นที่จัดเก็บข้อมูลภายนอกเสมือนและสร้างเครื่องจัดเก็บข้อมูลเสมือน จากการนำอุปกรณ์จัดเก็บข้อมูลตระกูล VSP ไปครอบอุปกรณ์จัดเก็บข้อมูลเดิมที่คุณมีอยู่

คุณจะสามารถจำลองพื้นที่จัดเก็บข้อมูลหลังอาร์เรย์ VSP และสร้างเครื่องจัดเก็บข้อมูลเสมือนได้ ทั้งนี้อุปกรณ์จัดเก็บข้อมูล VSP ในกรณีนี้ไม่ต้องการพื้นที่ความจุแต่อย่างใด เนื่องจากพื้นที่ความจุทั้งหมดสามารถมาจากอุปกรณ์จัดเก็บข้อมูลของบุคคลที่สามหรือของเดิมที่มีอยู่ (Third Party Storage System) อุปกรณ์จัดเก็บข้อมูล VSP ทั้งหมด ตั้งแต่ระดับกลางไป (Mid-Range) จนถึงระดับไฮเอนด์ (High-End Enterprise) มาพร้อมคุณสมบัติ GAD ดังนั้นคุณไม่จำเป็นเสียค่าใช้จ่ายกับการต้องมีโซลูชันหรือเครื่องมือบริหารจัดการเพิ่มเติม และไม่จำเป็นต้องใช้อุปกรณ์หรือซอฟต์แวร์โฮสต์เพิ่มเติมเพื่อรองรับ GAD

 

Scenario ที่น่าสนใจกับการใช้งาน GAD บนอุปกรณ์จัดเก็บข้อมูลของ Hitachi Vantara

  1. Fault-tolerant storage infrastructure

กรณีเกิด Site ล้มเหลวทำให้ Server ไม่สามารถเข้าถึง Volume ที่อยู่ใน GAD Pair การอ่านและเขียน I/O ยังคงสามารถดำเนินการต่อไปใน Pair Volume ที่อยู่ในระบบจัดเก็บข้อมูลอื่นอีก Site นึง ทำให้เกิด I/O ของ Server อย่างต่อเนื่องกับ Volume ข้อมูล

 

  1. Failover clustering without storage impact

กรณีที่ Server Cluster มีการใช้ GAD อยู่ การ Failover และ Failback จะเป็นหน้าที่ของ Software Cluster โดยที่ อุปกรณ์จัดเก็บข้อมูลที่อยู่ใน GAD Pair ไม่ต้องทำการระงับการใช้งานหรือต้อง Sync การทำงานกันใหม่

 

  1. Server load balancing without storage impact

 

เมื่อมีการโหลด I/O บนเครื่องจัดเก็บข้อมูลเสมือนที่ไซต์หลักเยอะมากๆ การใช้งาน GAD จะช่วยให้สามารถโยกย้ายเครื่องเสมือน (Virtual Machine (VM)) ไปยังเซิร์ฟเวอร์ที่จับคู่โดยไม่ต้องดำเนินการใด ๆ บนระบบจัดเก็บข้อมูล ดังที่แสดงในตัวอย่างรูปด้านขวา เครื่องเสมือน VM3 จากเซิร์ฟเวอร์ไซต์หลักจะถูกย้ายไปยังเซิร์ฟเวอร์ไซต์รอง เนื่องจาก Volume ข้อมูลหลักและรองของ GAD มีข้อมูลเดียวกัน จึงไม่จำเป็นต้องย้ายข้อมูลใดๆ ระหว่างอุปกรณ์จัดเก็บข้อมูล

สำหรับผู้ที่สนใจดูตัวอย่างการทำ GAD ของจริง จากอุปกรณ์จัดเก็บข้อมูลของ Hitachi Vantara สามารถติดต่อสตรีมฯ ได้ครับ

พิเศษสุด สำหรับผู้ติดต่อเข้ามา 5 รายแรก รับการปรึกษาและประเมินการใช้งานระบบของท่านจากทีมงานผู้เชี่ยวชาญของ Stream และ Hitachi Vantara มูลค่า 50,000 บาท ฟรีทันที

สอบถามข้อมูลติดต่อ

 

เขียนและเรียบเรียงโดย Wanit Treeranurat

0 0 Continue Reading →

Stream ในบทบาท e-Tax Service Provider ผนึกกำลังร่วมงานกรมสรรพากร

เมื่อวานนี้ (24 สิงหาคม 2563) สตรีมฯ เข้าร่วมออกบูธแสดงโซลูชั่นในงานเสวนา “วิถีใหม่…ให้ภาษีเป็นเรื่องง่าย Easy Tax Transforms Your Life” ในฐานะตัวแทนกลุ่มแรกของผู้ให้บริการด้านใบกำกับภาษีอิเล็กทรอนิกส์ (e-Tax Service Provider) ณ อาคารอิมแพ็ค ฟอรั่ม เมืองทองธานี ตั้งแต่เวลา 9.00-16.00 น.

ด้วยวัตถุประสงค์ของกรมสรรพากรที่ต้องการให้เรื่องเกี่ยวกับภาษีเป็นเรื่องง่ายสำหรับประชาชน จึงได้ขอความร่วมมือจากองค์กรที่เกี่ยวข้องในการสนับสนุนแนวคิด และออกโครงการมาหลายโครงการ ยกตัวอย่างอาทิ

  • โครงการจัดทำ จัดเก็บ และนำส่งใบกำกับภาษีอิเล็กทรอนิกส์และใบรับอิเล็กทรอนิกส์ (e-Tax Invoice and e-Receipt)
  • โครงการจัดทำระบบหักภาษี ณ ที่จ่าย และนำส่งข้อมูลการหักภาษี ณ ที่จ่าย แบบอิเล็กทรอนิกส์ (e-Withholding Tax) สำหรับสถาบันการเงินและผู้ให้บริการทางการเงินอื่น ๆ ซึ่งเป็นตัวแทนนำส่งข้อมูล
  • โครงการจัดทำระบบนำส่งข้อมูลการชำระอากรแสตมป์เป็นตัวเงิน ผ่านระบบเครือข่ายอิเล็กทรอนิกส์ (e-Stamp) สำหรับตราสารอิเล็กทรอนิกส์ (อ.ส.9)

 

สตรีมฯ เอง ก็ขานรับสนับสนุนโครงการของกรมสรรพากรเสมอมา เราจัดทำโซลูชั่นเพื่ออำนวยแก่องค์กร ทั้งภาคธุรกิจและภาคการเงินการธนาคาร เรามีโซลูชั่นสำหรับทั้ง 3 โครงการที่กล่าวมา โดยมีจุดเด่นตรงที่

  1. การพัฒนาระบบที่ตรงตามมาตรฐานข้อกำหนดของกรมสรรพากร
  2. มีการปกป้องความปลอดภัยของข้อมูล และการลงลายมือชื่ออิเล็กทรอนิกส์
  3. การเรียกดูข้อมูลทำได้สะดวกและรวดเร็วกว่าที่เคย

นอกจากนี้ เรามุ่งเน้นให้ความสำคัญกับการทำให้ข้อมูลเป็นอิเล็กทรอนิกส์ สนับสนุนการลดการใช้กระดาษ ซึ่งจะเป็นการช่วยลดการใช้ทรัพยากรของโลกด้วย

สุดท้ายนี้ สตรีมฯ ต้องขอถือโอกาสขอบคุณทุกท่านที่แวะมาชมบูธของเรา เราหวังเป็นอย่างยิ่งว่าจะได้ตอบสนองทุกความต้องการด้านดิจิทัลของท่านค่ะ

ภาพบรรยากาศภายในงาน

ท้ายสุดนี้ หากท่านสนใจโซลูชั่นด้านดิจิทัลใด ๆ ติดต่อเราได้ที่อีเมล Marketing@stream.co.th หรือโทร. 02-679-2233 นะคะ

0 0 Continue Reading →

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายการใช้คุกกี้ และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • คุกกี้ที่จำเป็น
    Always Active

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้

  • คุกกี้เพื่อการวิเคราะห์

    คุกกี้ประเภทนี้จะทำการเก็บข้อมูลการใช้งานเว็บไซต์ของคุณ เพื่อเป็นประโยชน์ในการวัดผล ปรับปรุง และพัฒนาประสบการณ์ที่ดีในการใช้งานเว็บไซต์ ถ้าหากท่านไม่ยินยอมให้เราใช้คุกกี้นี้ เราจะไม่สามารถวัดผล ปรังปรุงและพัฒนาเว็บไซต์ได้

Save