2552-07-16

HTTP Request Steps

สำหรับตัวนี้เป็นการ request ไปเรียกเซอร์วิสที่ HTTP ไหนก็ได้ส่วนการเรียกใช้ทำได้ดังนี้
คลิกขวาที่ TestCase ที่ต้องการแล้วเลือก Add Step >>> HTTP Test Request

หรืออีกวิธีคือ ดับเบิ้ลคลิกที่ TestCase ที่ต้องการแล้วกด Create a new HTTP Test Request TestStep


หลังจากกดเสร็จแล้ว ก็ให้เรากรอกชื่อที่ต้องการลงไป

จากนั้นจะมีหน้าต่างขึ้นมาให้เราใช่ค่า End Point ของเว็บที่เราต้องการลงไป

หลังจากกดตกลงไปแล้วโปรแกรมจะทำการเพิ่ม request ใหม่ให้เราและเปิดหน้าต่างใหม่มาให้ ให้เรากดที่ปุ่ม Submit เพื่อทำการรันค่า

และโปรแกรมก็จะทำการ request ไปยังเว็บที่เราใส่ลงไป จะออกมาประมาณนี้


2552-07-14

SOAP Test Requests


            SOAP Test Requests นั้นยื่น request ที่เป็นมาตรฐานที่เป็นไปได้ให้กับตัว Assertions ที่นำไปประยุกค์ใช้กับการรับ Request  ซึ่งเราเรียกสิ่งนี้ว่า Test Request
            Test Request นั้นคือการสร้างจากมาตรฐานของการ Request ที่สร้างในหน้าต่าง Add to Test case หรือจากหน้าต่างของ Test Case editors ก็ได้ โดยการ เลือกที่ Insert Step >> Test Request
 .
รูปแบบของการ เพิ่ม Test Request จากหน้าต่าง Add Request to Test Case
 .
 รูปแบบของการ เพิ่ม Test Request จากหน้าต่าง Test Case editors โดยการ เลือกที่ Insert Step >> Test Request
Function ที่ Test Request สามารถทำได้มี 3 ชนิดก็คือ

  • Change Operation – การเปลี่ยน Operation ของ Test Request

  • Select Operation – การเลือก Operation จาก Navigator ของ Test Request
  • Clone Assertions  - การคัดลอก(ทั้งหมด) Assertionsprompts จาก TestRequest 


2552-07-12

Test Requests

ในส่วน Request ของ SoapUI นั้นแบ่งออกได้เป็น 3 ประเภท ด้วยกันคือ


SOAP Test Requests - คือการเรียก WSDL มาอ้างอิงในโปรเจค
REST Test Requests - คือการเรียก REST REsource มาอ้างอิงในโปรเจค
HTTP Test Request - คือการเรียก HTTP service มาอ้างอิงในโปรเจค

โดยปกติแล้วทั้ง 3 ประเภทนี้สามารถเพิ่ม Assertion เพื่อรับการตอบสนองของเว็บเซอร์วิสได้

The Assertions Tab

ภายใน Assertion tab นั้น ประกอบไปด้วยวงกลมที่มีสีต่างๆ โดยสีต่างๆนั้น มีความหมายดังนี้

สีแดง = คือ assertion ล้มเหลวถ้าเกิดขึ้นจะมาพร้อมกับข้อความบอกว่า error ตรงไหน
สีเขียว = คือ assertion ผ่าน
สีเทา = คือยังไม่ได้ทำการ assertion

หน้าตาของเจ้า assertion tab

ประกอบด้วยคำสั่งดังนี้(ตอนคลิกขวา)

Add Assertion - เพิ่ม assertion ขึ้นมาใหม่
Configure - แสดงตัวเลือกเกียวกับ assertion
Clone - ทำการจำลอง assertion ที่เลือก
Rename - ทำการเปลี่ยนชื่อ assertion ที่เลือก
Remove - ทำการลบ assetion ที่เลือก


Request Result Viewer

คือส่วนผลลัพธ์ของ assertion เมื่อเวลาดับเบิ้ลคลิกที่วงกลมตรง assertion tab


เมื่อทำการดับเบิ้ลคลิกแล้วจะมีหน้าต่างใหม่ปรากฏมา โดยประกอบด้วย 3 ส่วนใหญ่ๆ คือ

