เส้นทางสู่การเป็น Software Tester กับการสรุปสิ่งที่ได้เรียนรู้จากการฝึกกับ WeLoveBug — WLB-2-Months-Bootcamp ครั้งที่ 3

Supachot S.
WeLoveBug dot Com
Published in
6 min readJul 4, 2023
https://northeasternsjp.org/wp-content/uploads/2020/08/%E0%B9%81%E0%B8%9A%E0%B9%88%E0%B8%87%E0%B9%80%E0%B8%A7%E0%B8%A5%E0%B8%B2%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%99.jpg

สวัสดีครับพบกับอีกเช่นเคย วันนี้ผมจะมาบอกเล่าสิ่งที่ได้ฝึกเเละเรียนรู้ ครั้งที่ 3 กับ WeLoveBug 2 Months Bootcamp และเนื่องจากผมได้ทำการเปลี่ยนเเปลงรูปแบบการเขียนเล็กน้อยถึงปานกลาง หากเกิดอาการสับสน มึนงง ดูวกไปวนมา กับวิธีการเล่าเรื่องของผม ผมขออภัยมา ณ ที่นี้ด้วย เเละผมจะปรับปรุงในครั้งต่อ ๆ ไป ครับ 🙇🏼‍♂️

วันที่ 26 มิถุนายน 2566

ในวันนี้ได้มีการคุยวางแผนงานกันว่าจะทำอะไร ซึ่งได้ข้อสรุปว่าจะเรียนรู้เรื่อง “ API Test Automation with Postman ” สอนโดย Miss. Beth Marshall ก่อนที่จะไปเข้า Workshop ในวันที่ 4–6 กรกฏาคม 2566 ก่อนอื่นเลย ผมขอเกริ่นด้วยเรื่อง Postman คืออะไร ? Postman คือ เครื่องมือที่ใช้ในการช่วยทดสอบระบบหรือ API ที่พัฒนาขึ้นมา เพื่อให้เราทดสอบว่าระบบสามารถตอบกลับมาได้ถูกต้องหรือไม่ ซึ่งในเรื่อง “API Test Automation with Postman” ประกอบไปด้วย 5 บท ซึ่งมีหัวข้อดังนี้ 👇🏼

  • Chapter 1.1: Install and Setup , Chapter 1.2: Tour of Postman , Chapter 1.3: Importing Tests ในบทนี้จะเเยกเป็น 3 ส่วนใหญ่ ๆ ซึ่งจะพูดถึงการดาวห์โหลดและติดตั้งโปรแกรม Postman การเเนะนำคำสั่งต่างใน Postman และการ Import การทดสอบ จาก GitHub เพื่อนำมาทดสอบที่ Postman
  • Chapter 2: Creating and Running Mocks in Postman ในบทนี้จะพูดถึงเรื่องการสร้างเซิร์ฟเวอร์จำลองโดยอ้างอิงจาก specification การสร้างเเบบ scratch และการเพิ่ม Mock server ลงใน Postman collection ที่มีอยู่
  • Chapter 3: Monitors in Postman ในบทนี้จะพูดถึงการสร้าง การกำหนดค่า ดูผลลัพธ์ และการลบ Monitor
  • Chapter 4: Postman Workspaces ในบทความนี้จะเกี่ยวกับวิธีการใช้ Postman ในรูปแบบ การทำงานร่วมกันเพื่อทำงานเเละเเบ่งปันงานร่วมกัน (Team Workspace) การทำ Public Workspace และ Vision Control ใน Postman
  • Chapter 5: Newman Runner ในบทความนี้จะพูดถึงการทำ GitHub Actions การรัน Newman ใน GitHub และการทำ HTML Extra Report

ต่อมาตอนบ่ายได้มีการเข้าร่วมการเเบ่งปันเรื่อง API-First Development (Design-First) โดยพี่ปุ๋ย ซึ่งจะเป็นเรื่องของการทำ API Specification เเละได้มีการยกตัวอย่างเครื่องมือ 3 ตัว คือ Swagger หรือ OpenAPI Postman และ API Blueprint

