หน้าเว็บ

วันพฤหัสบดีที่ 1 พฤศจิกายน พ.ศ. 2561

การทดสอบ เว็บ service : Bunyagorn chatasing


Bunyagorn Chatasing 5801012630114
github : https://github.com/buntuns/mywebservice
WebService on cloud : https://buntun.azurewebsites.net/WebService.asmx


AIR DATA


ในส่วนของ code ด้านบน เป็น service  ที่ใช้ในการ รับค่า จาก ฝั่ง client เข้ามาและ เพิ่มค่าที่ได้
ไปยัง XML file


air_data.xml





code ฝั่ง client


ในส่วนของ code ด้านบนนั้น เป็นในส่วนของ การใส่ค่าต่างๆและส่งไปยัง server

เรียกดูไฟล์ XML ที่ฝั่ง client โดยใช้ library Zeep




About ME


ส่วนของข้อมูล




service ที่ใช้ในการ ส่งค่า


ผลลัพท์ จากฝั่ง client








การทดสอบ Web Service : Thakdanai Khunsaen

Thakdanai Khunsaen 5801012610059


Server : ASP.NET (C#)
Client : Python(Zeep), PHP(Zend)
อื่นๆ : SoapUI

Commit 1 : Add project files.

    ในคอมมิทแรกจะเป็นการเพิ่มไฟล์โปรเจคทั้งหมดลงไป รวมถึง Service 3 ตัวที่ได้ทำในวันทดสอบระบบ ได้แก่

AddData
    เป็น Service ที่ไว้บันทึกข้อมูลของแอร์ แล้วเก็บลงในไฟล์ air_data.xml โดยจะรับค่า room, time ที่เป็น string และ temperature, humidity ที่เป็น double และจะไม่ส่ง response อะไรกลับไป



    ตัวอย่างการเรียกใช้ จะใช้ python เป็น client โดยใช้ library ที่ชื่อว่า zeep ครับ

ข้อมูลในไฟล์ air_data.xml ก่อนที่ client จะเรียกใช้ service AddData

การเรียกใช้ service AddData ใน python โดยใช้ library zeep

ข้อมูลในไฟล์ air_data.xml หลังจากที่ client เรียกใช้ service AddData


    จะเห็นว่า เมื่อ client มีการเรียกใช้ Service AddData เพิ่มข้อมูลเข้าไป ข้อมูลของห้อง 002 ก็จะถูกเพิ่มลงไปในไฟล์

getData
    เป็น Service ที่ไว้เรียกข้อมูลที่อยู่ในไฟล์ air_data.xml ออกมา ไม่มี input โดยจะมีการ Response ออกมาเป็นชุดข้อมูล xml AirData ซึ่งภายในก็จะมี room_number, time_record ที่เป็น string และ temperature, humidity เป็น double



    ตัวอย่างการเรียกใช้ด้วย python จะเห็นว่าค่าที่รับมานั้นจะได้มาเป็นชุดข้อมูลหรือก็คือ array ของ AirData โดยข้อมูลของ room_number และ time_record เป็น string จึงมี ' ' ครอบอยู่ ส่วนข้อมูลของ temperature และ humidity จะเป็นตัวเลขที่มีทศนิยม





    เพื่อความแน่ใจจึงใช้คำสั่งแสดงประเภทเช็คดูอีกที ซึ่งก็ได้ผลลัพธ์ประเภทของข้อมูลตรงตามที่กำหนดไว้ (ใน python ไม่มี double จึงแสดงเป็น float)




    เนื่องจาก library zeep จะแปลงค่าที่ได้รับมาเป็น JSON ดังนั้นจึงอาจไม่เห็นชัดว่า ได้รับข้อมูลมาเป็น xml จริงหรือเปล่า ซึ่งสามารถใช้โปรแกรม SoapUI แสดงความชัดเจนในเรื่องนี้ได้



getDataByRoom
    จะคล้ายกับ getData แต่ Service นี้จะมีการรับ input roomNo เพื่อเอามาทำการ query ข้อมูลจากไฟล์ air_data.xml และ response ข้อมูลออกไปเฉพาะห้องที่ระบุใน input เท่านั้น


    ตัวอย่างการเรียกใช้




Commit 2 : Add Service AboutMe, Create Client Folder(PHP, Python)

    ในคอมมิทที่ 2 จะเป็นการเพิ่ม PHP Client เข้ามา สร้างโฟลเดอร์เพิ่มรวม Client ไว้ที่เดียวกัน และสร้าง Service AboutMe

AboutMe
    เป็น Service ที่จะ Response ข้อมูลของตัวเองกลับไป ซึ่งประกอบด้วย ชื่อ รหัส และงานอดิเรก 2 อย่าง


    เรียกใช้ด้วย Python



    เรียกใช้ด้วย PHP โดยใช้ library zend



    เรียกใช้ด้วย SoapUI



    *** ปัญหาที่พบก็คือ child element ของ hobby นั้นชื่อว่า <string> ซึ่งไม่สื่อความหมาย



Commit 3 : Product Express Add Service AddProduct, SendComplete

    ในคอมมิทที่ 3 จะเป็นการสร้าง Service ที่เกี่ยวกับการส่งสินค้า ซึ่งภายในคอมมิทนี้ก็จะประกอบไปด้วย

AddProduct
    เป็น Service ที่ไว้เพิ่มข้อมูลของสินค้า แล้วเก็บลงในไฟล์ Product.xml จะรับค่า id, customer_name กับ address ที่เป็น string และ weight ที่เป็น double และจะไม่ส่ง response อะไรกลับไป



    โดยก่อนที่จะเพิ่มข้อมูลลงในไฟล์ Product.xml ก็จะเพิ่ม <ProductSended> เข้าไปด้วยเพื่อใช้เป็นตัวบอกสถานะการส่ง โดยจะกำหนดค่าเริ่มต้นให้เป็น Not Yet

ข้อมูลในไฟล์ Product.xml ก่อนที่ client จะเรียกใช้ service AddProduct

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


ข้อมูลในไฟล์ Product.xml หลังจากที่ client(python) เรียกใช้ service AddProduct

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


ข้อมูลในไฟล์ Product.xml หลังจากที่ client(php) เรียกใช้ service AddProduct

SendComplete
    เป็น Service ที่ไว้แก้สถานะการส่งของสินค้า เพื่อบอกว่าสินค้านั้นๆส่งสำเร็จแล้ว โดยจะรับ id ของสินค้าเข้ามา และทำการแก้สถานะของสินค้าชินนั้น และจะไม่ส่ง response อะไรกลับไป



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




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




Commit 4 : Add Service getProduct, getProductBySendStatus / Add Client

    ในคอมมิทที่ 4 จะเป็นการเพิ่มไฟล์ Client ใหม่เพิ่มใช้สำหรับ Service ที่เกี่ยวกับการส่งสินค้า(Client ตัวเก่าใช้กับ AboutMe) และเพิ่ม Service ที่เกี่ยวกับการส่งสินค้า 2 ตัว ได้แก่

getProduct
    เป็น Service ที่ไว้เรียกข้อมูลที่อยู่ในไฟล์ Product.xml ออกมา ไม่มี input โดยจะมีการ Response ออกมาเป็นชุดข้อมูล xml ProductData ซึ่งภายในก็จะมี ProductID, Customer, Address และ ProductSended ที่เป็น string ส่วน ProductWeight นั้นจะเป็น double


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



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



    ทำการตรวจสอบประเภทของข้อมูลด้วย PHP ซึ่งผลลัพธ์ประเภทของข้อมูลก็ได้ตรงตามที่กำหนดไว้




getProductBySendStatus
    จะคล้ายกับ getProduct แต่ Service นี้จะมีการรับ input sended ที่เป็นประเภท boolean เพื่อเอามาทำการ query ข้อมูลจากไฟล์ Product.xml หาก input เป็น True ก็จะ response เฉพาะข้อมูลสินค้าที่ส่งแล้วออกไป แต่ถ้า input เป็น False ก็จะ response เฉพาะข้อมูลสินค้าที่ยังไม่ได้ส่งออกไป


ข้อมูลในไฟล์ Product.xml

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



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




Commit 5 : Edit About Me edit name Hobbies child element (string >> Hobby)

    ในคอมมิทที่ 5 นี้จะเป็นการแก้ปัญหาจากคอมมิทที่ 2 หรือก็คือแก้ชื่อของ child element ของ hobby วิธีแก้ปัญหาก็คือใส่คำสั่ง XmlArrayItem("Hobby") ไว้ก่อนการประกาศตัวแปร public List<string> Hobbies เพื่อเป็นการตั้งชื่อ Element ที่อยู่ใน Array Hobbies


    ผลลัพธ์ที่ได้จาก element ที่เคยชื่อ string ก็เปลี่ยนเป็น Hobby แล้ว



Commit 6 : Add Bin Folder / Rename AirService.asmx >> WebService.asmx

    เพิ่มโฟลเดอร์ Bin เข้าไป ซึ่งเป็นโฟลเดอร์ที่เก็บ Reference หรือ library เอาไว้ และเหมือนจะเกิดข้อผิดพลาดบางอย่าง ไฟล์ที่ได้ Rename ไปกลับไม่เข้ามาอยู่ในคอมมิทนี้ จึงต้องคอมมิทซ้ำอีกรอบในคอมมิทที่ 7


Commit 7 : Rename AirService.asmx >> WebService.asmx

    เปลี่ยนชื่อไปจาก AirService.asmx เป็น WebService.asmx และ Publish Project ขึ้นบน Azure