Request Properties - จะแสดงส่วนตอบรับและตอบสนอง(request and reponse) ของ request นั้นๆ
Request Message - แสดงส่วนที่แสดงจริงๆของข้อความ request ที่ส่ง
Response Message - แสดงส่วนที่ข้อความ response ได้รับ

2552-07-10

soapUI TestStep

soapUI TestSteps นั้นเป็นกระบวนการทำงานาของ TestCase นะครับ ซึ่งเราจะหาได้จากส่วนของ TestCase นะครับ

ขั้นตอนการทำงานทั้งหมดก็จะมีดังนี้นะครับ
  1. Request
  2. REST RequestStep
  3. HTTP RequestStep
  4. Property Transfer
  5. Groovy Script
  6. Properties
  7. Conditional Goto
  8. Delay Step
  9. Run TestCase Step
  10. MockResponse Step
  11. DataSource Step
  12. DataSourceLoop Step
  13. DataSink Step
  14. DataGen Step

           ซึ่งแต่ละ Step ของการ Test นั้นก็จะมีตัวเลขของ Properties กำกับไว้ เพื่อให้เราสามารถรู้ว่าตอนนี้เราถึงขั้นตอนไหนแล้ว หรือ มีไว้เพื่อให้เราเขียนกำกับ หรือให้แก้ไขครับ และต่อไปเราก็จะมาดูว่าในส่วนของ TestStep นั้นทำงานอย่างไรและ ทำอะไรได้บ้างนะครับ
           การทำงานของ TestStep นั้น เราสามารถเรียก function การทำงานของมันได้จากเมนู Popup ในส่วนของ Navigator นะครับ ให้เราเลือกในส่วนของ TestCase editor นะครับ ซึ่งในส่วนนี้ก็จะมีลำดับกำกับไว้อย่างที่บอกขั้นต้นไปแล้วนะครับ


  • Open Editor                    : ในส่วนนี้จะเป็นการเปิด หน้าต่าง Editor ของ TestStep ขึ้นมานะครับ
  • Disable/Enable TestStep  : ในส่วนนี้จะเป็นการเปิด / ปิด การทำงานของ TestStep ครับ
  • Insert Step                      : ในส่วนนี้จะเป็นการแสดงรายการที่เราเพิ่มเข้าไปครับ
  • Rename                           : ในส่วนนี้เป็นการเปลี่ยนชื่อของ Teststep ครับ
  • Delete                             : ในส่วนนี้เป็นการลบ Teststep ที่เราต้องการครับ
  • Clone TestStep                : ในส่วนนี้เป็นการคัดลอก(ทั้งหมด) Teststep ครับ
  • Move Step Up/Down        : ในส่วนนี้จะเป็นการย้ายตำแหน่ง TestStep ในรายการ TestStep ของเราครับ ซึ่งเราสามารถย้ายขึ้นลงได้ตามที่เราต้องการครับ
  • specific actions                : ส่วนนี้จะเป็นส่วนของการกระทำที่พิเศษของ TestStep ครับ(หมายถึงสิ่งที่ทำนอกเหนือจากรายการของ TestStep ที่มีด้านบน)
  • Online Help:                     : ในส่วนนี้ก็จะเป็นส่วนของตัวช่วย online ของ TestStep ครับ

2552-07-08

soapUI TestCases

ต่อมาคือเรื่อง soapUI TestCases นะครับ ถือว่าเป็นเรื่องที่ไม่สมควรมองข้ามเลยทีเดียว

เริ่มต้นก็คล้ายๆกับเรื่อง ที่ผ่านมาเลยครับ โดยการคลิกขวาที่ TestSuite เป้าหมาย ก็จะขึ้นหน้าต่าง actions ให้เห็นมากมาย ให้เห็นคือ



โดยแต่ละอันก็มีหน้าที่ของมัน โดยมีความหมายดังต่อไปนี้