หลังจากนั้นช่วงค่ำ มีการเรียนเรื่อง SQL กับ 1-hour Microlearning: Foundation of SQL โดยพี่นัท ใครส่วนของคลาสนี้จะเป็นการเรียนรู้พื้นฐานเกี่ยว SQL หรือ Structured Query Language ภายในเวลา 1 ชม. เนื้อหาของวันนี้จะเป็นการเล่าที่มาที่ไปและ ประวัติของ SQL เเละเริ่มเรียน เเต่เนื่องจากมีปัญหาทางเทคนิค จึงทำให้เกิด Error ขึ้น หลังจากรันคำสั่งเพื่อ Start Docker ซึ่งสิ่งที่ได้เรียนรู้ตลอดทั้งวันคือ

  • การใช้งานพื้นฐานของ Postman ไม่ว่าจะเป็นเรื่องของการสร้างเเละใช้งาน ทั้ง Mocks Server การสร้าง Monitors การสร้าง Team Workspaces เเละการทำ Public Workspace เเละได้เห็นการทำ API Specification ด้วย เครื่องมือ Swagger หรือ OpenAPI Postman และ API Blueprint เเละการทดสอบ API Testing ก่อนการเริ่มพัฒนาและทดสอบ
  • ได้รู้ว่า SQL คือ ภาษาที่ใช้ในการเขียนโปรเเกรม เพื่อใช้ในการจัดการกับข้อมูลใน ฐานข้อมูล โดยจะจัดเก็บในรูปเเบบของ ข้อความ รูปภาพ และวิดีโอ เเละได้เห็นถึงคำสั่งต่าง ๆ ที่ใช้ใน SQL ระบบการจัดการฐานข้อมูล ว่าประกอบไปด้วย Structured และ Unstructured ความเเตกต่างระหว่าง SQL กับ NoSQL และสาธิต การ CREATE, SELECT, SHOW, และ DROP Databases
รายงานการรัน Test จาก Newman ใน GitHub
อ้างอิงภาพจาก 1-hour Microlearning: Foundation of SQL ของพี่นัท

วันที่ 27 มิถุนายน 2566

ในส่วนของวันนี้เนื่องจากเมื่อวานเกิดปัญหาทางเทคนิคซึ่งพี่นัดก็สามารถเเก้ปัญหาตรงนี้ได้ 👏 วันนี้ช่วงเช้าจึงเป็นการทดลองทำส่วนที่พี่นัทเเก้ไขว่าสามารถรันได้หรือไม่ ซึ่งผลปรากฏว่าสามารถรันได้ 🎊 หลังจากนั้นก็จะมีการพูดคุยกันในทีมว่าเป็นอย่างไรกันบ้างสามารถรันได้ไหนซึ่งทุกคนก็สามารถรันได้ ต่อมาก่อนไปพักกลางวันได้มีการเข้าร่วมประชุมกับบริษัทเเห่งหนึ่ง ในเวลาไป 1 ชม. จึงหมดช่วงเช้าไปเท่านี้ ต่อมาช่วงบ่ายมีการเข้าร่วมฟังการสนทนาของการรีวิว Wireframe กับบริษัทเเห่งหนึ่ง หลังจากทางทีม UX/UI ได้ปรับเเก้จากครั้งที่เเล้ว หลังจากนั้นก็จะเข้าสู่การเรียน เรื่อง SQL กับ 1-hour Microlearning: Foundation of SQL โดยพี่นัท ครั้งนี้เป็นครั้งที่ 2 ต่อจากเมื่อวานในวันนี้จะเป็นการสอนเรื่อง Data Type ของ SQL และการใช้คำสั่งต่างๆในการ สร้างตาราง (Create Table) เปลี่ยนตาราง (Alter table) และการเพิ่มค่าอัตโนมัติ (Auto Increment) ซึ่งสิ่งที่ได้เรียนรู้ตลอดทั้งวันนี้คือ

  • Data Type ของ SQL ที่จะประกอบไปด้วย 3 ตัวหลัก ๆ คือ 1) Numeric หรือ ตัวเลข 2) Date and Time หรือ วันที่และเวลา 3) String Data Types ซึ่งในเเต่ละตัวก็จะมีเเยกย่อยต่างกันออกไปตามการใช้งานที่เหมาะสม
  • การสร้างตารางโดยใช้ คำสั่ง CREATE TABLE เมื่อต้องการสร้างตาราง โดยมีเงื่อนไขว่าตารางนั้นต้องไม่มีอยู่เเล้วใน Database ซึ่ง constraint จะมีดังต่อไปนี้
