-
Kiểm thử phần mềm
- là quá trình tìm kiếm phát hiện lỗi
- nhằm đảm bảo phần mềm chính xác
- đáp ứng đủ và đúng theo yêu cầu của KH
-
Công việc của Tester
- Đọc tài liệu
- Viết testcase
- Thực hiện test
- Log bug/ Report
-
Phương pháp Testing
-
White Box Testing
(Unit Test)
- Kiểm thử đầu ra, đầu vào hệ thống dựa theo logic code bên trong
- Công việc của Dev
-
Black Box Testing
- Không quan tâm code, test chức năng hệ thống dưới góc nhìn người dùng
- Công việc của Tester
-
Kiểm thử Động và Tĩnh
(Dynamic/Static Testing)
-
Kiểm thử tĩnh
(Static Testing)
- Là kiểm tra kế hoạch, kiểm tra sớm để phát hiện lỗi sớm
- Các Leaders và BA
- Kiểm thử không code, trước khi code
-
Kiểm tra Logic
- Kết cấu code
- Tài liệu
- Test Plan
-
Kiểm thử động
(Dynamic Testing)
- Là kiểm tra quá trình, theo dõi quá trình vận hành của hệ thống
- Công việc của Tester và DEV
-
Chức năng
(Functional Testing)
- White Box
- Black Box
-
Phi chức năng
(Performance + Security Testing)
- Hiệu suất
- Hiệu năng
- Bảo mật
-
SDLC (Software Development Life Cycle) - Vòng đời phát triển phần mềm
-
Waterfall
-
Khái niệm
- SDLC đầu tiên trên TG
- Phương pháp quản lý dự án trên quy trình thiết kế tuần tự và liên tiếp
- Giai đoạn mới chỉ được bắt đầu khi giai đoạn trước đã hoàn thành xong
- Các giai đoạn đều là time-fixed
-
Sơ đồ dự án
-
PM
- BA
- Tech Lead
- Dev Lead
- Dev member
- Front-end
- Back-end
- Full-stack
- Tester Lead
- Tester member
-
Các giai đoạn vận hành dự án
-
Requirement
(Yêu cầu)
- Xác định yếu tố kinh doanh
- Chuẩn bị tài liệu theo yêu cầu client
(High-level)
- Setup nhân sự
- Chốt được yêu cầu cơ bản của dự án
-
Design
(Thiết kế)
- BA
- BA Thiết kế tài liệu
- Tech Lead
- Logic hệ thống
- Tester Lead
- Chuẩn bị Test Plan
- - BA finish tài liệu
- Tech Lead done logic
- Tester Lead done Test Plan
-
Implementation
(Thực hiện)
- DEV
- Build code
- Tester
- Viết Testcase
- Chuẩn bị data test
- - DEV done code – Unit Test
- Tester done testcase
-
Verification
(Kiểm tra)
- Tester
- Test các luồng
- Report bug nếu có
- DEV
- Fix bug nếu có
- - Hệ thống đã ổn định
- Các bugs được fix hết
- Các testcases đã execute
- Maintenance
(Duy trì)
-
Nhược điểm
- Không linh hoạt trong vận hành
- Khách hàng chỉ được xem sản phẩm ở bước cuối cùng
- Cố định về mặt thời gian – Tiến độ không đảm bảo
-
Nên áp dụng khi nào
- Nắm vững công nghệ phát triển dự án
- Loại bỏ những yêu cầu mập mờ không rõ ràng
- Có lượng tài nguyên phát triển phong phú và trình độ chuyên môn kĩ thuật cao
- Phù hợp với dự án nhỏ, ngắn hạn hoặc dự án cực lớn
-
Agile - Scrum
-
Là 1 SDLC được sử dụng với những dự án phức tạp, cần sự linh hoạt trong vận hành
- Là nền tảng để phục vụ đa lĩnh vực
- 3 giá trị cốt lõi:
- Tính minh bạch (Transparency)
- Tính thanh tra (Inspection)
- Tính thích nghi (Adaptation)
- 4 điều cần nhớ:
- Cấu trúc dự án
- Các cuộc họp
- Cách vận hành
- Công việc của Tester
-
Cấu trúc dự án
-
Customer
- Khách hàng - Client (Business Owner)
- Người dùng (End User)
-
Scrum Team
- PO (Product Owner): Người chịu trách nhiệm dự án
- SM (Scrum Master): Người điều phối dự án
- Tech Architect: Chịu trách nhiệm về kĩ thuật
- BA, DEV, QA (QC), Designer,…
- Giảm tình trạng quan liêu, phân cấp bậc
-
Sprint: Giai đoạn
- 1 dự án Scrum gồm nhiều Sprints
- 1 Sprint trung bình ~ 2 đến 4 tuần
- Có 4 cuộc họp cố định, các cuộc họp có thể fix cứng hoặc linh động
- Để hoàn thiện 1 sprint, phải hoàn thành tất cả công việc trong Sprint đó
-
Meetings: Các cuộc họp
- Sprint Planning: 2 tiếng
Đánh giá và phân chia công việc
- Daily Meeting: 15-20 phút
Mems report công việc, SM đánh giá tiến độ, thông báo thông tin liên quan đến dự án
-
Sprint Review:
- Internal Review (Review nội bộ):
BA và Tester tham gia, thực hiện lại các luồng chính
- Sprint Demo:
Demo cho khách hàng (BA là nhân vật chính)
- Sprint Retrospective:
Đánh giá Sprint vừa rồi qua 3 mặt Good, Bad, Action; SM là người điều phối
- Note: Một số cuộc họp có thể linh động về mặt thời gian
-
Azure DevOps/JIRA
- Là 1 trình quản lý công việc, tài liệu cho SDLC Agile-Scrum
- Nơi quản lý các ticket phải làm
- Để các thành viên trong Scrum quản lý công việc phải làm trong 1 sprint
- SM/PO/BO/Manager có thể quản lý công việc, xem báo cáo
-
Ticket trong Agile
- 1 phần công việc được gọi là 1 ticket
-
Phân loại ticket
- Ticket to (Ticket parent):
Là 1 phần công việc high-level
- Các ticket nhỏ:
Là các phần công việc kĩ thuật cần phải làm
- To do/Open/New:
Tast đã được giao, chưa làm
- In Progress: Task đang làm
- Re-opened/Ready to test: Dành riêng cho Bug
- Done: Ticket hoàn thiện
-
Product Backlog
- Là nơi chứa tất cả các ticket phải làm
- Có cột Itegration Path để biết ticket làm ở sprint nào
-
BA sẽ có buổi Planning với khách hàng để biết khách hàng muốn làm ticket nào ở sprint này.
- Nếu muốn làm thêm => Tạo ticket, đưa vào Product Backlog rồi sắp xếp thời gian làm
-
Trình tự thời gian theo sprint
- BA/PO sẽ tạo các ticket (Các tính năng phải làm), sắp xếp vào Product Backlogs
- BA tổng hợp 1 số ticket phù hợp với Sprint này (Dựa vào Sprint Capacity)
-
BA/SM host buổi Sprint Planning
– Tạo ra Sprint Planning file (đẩy task lên Sprint Backlog: AzureDevOps) & Build Plan
- Planning file - Gồm 2 sheets
- Capacity planning: Khai báo effort làm việc
=> Output ra số giờ làm việc trong 1 sprint
- Estimation: Các ticket sẽ có effort cho từng ticket con
- Note: Cách estimate sẽ dựa vào Story Point của Ticket. Ticket càng to, càng phức tạp thì càng nhiều point
- Build Schedule (Build Plan)
- DEV lead/Tech lead sẽ có lịch build tương ứng
→ Ngày ticket đó phải xong trong sprint
- Vận hành – Có daily meeting mỗi ngày
- Internal Review – Review nội bộ (BA & Tester)
- Sprint Demo – Demo cho khách hàng (BA host)
- Sprint Retrospective
-
Công việc của Tester trong Agile -Scrum
-
Đọc tài liệu
- Tìm các ticket to (parent ticket) được assign cho mình sau buổi planning
- Tìm các ticket gần nhất (theo Build Plan) để xử lý trước
- Đọc tài liệu các ticket
-
Viết Testcase
- Từ tài liệu, áp dụng các kĩ thuật để viết testcase
-
Thực hiện test
- Đợi ticket đó build xong (theo Build Plan)
- Test cuốn chiếu: Test xong → Chuyển sang làm ticket khác
- Log bug / Verify bug (nếu có)
-
Software Requirement
(Tài liệu dự án)
-
SRS (Software requirement specification)
-
Là một tài liệu có mục đích cung cấp mô tả toàn diện về 1 sản phẩm phần mềm sẽ được phát triển. Bao gồm:
- Mục đích của sản phẩm
- Các quy trình kinh doanh chính sẽ được hỗ trợ
- Các tính năng
- Các thông số hiệu suất chính
- Hành vi của sản phẩm
- VD:
https://www.studocu.com/vn/document/hoc-vien-nong-nghiep-viet-nam/thuc-vat-hoc/template-srs-v1/23861959
OR
https://qndev.github.io/resources/SRS.pdf
-
Use case Diagram (Tài liệu dạng sơ đồ)
- Là 1 dạng của Phân tích và thiết kế hướng đối tượng (UML)
- Mô tả về ca/phần quyền sử dụng của hệ thống
- Bản vẽ này sẽ giúp chúng ta biết được ai sử dụng hệ thống, hệ thống có những chức năng gì
- Lập được bản vẽ này bạn sẽ hiểu được yêu cầu của hệ thống cần xây dựng
- VD chi tiết:
https://iviettech.vn/blog/543-ban-ve-use-case-use-case-diagram.html
-
User Story (Câu chuyện người dùng)
- Thường gặp nhất ở các dự án chạy Agile-scrum/Kanban
- Dùng các tool JIRA/AzureDevOps để quản lý các phần tài liệu thành các phần requirement hệ thống nhất có thể: Từ User Story > Ticket Parent > Ticket con (Sub-ticket)
- Trong các ticket User Story (chứa tài liệu chính), Tài liệu được chia nhỏ thành các AC (Acceptance Criteria), có Given – When – Then (Điều kiện của tại liệu)
-
UI/UX
-
UX (User Experience) - Trải nghiệm người dùng
-
Cảm nhận, quy trình, kịch bản khi người dùng khi tương tác với sản phẩm (Mức độ tiện dụng, mức độ dễ sử dụng...)
- Wireframe của các màn hình, kịch bản, sitemap...
-
UI (User Interface) - Giao diện người dùng
-
Giao diện thiết kế giao diện FE của sản phẩm
- File Figma, Sketch, Adobe XD...
-
User Guide
- Tài liệu mô tả các nội dung, chức năng, hướng dẫn sử dụng các tính năng của sản phẩm
(Như 1 quyển tài liệu Hướng dẫn sử dụng sản phẩm)
- VD:
https://vpdt.com.vn/HDSD_MOFFICE_v1.0.pdf
-
BDD (Behaviour Driven Development)
- Chi tiết:
https://viblo.asia/p/behaviour-driven-development-bdd-la-gi-lam-the-nao-de-su-dung-bdd-L4x5xNA1ZBM
-
FRS (Functional Requirement Specification)
- là tài liệu chi tiết để xây dựng đầy đủ các tiểu tiết có trong yêu cầu chức năng của dự án
- Chi tiết:
https://www.facebook.com/groups/vnbanet/permalink/1369698447114527/
- VD:
https://drive.google.com/drive/folders/1xZn2uR0YiRFIPHLUKL6sh0v0zfln_zEL?fbclid=IwAR19-sn974mnPPywPddmra0VeLa8x09bSHfGvFWmi99GZqDR9nRUCQAr8eA
-
Web Element
- Dropdown list: danh sách xổ xuống
- Textbox/Input fields: Khung nhập chữ, ô chữ
- Submit form/Submit button
- Checkbox: Hộp tich – Dùng để tích vào các trường dữ liệu
- Radio button: Chỉ chọn được 1 trường dữ liệu
- Search bar/Search box: Khung tìm kiếm
- Navigation/Navbar: Thanh điều hướng
- Filter: Lọc
- Hyperlink: Link kết nối
- Error Message: Thông báo lỗi
- Toast Message/Pop Up Message: Thông báo thành công
-
Element Action
- Click element/Double click + on: Nhấp chuột
- Mouse over/hover + on: Di chuột qua – Hiển thị tooltip + Hyperlink
- Input/Enter text: Nhập chữ
- Verify/Check: Kiểm tra
- Display: Hiển thị
- Empty, Blank, Highlight,…
-
Testcase
(Kịch bản kiểm thử)
-
Khái niệm
- Là tập hợp thông số:
- Đầu vào kiểm thử
- Điều kiện thực thi
- Kết quả mong muốn
- Mục đích: kiểm thử cần chạy để lấy thông tin.
VD: chương trình sẽ vượt qua bài kiểm thử hay không
- Là nền tảng của Đảm bảo chất lượng trong khi chúng được phát triển
để Xác minh chất lượng, hành vi của sản phẩm
-
8 Trường cần có của Testcase
- ID
(Mã định danh TC)
- Description
(Mô tả testcase)
-
Priority
(Mức độ ưu tiên)
- Low
Case về giao diện/ Đa trình duyệt (cross-browser)
- Medium
Case luồng chính/Positive
- High
Case luỗng gãy/Những luồng user hay thao tác/Negative/Luồng phụ
- Precondition
(Tiền điều kiện)
- Steps
(Các bước thực hiện testcase)
- Expected Result
(Kết quả mong muốn)
-
Actual Result
(Kết quả thực tế)
- Pass: Hoàn thành
- Fail: Lỗi
- Block: Chưa test
- Not test: Không test
- Notes
(Ghi chú/Lưu ý)
-
Review Testcase
- Nhằm kiểm tra chéo về hiệu quả TC, bao phủ chuẩn hơn, cover được nhiều trường hợp có thể xảy ra
- Review theo chuẩn trình tự tiếp cận TC, chú ý về câu từ ngữ pháp
- Có thể Review trực tiếp trên file Excel chứa TC, highlight lại bằng mực đỏ/add comment, sau khi review nhắn trực tiếp cho Tester kia
-
Các Phương pháp/ Kỹ thuật viết Testcase
- Mục đích:
- Để viết testcase hiệu quả nhất
- Tránh lãng phí thời gian mà vẫn có hiệu quả kiểm thử tốt nhất
- Cover tốt các trường hợp có thể xảy ra
- Dựa vào tài liệu
(Requirement Based)
- Đoán lỗi
(Error Guessing)
- Phân tích giá trị biên
(Boundary Value Analysis - BVA)
- Phân vùng tương đương
(Equivalence Partitioning)
- Bảng quyết định
(Decision Table)
- Có thể áp dụng kết hợp lẫn nhau các kĩ thuật → Để bộ testcase cover được tốt nhất
-
Cách tiếp cận viết Testcase
-
Đọc, phân tích tài liệu
-
Lên Test Design
- UI/Wording
- Navigate
- Validate
- Logic
- Viết các case về giao diện + Các case về cross browser – Priority Low
- Viết các case luồng chính/happy case - Priority Medium
- Viết các case luồng phụ/negative (Áp dụng các kĩ thuật viết TC) – Priority High
-
Bug = Defect
-
Khái niệm
- Là lỗi của hệ thống, xảy ra trên FE/BE
- Xuất hiện khi developer xử lý một dòng hoặc một đoạn code bị lỗi → kết quả đưa ra khác với yêu cầu của khách hàng
- Được tìm thấy bởi Tester trong team phát triển sản phẩm
-
Defect Leakage
- Cũng là Bug nhưng được tìm thấy bởi bên ngoài team phát triển (trong công ty, phía KH, end-user...)
- Khá nghiêm trọng, có thể để lại feedback không tốt cho đội phát triển
-
Log Bug
- Hành động Tester ghi chú lại Bug, tổng hợp vào Excel/JIRA/Azure, mục đích để Dev biết lỗi sai ở đâu
-
11 trường cần có của Bug
- ID
(Mã định danh Bug)
- Overview
(Mô tả tổng quan lỗi = Description)
-
Severity
Mức độ nghiêm trọng (Tùy cảm quan của Tester)
- 1. Front-end (UI): Bug trên giao diện → Minor/Medium
- 2. Back-end: Bug trong cơ sở dữ liệu/API/Logic code sai… → High/Critical
- 3. Documentation: Bug do tài liệu sai → BA
- 4. UX (User experiences): Bug do trải nghiệm người dùng chưa tốt
- 5. Performance: Bug hiệu năng (Trang lag, load lâu hơn 3s,…) → High/Critical
- 6. Security: Bug bảo mật → High/Critical
- Precondition
(Tiền điều kiện)
- Steps
(Các bước tái hiện Bug)
- Expected Result
(Kết quả mong muốn)
- Actual Result
(Kết quả thực tế xảy ra khi test)
-
Enviroment
(Browser tester dùng khi test)
- Browser
- Hệ điều hành
- Dev Assign
(Dev nào fix Bug này thì cho tên vào)
-
Bug Status
- New (Tester)
- Open (Dev)
- In progress (Dev)
- Ready to test (Dev)
- In test (Tester)
- Re-open (Dev)
- Close bug
- Evidence
(Hình ảnh/Video tái hiện Bug)
- Giống Testcase
- Vòng đời của Bug
-
4 giai đoạn trong Testing
-
Unit Test
- Kiểm tra code (Dev thực hiện)
-
Intergration Test
- Test tích hợp (2 hoặc nhiều module)
-
System Test (E2E)
- Test lại full các luồng của hệ thống – Happy case
-
UAT
(User Acceptance Testing)
- Alpha Testing: Tets tại nơi sản xuất phần mềm, gọi là test nội bộ
- Beta Testing: Test bởi người dùng ngoài, thực hiện trước khi release chính thức
-
Các bản build (môi trường)
-
Local
- DEV code/thực hiện unit test trên máy cá nhân (Local)
- Sau khi review ok (GitHub) thì đẩy code lên Site Test
- Mỗi ticket được đẩy lên là 1 bảng build
-
Site Test
- Team chủ yếu làm việc trên Site Test – web nội bộ
- Demo cho khách hàng trên Site Test
- Cuối mỗi sprint, Tech Lead sẽ đẩy code (deploy) lên môi trường ổn định (Staging Site)
-
Staging Site
- Môi trường khách hàng thực hiện test
- Nếu có defect leakage sẽ báo cho team sửa
-
Production
- Môi trường thực tế - nơi khách hàng/end-user sử dụng phần mềm
-
Smoke Test/ Smoke Testcase
(Phân biệt với Sanity Test)
- Áp dụng chủ yếu cho Agile/Scrum
-
Smoke Testcase = Các luồng chính (Priority = Medium)
- Là các testcase cover được hết logic chính của tài liệu
- Thường tỉ lệ Smoke TC là 15%/Tổng số TC của ticket đó
- Mục đích của Smoke TC = Kiểm tra độ ổn định của bản build
- Khi có 1 bản build mới lên (Local – Site test), Tester sẽ thực hiện Smoke test (Execute với các smoke TC của ticket) trước khi test full các TC
- Nếu Smoke TC fail → Trả ticket cho DEV, không test nữa
-
Retest/ Regression Test
- Retest: Kiểm tra lại bug bị Re-open (Sau khi Dev đã fix)
-
Regression Test: Test hồi quy
- Thường khi dự án chạy lâu, nhiều tính năng ảnh hưởng lẫn nhau → Hay xảy ra lỗi → Regression Test
- Tester thường sẽ thực hiện lại 1 số smoke TC của các ticket để kiểm tra lại luồng chính. Sẽ có 1 bộ TC regression test cho tester thực hiện execute
- Ứng dụng trong Agile/Scrum: Thường mỗi sprint sẽ có riêng 1 ticket để các tester thực hiện Regression Test
- Fact: Công việc regression test thường do Automation Tester làm, Manual Tester cũng có thể làm khi được chia task