Show TestCase Editor - เปิดหน้าต่าง Testsuite ขึ้นมา
Disable/Enable TestSuite - เปิด/ปิด การทำงานของ TestSuite
Option - แสดงข้อความตัวเลือกขึ้นมา
Add Steps > เพิ่มกระบวนการ TestStep เข้าไปใน TestCase
New LoadTest - สร้างตัว LoadTest ขึ้นมาใหม่
Clone TestCase - จำลองตัว TestCase ขึ้นมาใหม่
Clone TestSteps - จำลองตัว TestStep ขึ้นมาใหม่ โดยรวมไปถึงจำนวนของ TestStep ด้วย
Clear - ล้างค่า TestStep ออกจาก TestCase
Export - ส่งค่า TestSuite ออก
Launch TestRunner - เปิดหน้าต่างการรัน TestSuite ขึ้นมา
Rename - ตั้งชื่อใหม่
Remove - ลบ TestSuite รวมทั้งสิ่งที่อยู่ภายในทั้งหมด
Move TestCase Up - เลื่อน TestCase ปัจจุบัน ขึ้นไปข้างบน 1 ชั้น
Move TestCase Down - เลื่อน TestCase ปัจจุบัน ลงมาข้างล่าง 1 ชั้น
Online Help - คำแนะนำทางอินเตอร์เน็ต
การ Clone TestCase

เหมือนกับที่อธิบายไว้ข้างต้นการ Clone ก็คือการ จำลองตัว TestCase ขึ้นมาใหม่ เมื่อคลิกจะมีหน้าต่างขึ้นมาพร้อมตัวเลือกมากมาย ดังรูป

เราสามารถทำการจำลองภายในและภายนอกโปรเจค โดยเลือกที่ Target Project ได้


การ Clone TestStep

การ Clone TestStep ก็คล้ายๆกับการ Clone TestCase แต่จะต่างกันตรงที่ การ Clone TestStep นั้นจะอยู่ภายใน TestCase โดยการทำงานนั้นจะอ้างอิง TestStep จาก TestCase อันอื่น เพื่อที่จะสามารถ จำลอง(Clone) ให้มาอยู่หรือเอาออกจาก TestCase นั้นๆ ได้

โดยรูปร่างหน้าตาของ TestStep จะเป็นเช่นนี้

ในส่วนของกรอบสีแดงจะเป็นของภายใน TestCase นั้นๆ และส่วนสีเขียวคือ ส่วนที่อยู่ใน TestCase ที่เหลือ เราสามารถเลือกที่จะเพิ่มหรือลด ได้

The TestCase Editor Toolbar

คือส่วนที่อยู่ด้านบนดังรูป
ประกอบไปด้วย(จากซ้ายไปขวา)
Run TestCase - ทำการรัน TestCase
Cancel TestCase - ทำการยกเลิกการรัน TestCase
Run Continuously - ทำการรันไปเรื่อยๆเป็น loop โดนจะไม่หยุดจนกว่าจะกด ยกเลิก
TestCase Credentials - กำหนดค่าการรับรองเพื่อใช้ในทุกๆ request ใน TestCase
TestCase Endpoint - กำหนดค่า endpoint เพื่อใช้ในทุกๆ requests ใน TestCase. เอาไว้ใช้เพื่อเวลาจะรันค่าโดยรันคนละเซิฟเวอร์
New LoadTest - สร้าง LoadTest ขึ้นมาใหม่
TestCase Options - เปิด Options ที่อยู่ใน TestCase ขึ้นมา (ดูรายละเดียดด้านล่าง)
Create Report : ส่งค่า TestCase ออกเป็นรายงาน HTML (เหมือนบทที่แล้ว)
Online Help - คำแนะนำทางอินเตอร์เน็ต
TestCase Options

ในส่วนตัวเลือก ประกอบไปด้วย

Search Properties : จะอธิบายในบทหลัง
Session : ควบคุมในส่วนของ HTTP เพื่อให้เกิดการซ่อมบำรุงทุกๆ request ใน TestCase
Abort on error : ควบคุมให้ TestCase ยกเลิกตนเองเมื่อมีการเทสผิดพลาดหรือเกิดการ error
Fail TestCase on Error : ควบคุมให้ TestCase เกิดความผิดพลาดเมื่อ TestStep เกิดความผิดพลาดResults : ทำการลบ Test Result ทิ้งไปเมื่อไม่มีข้อผิดพลาดเกิดขึ้นเพื่อสงวนความจำ(จะจัดเก็บเฉพาะข้อผิดพลาดไว้)
Socket timeout : กำหนดจุดสิ้นสุดการรอคอยในทุกๆ request
TestCase timeout : กำหนดจุดสิ้นสุดการรอคอยระหว่างการยกเลิกการรันผิดพลาดใน Testcase
Max results : กำหนดตัวเลขสูงสุดในการจับเก็บข้อมูลระหว่างการรัน