--สร้างตาราง
CREATE TABLE new_table_name (
col_name1 datatype constraint,
col_name2 datatype constraint,
col_name3 datatype constraint,
.........
);

/*Constraint
NOT NULL,
CHECK,
DEFAULT,
PRIMARY KEY,
AUTO_INCREMENT,
UNIQUE,
INDEX,
ENUM,
FOREIGN KEY*/
  • การเปลี่ยนตารางโดยใช้คำสั่ง ALTER TABLE เมื่อต้องการเปลี่ยนชื่อตาราง หรือเพิ่มลบหรือปรับเปลี่ยนคอลัมน์ในตารางที่มีอยู่ (ADD, DROP, MODIFY)
-- การเพิ่มคอลัมน์ในตาราง
ALTER TABLE table_name
ADD new_column_name column_definition
[ AFTER column_name ];

-- ตัวอย่างโค้ดการเพิ่มคอลัมน์ในตาราง
ALTER TABLE employee_list
ADD age varchar(40) NOT NULL;

-- ตัวอย่างโค้ดการเพิ่มหลายคอลัมน์ในตาราง
ALTER TABLE employee_list
ADD address varchar(100) NOT NULL,
ADD salary decimal(6,2) NOT NULL,
ADD birth_date DATE NULL;
--การเเก้ไขคอลัมน์
ALTER TABLE table_name
MODIFY column_name column_definition
[ AFTER column_name ];

--ตัวอย่างโค้ดการเเก้ไขชนิดข้อมูลจาก varchar(50)เป็น int(3) เเละ ให้คอลัมน์สามารถใส่ค่า NULL ได้
ALTER TABLE employee_list
MODIFY age int(3) NULL;
--การลบคอลัมน์
ALTER TABLE table_name
DROP COLUMN column_name;

--ตัวอย่างโค้ดการลบคอลัมน์ออกจาก Database
ALTER TABLE employee_list
DROP COLUMN age;
--การเปลี่ยนชื่อคอลัมน์ในตาราง
ALTER TABLE table_name
CHANGE COLUMN old_name new_name
column_definition
[ AFTER column_name ]

--ตัวอย่างโค้ดการเปลี่ยนชื่อคอมลัมน์ในตาราง
ALTER TABLE employee_list
CHANGE COLUMN birth_date birthdate
DATE NULL;
--การเปลี่ยนชื่อตาราง
ALTER TABLE table_name
RENAME TO new_table_name;

--ตัวอย่างโค้ดการเปลี่ยนชื่อตาราง
ALTER TABLE employee_list
RENAME TO employee;
  • การสร้างตัวเลขอัตโนมัติโดยใช้คำสั่ง AUTO INCREMENT เมื่อต้องการให้ SQL สร้างตัวเลขอัตโนมัตหลังจากเพิ่มขอมูลลงไป
--ตัวอย่างโค้ดการสร้างเลขอัตโนมัติ
ALTER TABLE employee AUTO_INCREMENT=10;

วันที่ 28 มิถุนายน 2566

