+ Lựa chọn mô hình quản lý dự án Scrum
Cùng với sự phát triển bùng phát của Internet thì ứng dụng web cũng trở nên phổ biến, từ đó kiểm thử ứng dụng web đã đƣợc yêu cầu từ nhiều tổ chức, tập đoàn công nghệ. Để đạt đƣợc hiệu quả cao trong công nghệ sản xuất ứng dụng web, nhiều công ty đã nghĩ đến việc áp dụng mô hình linh hoạt Agile và một mô hình điển hình của phát triển linh hoạt là mô hình Scrum. Vì nhiều ƣu điểm phù hợp cho phát triển ứng dụng web, trong đó:
+ Tiếp cận với khách hàng sớm để sớm có đƣợc những phản hồi từ phía khách hàng, hiểu đƣợc khách hàng, …Vì những yêu cầu cho một trang web thƣờng không rõ ràng, và rất khó để hiểu đƣợc khách hàng muốn gì. Đôi khi có những phần mềm đƣợc phát triển tƣởng trừng nhƣ là tốt, nhƣng đối với khách hàng nó vẫn không nhƣ họ mong đợi.
+ Dễ dàng thay đổi sản phẩm khi có yêu cầu mới, vì sản phẩm đƣợc phát triển nhanh và đƣợc khách hàng kiểm tra sớm, nếu có sự thay đổi thì sẽ tiếp tục phát triển, cập nhật thay đổi liên tục. Chính vì vậy nó sẽ không mất nhiều chi phí để sửa chữa nhƣ mô hình thác nƣớc, mô hình chữ V.
Lựa chọn công cụ quản lý dự án, quản lý kiểm thử Jira
Hiện nay có rất nhiều công cụ hỗ trợ quản lý dự án, quản lý kiểm thử ra đời nhƣ Jira, Redmine, …Để quản lý các dự án đƣợc phát triển theo mô hình Scrum thì không thể không nói tới một công cụ khá mạnh đó là Jira.
Jira có thể quản lý các nhiệm vụ của một dự án theo các chức năng phát triển trong một sprint khá linh hoạt và đƣa ra những thống kê dƣới dạng bảng, đồ thị và lƣợc đồ một cách linh hoạt. Vì vậy, chúng ta có thể dễ dàng biết đƣợc tình hình dự án, trạng thái công việc của dự án, sớm đƣa ra đƣợc những quyết định và những cải tiến cho dự án.
Lựa chọn công cụ kiểm thử tự động chức năng của trang web – Selenium
Công cụ Selenium là một trong những công cụ khá phổ biến về kiểm thử tự động cho các ứng dụng web. Rất phù hợp với mô hình Scrum, vì khi dự án đƣợc phát triển theo mỗi sprint, thì việc kiểm thử ở các sprint sau sẽ tăng lên đáng kể do phải kiểm thử cả các chức năng đã phát triển ở các sprint trƣớc. Do đó nếu dự án là lớn, phát triển theo nhiều sprint mà không có kiểm thử tự động thì sẽ rất mất thời gian và nỗ lực vào việc kiểm thử. Chính vì thế, dự án muốn phát triển tốt, cần lựa chọn cho mình một công cụ, với nhƣng ƣu điểm của Selenium đã đƣợc giới thiệu thì lựa chọn Selenium sẽ là một giải pháp tốt.
- Lựa chọn công cụ kiểm thử hiệu năng của trang web – Apache Jmeter
Trong kiểm thử ứng dụng web, thì kiểm thử hiệu năng cũng rất quan trọng. Bất kỳ một trang web nào cũng có một giới hạn số lƣợng ngƣời dùng cùng thực hiện một hành động nào đó. Nếu vƣợt qua số lƣợng đó, trang web không đáp ứng đƣợc những yêu cầu của ngƣời dùng, và đôi khi nó còn tạo ra lỗ hổng khiến hệ thống mất những thông tin quan trọng hoặc ngƣời dùng có thể thực hiện đƣợc những hành động bất hợp pháp. Nhƣ đã đƣợc giới thiệu về công cụ Apache Jmeter, một công cụ rất tiềm năng về kiểm thử hiệu năng cho ứng dụng web.
3.2. MÔ HÌNH SCRUM VÀ CÔNG CỤ QUẢN LÝ DỰ ÁN JIRA
Jira có thể quản lý tất cả các thành viên của dự án
Ngƣời quản trị dự án có thể tạo ra các tài khoản sử dụng Jira và gán vai trò của ngƣời đó trong các dự án. Jira hỗ trợ 3 vai trò
+ Administrator: Thƣờng đƣợc gán cho những ngƣời có nhiệm vụ quản lý dự án + Developer: Thƣờng đƣợc gán cho những lập trình viên, kiểm thử viên, … những ngƣời có nhiệm vụ phát triển dự án
Hình 3.2. Màn hình quản lý người dùng
Jira có thể quản lý tất cả các dự án
Ngƣời quản trị hệ thống có thể tạo ra các dự án và quản lý nó trong màn hình quản lý dự án.
Hình 3.3. Hiển thị tất cả các dự án
Tùy tính chất của dự án mà chúng ta chọn các loại dự án khác nhau nhƣ phía dƣới. Thông thƣờng “Project Management” đƣợc chọn.
+ Simple Issue Tracking
+ Software Development
+ Agile Scrum
+ Jira Classic
Hình 3.4. Lựa chọn loại dự án
Jira có thể quản lý các hạng mục của Product backlog
Trong mô hình Scrum, Product backlog là danh sách các yêu cầu cần phải làm để hoàn thành sản phẩm. Các hạng mục trong Product backlog sẻ đƣợc quản lý trên Jira dƣới dạng "Components".
Hình 3.6. Màn hình quản lý các “Component” của dự án
- Jira có thể quản lý các hạng mục của Sprint backlog
Trong mô hình Scrum, dự án sẽ đƣợc phát triển theo từng giai đoạn, mỗi giai đoạn đƣợc gọi là một Sprint. Thông thƣờng, mỗi Sprint kéo dài khoảng 2 tuần đến 1 tháng. Jira sẽ quản lý các Sprint trong mô hình Scrum dƣới dạng"Version". Tạo một Sprint chúng ta phải chọn một khoảng thời gian “Start date” và “Release date” chính là khoảng thời gian bắt đầu và kết thúc của một Sprint.
Hình 3.7. Màn hình quản lý các “Version” của dự án
Trong mô hình Scrum, Sprint backlog hiện thực hóa môt cách chi tiêt các mục tiêu lấy từ các hạng mục trong Product backlog sao cho có thể thấy đƣợc những thay đổi về tiến độ hàng ngày. Các công việc trong Sprint sẽ đƣợc quản lý trên Jira dƣới
ta sẽ tạo nó dƣới dạng "Task”. Những chức năng chi tiết hơn của sprint chúng ta sẽ chọn là "Sub-task"
Hình 3.8. Ví dụ về một Sprint backlog cơ bản
Khi tạo một yêu cầu, nhiệm vụ, ... trong một Sprint trên Jira chúng ta phải chọn: Project: Dự án mà chức năng này thuộc nó
Issue Type: Loại của chức năng chúng ta có thể tự thiết lập nó trong Jira nhƣ yêu cầu mới, sửa, cải thiện, ....
Summary: Tên chức năng
Priority: Mức độ ƣu tiên của chức năng
Due Date: Ngày hoàn thành chức năng
Components: Nó thuộc hạng mục nào của Product Backlog
Affects Version/s: Nó thuộc các Sprint nào
Fix Version/s: Nó cần đƣợc làm ở các Sprint nào
Assignee: Ngƣời đƣợc giao nhiệm vụ này
Reporter: Ngƣời tạo ra nhiệm vụ này
Evironment: Môi trƣờng thực hiện nhiệm vụ này
Start date: Ngày bắt đầu thực hiện chức năng
End date: Ngày hoàn thiện chức năng
Hình 3.9. Tạo một “Task” trên Jira
Màn hình chi tiết của một Task (đại diện cho một chức năng lớn) hiển thị các thông tin của “Task” và liệt kê tất cả các “Sub-task” (đại diện cho một chức năng nhỏ) mà nó thuộc vào.
Hình 3.11. Hiển thị thông tin của một “Task”
Có thể quản lý tất cả các Task và Sub-task đƣợc tao ra trong màn hình “All issues”
Jira hỗ trợ rất mạnh các màn hình báo cáo
- Chúng ta có quan sát lịch làm việc (schedule) tổng thể của dự án bao gồm những việc cần phải đƣợc làm trong dự án là gì? và đƣợc làm khi nào? thông qua lƣợc đồ WBS Gantt
Hình 3.13. Lược đồ WBS Gantt hiển thị lịch làm việc của dự án
- "Srum board" giúp quan sát công việc của các thành viên hàng ngày, hàng tuần. Với các trạng thái:
+ To Do: Những việc cần làm
+ Inprogress: Những việc đang đƣợc làm
+ Resolve: Những việc đã đƣợc làm xong và cần đƣợc xác nhận lại
+ Done: Những việc đã làm xong và đã đƣợc xác nhận
o Một "Scrum board" đƣợc tạo có thể nhìn thấy nhiệm vụ của từng thành viên trong các "Component" hoặc "Version" khác nhau bằng cách sử dụng tính năng "Filter"
Hình 3.14. Màn hình “Scrum board” hiển thị công việc của các thành viên
- "Dashboard" là màn hình hiển thị tất cả những báo cáo dƣới dạng bảng, đồ thị, ... mà bạn chọn. Để hiện thị những báo cáo này ngƣời dùng phải tạo "Gadget" và chọn loại “Gadget” để hiển thị trên màn hình "Dashboard", và để hiển thị những thông tin cần thiết, ngƣời dùng có thể cấu hình tùy ý bằng cách sử dụng các bộ lọc. Ngƣời dùng có thể tạo ra có bộ lọc nhƣ lọc theo dự án, chức năng, sprint, nhiệm vụ, thành viên, thời gian, … Chúng ta chọn kiểu hiển thị là các “Gadget”, mỗi loại "Gadget" mang một ý nghĩa khác nhau, tùy vào từng vai trò của các thành viên trong dự án mà chọn loại "Gadget" cho phù hợp. Ví dụ nhƣ:
Issue Statistics: Hiển thị thống kê các vấn đề đƣợc trả về từ một bộ lọc (Filter) và đƣợc phân chia theo lĩnh vực cụ thể nhƣ tổng số lỗi gây ra bởi mỗi lập trình viên, tổng số lỗi đƣợc tìm thấy của mỗi kiểm thử viên, Số lỗi xảy ra theo loại...
Pie Chart: Hiên thị thống kê các vấn đề của một dự án hoặc trả về từ bộ lọc (Filter) và cũng đƣợc nhóm theo bất kỳ loại thống kê nào nhƣ Issue Statistics
Two Dimensional Filter Statistics: Tiện ích thống kê hai chiều dựa trên dữ liệu trả về từ một bộ lọc (Filter)
Hình 3.15. Chọn loại “Gadget” (lược đồ, bảng, đồ thị, ….)
Hình 3.17. Hiển thị các báo cáo trên màn hình Dashboard (2)
Kết luận: Sử dụng công cụ quản lý dự án Jira, chúng ta có thể quản lý đƣợc tất cả các
dự án đƣợc phát triển, quản lý đƣợc tất cả các thành viên của một tổ chức. Quản lý đƣợc công việc của mỗi thành viên/nhóm, trạng thái công việc của mỗi thành viên/nhóm và tiến độ công việc của họ hàng ngày, hàng tuần, hoặc theo một lịch làm việc cụ thể trong các dự án khác nhau. Jira cho thấy sự phù hợp của nó với mô hình Scrum từ việc quản lý các sprint, các hạng mục trong Sprint backlog và Product backlog. Hơn thế nữa, Jira hỗ trợ các màn hình theo dõi Schedule nhƣ WBS Gantt, Scrum board rất hữu ích. Và đặc biệt là màn hình hiển thị các báo cáo “Dashboard” rất dễ nhìn và dễ dàng phân tích những thông tin hữu ích, cần thiết để cung cấp hỗ trợ cho việc quản lý dự án, quản lý công việc trở nên dễ dàng hơn.
3.3. MỘT SỐ CÔNG CỤ HỖ TRỢ KIỂM THỬ TỰ ĐỘNG
3.3.1. Selenium
3.3.1.1. Giới thiệu
Sử dụng công cụ Selenium để thực hiện kiểm thử chức năng của trang web:
http://bagasse.vn/
Do giới hạn của luận văn, nên luận văn sẽ chỉ đề cập đến việc kiểm thử cho 3 chức năng của trang web này là: đăng ký ngƣời dùng, đăng nhập hệ thống và đăng xuất. Và đề tài cũng chỉ chọn 1 ca kiểm thử cho mỗi chức năng nhƣ sau: Ca kiểm thử 1: Ngƣời dùng đăng ký tài khoản ngƣời dùng thành công
Sau khi hoàn thành việc tạo ra các ca kiểm thử, Selenium sẽ lƣu lại tất cả các ca kiểm thử này dƣới dạng một bộ kiểm thử gọi là test-suite.
Tiếp theo sẽ tiến hành thực hiện kiểm thử bằng cách chạy các bộ kiểm thử (test suite) đã tạo. Luận văn sẽ demo hai trƣờng hợp: kết quả kiểm thử thành công và kết quả kiểm thử thất bại. Và đánh giá kết quả kiểm thử.
3.3.1.2. Tạo kịch bản kiểm thử
Sử dụng chức năng [Record] trên thanh công cụ để ghi lại các bƣớc của một ca kiểm thử
Sau khi đã có các bƣớc của một ca kiểm thử, cần xác nhận kết quả đầu ra mong đợi sau khi các bƣớc kiểm thử đƣợc thực hiện
Selenium hỗ trợ các câu lệnh xác nhận kết quả đầu ra: + verifyTitle/assertTitle + verifyTextPresent + verifyElementPresent + verifyText + verifyTable … Chức năng đăng ký
Khi chƣa có tài khoản hệ thống, ngƣời dùng nhấn vào nút [Đăng ký]. Màn hình sẽ hiển thị form đăng ký, ngƣời dùng nhập các thông tin nhƣ hình 3.18. Sau khi đăng nhập ngƣời dùng nhấn vào nút [Đăng ký] trong form để hoàn tất thủ tục đăng ký ngƣời dùng. Sau khi đăng ký thành công, hệ thống tự động đăng nhập và chuyển đến trang chủ (hình 3.10) với trạng thái tài khoản ngƣời dùng đã đƣợc đăng nhập. Cần tìm đặc điểm khi hệ thống đƣợc đăng nhập để xác nhận ca kiểm thử của chức năng đăng ký. Một đặc điểm khi hệ thống đăng nhập thành công là “Họ và tên” của ngƣời đăng nhập đƣợc hiển thị trên góc của trang web.
Hình 3.18. Form “Đăng ký người dùng”
Kết hợp chức năng record và câu lệnh xác nhận “verify text” của
Selenium, ta xây dựng đƣợc một ca kiểm thử cho chức năng đăng ký ngƣời dùng nhƣ sau:
Command Target Value
clickAndWait link=Đăng ký type id=ctl00_ContentPlaceHolder1_txt RegUserName Cao Hang type id=ctl00_ContentPlaceHolder1_txt RegPassword 123456 type 123456 type id=ctl00_ContentPlaceHolder1_txt Name
Cao Thi Hang type id=ctl00_ContentPlaceHolder1_txt
Address1
310 Nghi Tam - Ha Noi type id=ctl00_ContentPlaceHolder1_txt 976381935
type id=ctl00_ContentPlaceHolder1_txt Email
hangctbk@gmail.com clickAndWait id=ctl00_ContentPlaceHolder1_btn
Registry
verifyText css=p Cao Thi Hang | Đăng xuất |
Bảng 3.1. Ca kiểm thử đăng ký người dùng thành công bằng selenium
Chức năng đăng nhập
Ngƣời dùng nhấn nút [Đăng nhập] để hiển thị form đăng nhập. Ngƣời dùng nhập các thông tin nhƣ hình 3.19 sau khi tài khoản này đã đƣợc đăng ký thành công. Sau đó nhấn vào nút [Đăng nhập]. Ta cũng thu đƣợc ca kiểm thử cho chức năng đăng nhập.
Hình 3.19. Form “Đăng nhập hệ thống”
Kết hợp chức năng record và câu lệnh xác nhận của Selenium ta thu đƣợc ca kiểm thử cho chức năng đăng nhập nhƣ sau:
Command Target Value
open /trang-chu.aspx clickAndWait link=Đăng nhập type id=ctl00_ContentPlaceHolder1_txt UserName Cao Hang type id=ctl00_ContentPlaceHolder1_txt 123456
clickAndWai id=ctl00_ContentPlaceHolder1_bt nLogin
verifyText css=p Cao Thi Hang | Đăng xuất |
Bảng 3.2. Ca kiểm thử người dùng đăng nhập thành công bằng selenium
Chức năng đăng xuất
Kiểm thử chức năng đăng xuất: Khi hệ thống ở trạng thái đăng nhập thành công. Ngƣời dùng có thể nhấn vào nút [Đăng xuất] để đăng xuất hệ thống.
Kết hợp chức năng record và câu lệnh xác nhận “assertElementPresent” của Selenium ta thu đƣợc ca kiểm thử cho chức năng đăng xuất nhƣ sau:
Command Target Value
open /trang-chu.aspx clickAndWait link=Đăng xuất assertElementPresent link=Đăng nhập
Bảng 3.3. Ca kiểm thử người dùng đằng xuất thành công bằng selenium 3.3.1.3. Thực hiện kiểm thử
Lƣu tất cả các ca kiểm thử đã tạo cho các chức năng đăng ký ngƣời dùng, đăng nhập và đăng xuất thành bộ kiểm thử “test-suite”. Bấm vào nút “Run All” trên thanh công cụ để thực hiện kiểm thử cho bộ kiểm thử này.
Thực hiện kiểm thử thành công
Kết thúc quá trình kiểm thử, nhƣ hình 3.20 tất cả các ca kiểm thử đƣợc thực hiện, và tất cả các ca kiểm thử đều vƣợt qua kiểm thử. Tức là, tổng số ca kiểm thử thành công “pass” = 3, tổng số ca kiểm thử thất bại “fail” = 0. Tất cả các ca kiểm thử đều có màu xanh
Hình 3.20. Thực hiện kiểm thử thành công
Thực hiện kiểm thử thất bại
Để có một ca kiểm thử thất bại từ bộ kiểm thử đã tạo, thay đổi một nội dung của nó. Ví du: thay đổi giá trị cần xác nhận trong ca kiểm thử của chức năng đăng nhập từ “Cao Thi Hang | Đăng xuất |” thành “Cao Thi Hang |”
Kết thúc quá trình kiểm thử, nhƣ hình 3.21 tất cả các ca kiểm thử đƣợc thực hiện, và tồn tại ca kiểm thử không vƣợt qua kiểm thử. Với tổng số ca kiểm thử thành công “pass” = 2, tổng số ca kiểm thử thất bại “fail” = 1. Hai ca kiểm thử vƣợt qua có màu xanh, ca kiểm thử thất bại có màu đỏ.
Để có thể biết đƣợc nguyên nhân lỗi của ca kiểm thử thất bại, chúng ta có thể xem trong Log tại dòng có chữ màu đỏ.
Hình 3.21. Thực hiện ca kiểm thử thất bại 3.3.1.4. Kết luận 3.3.1.4. Kết luận
Selenium IDE giúp chúng ta có thể tạo ra những kịch bản kiểm thử một cách nhanh chóng bằng cách sử dụng chức năng Record của Selenium. Sử dụng Selenium