2552-07-06

Web Service TestSuites

วิธีการนี้เป็นวิธีต่อเนื่องจากตอนที่แล้วแต่รายละเอียดการเทสจะลงลึกกว่าเก่า

โดยเริ่มต้นเราต้องทำการ Generate เจ้าตัว TestSuite นี้ขึ้นมาก่อนโดยคลิกขวาที่ดังภาพ




จากนั้นจะได้หน้าต่างขึ้นมาอย่างที่เห็นในภาพ



โดยเนื่อหาคำสั่งมีความหมายดังนี้

TestSuite - โดยจะเลือกว่าจะสร้างใหม่หรือว่าจะเลือกจากอันที่มีอยู่แล้ว
Style - เลือกรูปแบบที่จะแสดง จะแบ่งเป็น 2 แบบคือ
One TestCase for each Operation - สร้างตัว TestSuite โดยให้มีหนึ่ง TestCase จากทั้งหมด
Single TestCase with one Request for each Operation - สร้างตัว TestSuite จากหนึ่ง request โดยให้มีหนึ่ง TestCase จากทั้งหมด
Request Content - เลือกรูปแบบที่จะแสดง แบ่งเป็น 2 แบบคือ
Use existing Requests in Interface - สร้างจาก request ที่มีอยู่แล้ว
Create new Empty Requests - สร้างใหม่ทั้งหมด
Operations - เลือกการทำงานที่ต้องการจะ Generate
Generate LoadTest - จะอธิบายภายหลัง

หลังจากที่กด ตกลงแล้ว ก็ใส่ชื่อตามที่ต้องการ

หน้าตาของ TestSuite



ต่อมามาดูคำสั่งของเจ้าตัว TestSuite ในช่อง Nevigator กัน

Open TestSuite Editor - เปิดหน้าต่าง Testsuite ขึ้นมา
Disable/Enable TestSuite - เปิด/ปิด การทำงานของ TestSuite
New TestCase - สร้างตัว TestSuite ขึ้นมาใหม่
Clone TestSuite - จำลองตัว TestSuite ขึ้นมาใหม่ โดยรวมไปถึง TestCases/TestSteps
Launch TestRunner - เปิดหน้าต่างการรัน TestSuite ขึ้นมา
Rename - ตั้งชื่อใหม่
Remove - ลบ TestSuite รวมทั้งสิ่งที่อยู่ภายในทั้งหมด
Export - ส่งค่า TestSuite ออก
Import Test Case - นำเข้า TestCase อื่นๆมาเข้าใน TestSuite อันนี้
Online Help - คำแนะนำทางอินเตอร์เน็ต

ต่อไปจะเป็นการเริ่มการเทสแล้วนะครับ

เริ่มจาก ดับเบิ้ลคลิกที่ เป้าหมายก่อน

หลังจากขึ้นหน้าต่างดังรูป ก็ทำการกดรันได้เลย


โดยคำสั่งต่างๆ มีดังนี้

Run : ทำการรัน TestSuite
Cancel : ยกเลิกการรัน
Run in Sequence : คลิกเลือกเพื่อสั่งให้รัน ที่ละ TestCase
Run in Parallel : คลิกเลือกเพื่อสั่งให้รันที่ละหลาย TestCase เป็นแบบคู่ขนาน
Create Report : ส่งไฟล์ออกมาเป็นผลลัพธ์รายงาน HTML หลังจากการรัน TestSuite ล่าสุด(ดูวิธีทำด้านล่าง)

การส่งออกรายงาน

คลิกที่ Create a test report for the last run of the TestSuite



จะมีหน้าต่างขึ้นมาให้เลือกวิธี



โดยมีความหมายดังนี้

Output Folder : เลือกตำแหน่งที่จะให้รายงานอยู่
Format : เลือกรูปแบบฟอร์มของรายงาน HTML มีอยู่ 2 แบบคือ
Multiple Pages : เลือกแบบหลายหน้า
Single Page : เลือกแบบหน้าเดียว(เหมาะสำหรับพิมพ์)