ในส่วนของวันนี้เป็นการทำ Test Cases ให้กับโปรเจคของบริษัทเเห่งหนึ่ง โดยก่อนจะเริ่มการทำงานได้มีการวางแผนว่าวันนี้เป้าหมายคืออะไร ซึ่งเราแพลนไว้ว่าจะทำ Test Cases ให้เสร็จ หลังจากวางเป้าหมายเสร็จเเล้วจะเป็นการเริ่มทำงานโดยเป็นการระดมสมองช่วยกันเเสดงความคิดเห็นและช่วยกันทำตลอดทั้งวัน เเต่เนื่องจากเกิดปัญหาเรื่อง ความไม่เข้าใจในตัว Flow จึงทำให้ใช้เวลาในการทำความเข้าใจค่อนข้างนาน และมีบางจุดที่ไม่ชัดเจน จึงทำให้ไม่สามารถทำให้สำเร็จได้วางเเผนไว้ จากนั้นช่วงเย็นจะมีการเรียนเรื่อง SQL กับ 1-hour Microlearning: Foundation of SQL โดยพี่นัท ครั้ง 3 โดยครั้งที่ 3 นี้จะเป็นการเรียนเรื่อง Query ข้อมูล ซึ่งจะประกอบไปด้วย INSERT Statement, UPDATE Query, DELETE Statement, SELECT Statement และปิดท้ายด้วยการอ่านบทความเรื่อง “ Test Case Review Process And Checklist ” และสิ่งที่ได้เรียนรู้ของวันนี้คือ

  • การฝึกเขียน Test Cases เเละ ฝึกวิเคราะห์ Flow
  • การอ่านค่าคำสั่งของ Query ใน SQL เเละวิธีการเรียงลำดับ ซึ่งจะเรียงโดยเริ่มจาก SELECT, FROM, JOIN ON, WHERE, GROUP BY, HAVING, ORDEY BY, และจบด้วย LIMIT ซึ่งสามารถข้ามคำสั่งได้เเต่ไม่สามารถที่จะเปลี่ยนแปลงลำดับเหล่านี้ เช่นไม่สามารถ SELECT แล้ว JOIN ก่อน FROM ได้
อ้างอิงภาพจาก 1-hour Microlearning: Foundation of SQL ของพี่นัท
  • การเก็บข้อมูลหรือเพิ่มข้อมูลในตาราง SQL ซึ่งสามารถเพิ่มได้ 2 รูปเเบบ คือ เเบบแถวเดียวและหลายเเถว โดยใช้คำสั่ง “INSERT INTO”
--การเพิ่มในรูปเเบบเเถวเดียว
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );

--การเพิ่มข้อมูลในรูปแบบหลายเเถว
INSERT INTO table_name VALUES
( value1, value2,...valueN )
( value1, value2,...valueN )
...........
( value1, value2,...valueN );

--ตัวอย่างโค้ดการเพิ่มในรูปเเบบเเถวเดียว
INSERT INTO people (id, name, occupation, age)
VALUES (101, 'Peter', 'Engineer', 32);

--ตัวอย่างโค้ดการเพิ่มในรูปเเบบหลายแถว
INSERT INTO people VALUES
(102, 'Joseph', 'Developer', 30),
(103, 'Mike', 'Leader', 28),
(104, 'Stephen', 'Scientist', 45);
  • การอัปเดต Query โดยใช้คำสั่ง “UPDATE” เมื่อต้องการที่จะแก้ไขข้อมูลของตาราง MySQL ในฐานข้อมูล และยังสามารถใช้คำสั่ง “UPDATE” เพื่ออัปเดตหลายคอลัมน์ได้ด้วยการระบุรายการคอลัมน์และใช้เครื่องหมายจุลภาคคั่น
--ตัวอย่างการอัพเดต Query
UPDATE table_name
SET column_name1=new-value1,
column_name2=new-value2,
...
[WHERE Clause]

--ตัวอย่างโค้ดการอัปเดต Query
UPDATE people
SET email = 'joseph@scrum123.com'
WHERE name = 'Joseph';

--ตัวอย่างโค้ดการอัปเดต Query หลายคอลัมน์
UPDATE people
SET name = 'Alex', email = 'Alex@gmail.com'
WHERE id = 12;
  • การลบข้อมูลออกจากตารางใน MySQL ที่ไม่ต้องการโดยใช้คำสั่งที่ชื่อว่า “DELETE”
--ตัวอย่างการลบข้อมูลออกจากฐานข้อมูล
DELETE FROM table_name WHERE condition;

--ตัวอย่างโค้ดการลบข้อมูลออกจากฐานข้อมูล
DELETE FROM people WHERE id=5;
  • การดึงข้อมูลจากฐานข้อมูลตั้งเเต่ 1ตารางขึ้นไป โดยใช้คำสั่ง “SELECT” ซึ่งสามารถเลือกดูข้อมูลทั้งหมดหรืออย่างใดอย่างหนึ่งตามที่ระบุได้