หลังจากเลือกเสร็จเรียบร้อยแล้วจะได้ไฟล์ HTML report ตามที่เลือก output ไว้โดยจะมีนามสกุลเป็น .xml

เมื่อคลิกไฟล์เข้าไปก็จะเห็นประมาณนี้


2552-07-04

Getting Started with Functional Testing

วันนี้เราจะเริ่มต้นจากการเทสเคสธรรมดาซะก่อน การเทสเคสคือว่าเป็นพื้นฐานของการเทส SoapUI ก็ว่าได้
เริ่มต้นจากเราจะเลือกว่าจะเทสตัวไหนซะก่อน เราสามารถเลือกได้หลายวิธีด้วยกันคือ

1. คลิกขวา >>> Add to TestCase


2. ดับเบิ้ลคลิกที่ เป้าหมายแล้วคลิกที่ Add this request to a TestCase ดังภาพ


ต่อจากนั้นโปรแกรมจะให้เราตั้งชื่อ โดยค่าเริ่มต้นของการตั้งชื่อคือ " TestSuite 1"
เมื่อทำการเพิ่ม TestCase เสร็จแล้วจะได้ดังภาพ
นี่คือความสามารถอีกอย่างของเจ้าตัว SoapUI คือเราสามารถเพิ่มตัว Assertions เข้าไปได้อีกเพื่อตรวจสอบความถูกต้อง

1. ดับเบิ้ลคลิกที่ตัว Request เป้าหมาย



2. เมื่อได้ทำการดับเบิ้ลคลิกดังภาพแล้ว ก็คลิกที่ Adds an assertion to this item


3. ทำการเลือกวิธีการ Assertion ในที่นี้ผมจะใช้ตัว Schema Compliance โดยเจ้าตัวนี้จะทำการตรวจสอบการตอบสนองของ WSDL/Schema ว่ายังทำงานตามที่ควรจะเป็นหรือไม่


4. เมื่อเสร็จแล้วก็ทำการคลิกที่ Submit เพิ้อยืนยัน ถ้าผ่านจะขึ้นดังภาพข้างล่าง

ต่อไปจะเป็นการเทสแล้วนะครับ วิธีการคือ
1. ดับเบิ้ลคลิกที่ TestCase ดังภาพ


2. เมื่อคลิกแล้วจะได้ดังภาพข้างล่าง แล้วเราก็ทำการ Run โดยคลิกที่ Runs this TestCase ดังรูป

3. หลังจากขั้นตอนข้างต้น เราจะได้ผลตามรูปถ้าหากไม่มีข้อผิดพลาด โดยเราสามารถเช็คได้จากหลายจุด


2552-07-02

Functional Testing of Web Services

มาถึงตอนนี้เราจะเริ่มพูดถึงเรื่องการเทสแล้วนะครับ
เริ่มต้นด้วย Function การเทสของ web services กันเลย

โดยทั่วไปแล้วใน SoapUI จะมีฟังชั่นการเทสแบ่งได้ดังนี้

Unit Testing : คือการทดสอบซอฟต์แวร์ ให้เป็นแบบใช้งานได้ง่ายเข้าใจได้ง่าย รูปแบบการทดสอบเป็นการทดสอบในระดับ function call เพื่อเป็นการยืนยันการทำงานระดับย่อยที่สุดว่าทำงานได้ถูกต้อง

Compliance Testing : คือการทดสอบ Web Service ให้คืนค่าผลลัพธ์ให้ตรงกับความหมาย

Process Testing : คือการทำให้แน่ใจว่าซอฟต์แวร์ชิ้นที่จัดทำขึ้นมานั้น ทำงานได้ถูกต้องตามกระบวนการ

Data Driven Testing : คือการตรวจสอบการทำงานข้างต้นให้สอดคล้องกับค่าอินพุทจากภายนอก เช่น ค่าดาต้าเบสของอีกเวปเซอร์วิส

2552-06-30

Methods

Method ใน REST SoapUI นั้น เหมือนกันกับ Method ใน WADL ที่ครอบคลุมใน Child ถึง REST Resource เราสามารถสร้าง Method ได้ในคำสั่ง "New Method" ใน SoapUI



หน้าต่างตอนสร้าง Method


REST Method Viewer

หน้าต่างแสดง REST Method เหมือนดังรูปด้านล่าง

เมื่อคลิกขวาที่ Method ในหน้าต่าง Navigator จะแสดงคำสั่งดังต่อไปนี้

  • Show Method Viewer - เปิดหน้าต่าง Method Viewer(มีผลเหมือนดับเบิ้ลคลิก)
  • New Request - สร้าง Request สำหรับ Method ขึ้นมาใหม่
  • Clone Method - ก๊อปปี้ Method รวมไปถึง Children
  • Rename - เปลี่ยนขื่อ Method
  • Delete - ลบ Method
  • Online Help - แสดงคำแนะนำในอินเตอร์เน็ต

2552-06-28

REST Resources

ในหัวข้อนี้ผมจะขออธิบายเกี่ยวกับ Rest Resources ที่กล่าวทิ้งไว้ในหัวข้อ REST Service นะครับ

REST Resources ก็คือ item ย่อยที่สามารถทำงานได้ของ REST Service นะครับและประกอบด้วย Resource ของ item ย่อย หรือ method นั้นๆ ส่วน Resource นั้นเราได้สร้างขึ้นมาในตอนต้นที่เราได้ทำการสร้าง REST Service ขึ้นมาแล้วนะครับ


และส่วนของ New REST Resource จะมีส่วนประกอบดังนี้นะครับ
  • Resource Name --> ชื่อของ resource
  • Resource Path/Endpoint--> ส่วนของ Resource หรือ ส่วนของ endpoint ทั้งหมด
  • Extract Params --> เลือก extract parameter
  • Parameters --> ตารางส่วนประกอบของ Extract Parameters ซึ่งสามารถเพิ่ม/ลดได้
  • Create Reques --> เลือกเพื่ิอสร้าง และ เปิด Request
และหลังจากที่เรากรอกรายละเอียดทั้งหมดแล้วกดที่ปุ่ม OK

เราก็จะได้หน้าตาของ Resource view ของ REST Service เป็นแบบนี้นะครับ (ในตัวอย่างนี้ผมยกตัวอย่างREST Service ของ Google นะครับ)





2552-06-26

Parameters and Representations

ในส่วนของ Parameters and Representations นั้นคือส่วนที่จะจัดการทางด้าน Resource และ Child Resource ผ่านทางตาราง Parameters ดังต่อไปนี้




ความหมายของคำสั่ง(ซ้าย-ขวา)

  • Add - เพิ่มค่า Parameter
  • Delete - ลบค่า Parameter
  • Clear - เคลียร์ค่าใน Parameter ที่เลือกไว้
  • Move down - เลื่อน Parameter ที่เลือกไว้ลงด้านล่าง
  • Move up - เลื่อน Parameter ที่เลือกขึ้นด้านบน
  • Update from URL - อัพเดทค่าข้อมูลแ Parameter จาก URL
นอกจากนี้ทุกๆ parameter ยังมีรายละเอียดปลีกย่อยที่สามารถตั้งค่าได้อีก





  • Required : สำหรับ Parameter ที่ต้องการตัวแปร
  • Default : ตั้งค่าปริยายของตัวแปร
  • Type : ประเภทของ XML schema ในค่าของ Parameter
  • Options : รายชื่อที่สามารถใส่ได้ใน Parameter
  • Description : รายละเอียดของ Parameter
  • Disable Encoding : ปิดการ Encoding ของ Parameter นั้นๆ เมื่อมีการส่ง
ส่วนสุดท้ายคือส่วน Representation คือส่วนที่แสดงการตอบสนองของทางด้าน Parameter ด้านบน




ประกอบไปด้วย
  • Type : ประเภทของ Representation ค่าตอบสนองจะเป็น RESPONSE และ FAULT
  • Media-Type : ประเภท media ของ Representation
  • Status Codes : ค่า Status ของ representation
  • QName : ค่าตัวเลือกของ QName จะตอบสนองใน XML Schema ที่อยู่ใน WSDL

*เราสามารถ เพิ่มหรือลบ ค่า Representation ได้ตรงปุ่ม เพิ่ม/ลบ ด้านบน
**เราสามารถ คลิกที่ Auto-Create เพื่อให้ SoapUI ทำการสร้าง Represent ขึ้นมาโดยอัตโนมัติ