--ตัวอย่างการเลือกข้อมูลจากฐานข้อมูล
SELECT field_name1, field_name 2,... field_nameN
FROM table_name1, table_name2...
[WHERE condition]
[GROUP BY field_name(s)]
[HAVING condition]
[ORDER BY field_name(s)]
[OFFSET M ][LIMIT N];

--ตัวอย่างโค้ดการเลือกข้อมูลจากฐานข้อมูล
SELECT product_name, unit, category_name, price
FROM products INNER JOIN categories
ON products.category_id = categories.category_id
WHERE price > 100.00
ORDER BY product_name;

วันที่ 29 มิถุนายน 2566

ในส่วนของวันนี้เป็นการทำเป้าหมายของเมื่อวานที่ไม่สำเร็จให้สำเร็จ และเนื่องจากยังพอมีเวลาเหลือหลังจากวิเคราะห์ทำ Test Cases เสร็จแล้ว จึงได้ทำ Test Scenario ต่อโดยการนำ Test Cases ที่ทำเสร็จเเล้วมาต่อกันจนเกิดเป็น Test Scenario เเละต่อด้วยการเรียนเรียนเรื่อง SQL กับ 1-hour Microlearning: Foundation of SQL โดยพี่นัทเจ้าเก่าเจ้าเดิม ครั้งนี้เป็นครั้งที่ 4 ซึ่งเป็นการเรียนเรื่อง การใช้เงื่อนไขต่าง ๆ ลงไปในคำสั่ง SQL ประกอบไปด้วย AND, OR, LIKE, BETWEEN, NULL, NOT NULL, Not Equal เเละการใช้ Functions เพื่อเรียกคืนค่าที่ต้องการ ประกอบไปด้วย COUNT(), SUM(), AVG(), MIN(), และ MAX() สิ่งที่ได้เรียนรู้ในวันนี้คือ

  • การฝึกเขียน Test Cases เเละ Test Scenario
  • คำสั่ง AND หรือ OR ใช้กับคำสั่ง SELECT, INSERT, UPDATE หรือ DELETE เพื่อใช้ในการทดสอบเงื่อนไขตั้งเเต่ 2 เงื่อนไขขึ้นไป
--ตัวอย่างการใช้ AND
WHERE condition1
AND condition2
...
AND condition_n;

--ตัวอย่างการใช้ AND กับคำสั่ง SELECT
SELECT * FROM products
WHERE price > 50 AND price < 100;

--ตัวอย่างการใช้ OR
WHERE condition1
OR condition2
...
OR condition_n;

--ตัวอย่างการใช้ OR กับคำสั่ง SELECT
SELECT * FROM products
WHERE price < 50 OR price > 100;
  • คำสั่ง LIKE เเละ NOT LIKE ใช้สำหรับค้นหาคำในตาราง และทั้ง 2 คำสั่งนี้ ก็ใช้คู่กับ SELECT, INSERT, UPDATE และ DELETE โดยใช้คำสั่ง WHERE ร่วมด้วย ซึ่งมีการใช้ % มีค่าเท่ากับตัวอักษรอะไรก็ได้ และจำนวนกี่ตัวก็ได ้เช่น %bottles หมายถึง ข้อมูลที่ขึ้นต้นลงท้ายด้วย bottles ซึ่ง NOT LIKE ก็สามารถใช้ได้เช่นกัน
--ตัวอย่างโค้ดการใช้ LIKE ร่วมกับ %
SELECT * FROM products
WHERE unit LIKE "%bottles";

--ตัวอย่างโค้ดการใช้ NOT LIKE ร่วมกับ %
SELECT * FROM products
WHERE unit NOT LIKE "%bottles";
  • คำสั่ง Not Equal เป็นอสมการรูปเเบบนึ่งที่ใช้เปรียบเทียบเงื่อนไข 2 ตัวขึ้นไปที่ไม่เท่ากัน โดยจะใช้สัญลักษณ์ (! =) ในการเขียนคำสั่ง
--ตัวอย่างโค้ดการใช้ Not Equal
SELECT * FROM categories
WHERE category_name != "Dairy Products";
  • คำสั่ง BETWEEN เป็นคำสั่งที่ใช้ในการหาค่าหรือข้อมูลตามช่วงที่กำหนด และจะใช้กับคำสั่ง SELECT, INSERT, UPDATE หรือ DELETE โดยใช้คำสั่ง WHERE ร่วมด้วย
--ตัวอย่างการใช้ BETWEEN
SELECT * FROM products
WHERE price BETWEEN 20 AND 35;
  • คำสั่ง NULL และ NOT NULL เป็นการใช้เพื่อกำหนดว่าในคอลัมน์นั้นสามารถเป็นค่าว่างได้หรือไม่ หากได้จะใช้คำสั่ง NULL เเต่หากไม่ได้จะใช้คำสั่ง NOT NULL
--ตัวอย่างการใช้ NULL เเละ NOT NULL 
SELECT * FROM employees
WHERE birth_date IS NULL;
  • ฟังก์ชั่น COUNT() และ SUM() เป็นฟังก์ชั่นที่ใช้ในการนับเเละรวมผลรวมทั้งหมด ซึ่งหลังจากใช้ฟังก์ชั่น COUNT() มันจะช่วยนับเเถวตามเงื่อนไขที่กำหนดเเละหากใช้ฟังก์ชั่น SUM() มันก็จะรวมผลรวมทั้งหมดตามเงื่อนไขที่เรากำหนดเอาไว้
--ตัวอย่างการใช้ COUNT()
SELECT COUNT(gender)
FROM employee
WHERE gender='M';

--ตัวอย่างการใช้ SUM()
SELECT SUM(amount)
FROM salary
WHERE from_date='2000-06-01';
  • ฟังก์ชั่น AVG(), MIN(), และ MAX() ทั้ง 3 ตัวนี้ก็จะคล้ายคลึงกับ ฟังก์ชั่น COUNT() และ SUM() คือ หากต้องการคำนวนค่าเฉลี่ยของค่าใน Table นั้น ๆ จะใช้คำสั่ง AVG() หรือหากจะหาค่าที่ตำที่สุดของค่าใน Table นั้น ๆ จะใช้คำสั่ง MIN() หรือสุดท้ายหากต้องการหาค่าที่มากที่สุด จะใช้คำสั่งที่ชื่อว่า MAX()
--ตัวอย่างการใช้ AVG()
SELECT AVG(amount)
FROM salary;

--ตัวอย่างการใช้ MIN()
SELECT MIN(amount)
FROM salary
WHERE from_date='2000-06-01';

--ตัวอย่างการใช้ MAX()
SELECT MAX(amount)
FROM salary
WHERE from_date='2000-06-01';

วันที่ 3 กรกฎาคม 2566

ในส่วนของวันนี้ในช่วงเช้าจะเป็นการ Review Test Scenario กับเพื่อนกลุ่มอื่น เพื่อรีเช็คความถูกต้องเเละทำให้เข้าใจตรงกัน หลังจากนั้นช่วงบ่ายมีการเข้าร่วมฟังการสนทนากับ บริษัทเเห่งหนึ่ง จากนั้นนำสิ่งที่ได้จากการประชุมมาลองทำ Test Cases ต่อหลังจากการประชุมจบลง ปกติเเล้วจะมีการเรียนเรื่อง SQL กับ 1-hour Microlearning: Foundation of SQL โดยพี่นัท เเต่เนื่องด้วยพี่นัท ติดภารกิจจึงถูกยกเลิกไป 😭 สิ่งที่ได้เรียนรู้ในวันนี้คือ

  • การฝึกการทำความเข้าใจตาม Flow งานที่ลูกค้าได้ให้มา ซึ่งผมยังทำได้ไม่ดีนักทำให้ยังไม่เข้าใจ ซึ่งผมจะพยายามฝึกฝนต่อๆไป
  • การฝึกวิเคราะห์ Flow ที่ได้มา เเละนำมา เขียน Test Cases

--

--