KIỂM THỬ PHẦN MỀM ĐỀ TÀI NGHIÊN CỨU KIỂM THỬ TỰ ĐỘNG THEO AGILE CHO DỊCH VỤ WEB, Agile là một phương pháp phát triển phần mềm linh hoạt, là một hướng tiếp cận cụ thể cho việc quản lý dự án phần mềm. Nó gồm một quá trình làm việc tương tác và tích hợp để có thể đưa sản phẩm đến tay người dùng càng nhanh càng tốt.
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
_ _
BÁO CÁO THỰC NGHIỆM HỌC PHẦN
KIỂM THỬ PHẦN MỀM
ĐỀ TÀI NGHIÊN CỨU KIỂM THỬ TỰ ĐỘNG THEO AGILE CHO DỊCH VỤ
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
_ _
BÁO CÁO THỰC NGHIỆM HỌC PHẦN:
KIỂM THỬ PHẦN MỀM
ĐỀ TÀI NGHIÊN CỨU KIỂM THỬ TỰ ĐỘNG THEO AGILE CHO DỊCH VỤ
Trang 3LỜI CẢM ƠNLời đầu tiên, nhóm 10 xin gửi lời cảm ơn chân thành tới thầy Hoàng Quang Huy.
Trong quá trình học tập và thực hiện đề tài này, chúng em đã nhận được sự quan tâmgiúp đỡ, hướng dẫn tận tình, tâm huyết của thầy Những gì chúng em nhận được khôngchỉ dừng lại ở kiến thức môn học mà nhiều hơn thế đó là những lời khuyên, chia sẻthực tế từ thầy Chính nhờ phương pháp dạy học của thầy mà chúng em có cơ hộikhám phá và phát huy khả năng của bản thân Những buổi thực hành của thầy chính là
cơ hội tuyệt vời giúp chúng em rèn luyện sự tự tin, cẩn thận, kỹ năng giao tiếp, làmviệc nhóm Đây cũng chính là hành trang quan trọng giúp chúng em tự tin bước chânvào môi trường làm việc thực tế
Để hoàn thành được đề tài này, nhóm chúng em đã cùng nhau nghiên cứu, thảo luận,
áp dụng những kiến thức được học trên lớp cùng với các nguồn tài liệu trên Internet và
cả những trải nghiệm của bản thân Chúng em rất mong sẽ nhận được những lời nhậnxét, góp ý từ thầy cô và bạn đọc để đề tài này có thể hoàn thiện hơn nữa
Một lần nữa, chúng em xin chân thành cảm ơn!
Nhóm sinh viên thực hiện Nhóm 10
Trang 4MỤC LỤC
Chương I: Cơ sở lý thuyết 1
1 Khái Niệm 1
2 Lịch Sử Hình Thành 1
a Cá nhân và sự tương tác hơn là quy trình và công cụ 1
b Phần mềm chạy tốt hơn là tài liệu đầy đủ 1
c Cộng tác với khách hàng hơn là đàm phán hợp đồng 2
d Phản hồi với sự thay đổi hơn là bám theo kế hoạch 2
3 Nguyên Tắc Áp Dụng Trong Mô Hinh Agile 2
a Thử nghiệm giúp dự án nhanh chóng được bàn giao hơn 2
b Kiểm thử không chỉ là một giai đoạn của dự án 3
c Cá nhân và sự tương hỗ quan trọng hơn quy trình 3
d Rút ngắn vòng lặp phản hồi 3
e Thỏa mãn mong muốn của khách hàng 3
f Giữ những dòng code được rõ ràng 4
g Giản lược tài liệu kiểm thử 4
h Chưa thể hoàn thành khi chưa qua giai đoạn kiểm thử 4
k Test-Last & Test-Driven 4
4 Các giai đoạn kiểm thử phần mềm tương ứng với các giai đoạn phát triển phần mềm trong mô hình Agile 4
a Tiền-Phân-đoạn (Pre-iteration): 4
b Xác minh Yêu cầu 4
c Các hoạt động Đảm bảo chất lượng: 6
5 Lợi Ích khi xây dựng ứng dụng web bằng phương pháp Agile 6
a Sự linh hoạt 6
b Nâng cao khả năng lên kế hoạch thực tiễn cho dự án 6
c Tăng tốc độ hoàn tất dự án 6
d Phản hồi liên tục của user 7
e Tạo động lực cho team dự án 7
g Tăng sự gắn bó trong mối quan hệ làm việc 7
h Giảm thiểu chi phí 7
k Chất lượng sản phẩm tốt hơn 7
j Hạn chế rủi ro 7
6 Scrum là gì? 7
a Scrum có ích gì cho phát triển phầm mềm hiện nay 8
b Ba giá trị cốt lõi của Scrum 8
c Lợi ích mà Scrum mang lại 8
Trang 5d Các khái niệm cơ bản Scrum 9
CHƯƠNG II KẾT QUẢ THỰC NGHIỆM 13
2.1 Website kiểm thử 13
2.2 Yêu cầu đặc tả của website 14
2.2.1 Yêu cầu chức năng 14
2.2.2 Yêu cầu hiệu năng 14
2.3 Công cụ kiểm thử Jmeter 14
2.4 Tiến hành kiểm thử trên website 16
2.5 Tiến hành kiểm thử trên công cụ Jmeter 18
Chương III: Bài Học Kinh Nghiệm 22
3.1 Bài học kinh nghiệm 22
3.2 Đánh giá kết quả 22
KẾT LUẬN 23
TÀI LIỆU THAM KHẢO 24
Trang 6Chương I: Cơ sở lý thuyết
1 Khái Niệm
- Agile là một phương pháp phát triển phần mềm linh hoạt, là một hướng tiếp cận
cụ thể cho việc quản lý dự án phần mềm Nó gồm một quá trình làm việc tươngtác và tích hợp để có thể đưa sản phẩm đến tay người dùng càng nhanh càng tốt
- Những phương pháp phát triển phần mềm theo cách truyền thống ngày càngbộc lộ nhiều nhược điểm và tỷ lệ các dự án thất bại cao trong thời kỳ bùng phátcủa ngành công nghệ Nhận ra vấn đề đó, một số cá nhân và công ty riêng lẻ đãđưa ra các phương pháp phát triển phần mềm hiện đại hơn và khác nhau đểthích ứng với tình hình mới
- Những phương thức phát triển phần mềm này giúp phần nào giải quyết đượcmột số vấn đề nhưng lại phát sinh vấn đề khác về sự cộng tác, kỹ thuật, công
cụ, hướng phát triển, chia sẻ …
2 Lịch Sử Hình Thành
Vào năm 2001, bản tuyên ngôn Agile (Agile Manifesto) đã được thống nhất
và ra đời bởi một nhóm người có uy tính trong phát triển phần mềm:
- Individuals and interactions over processes and tools: Cá nhân và sự tương
tác hơn là quy trình và công cụ
- Working software over comprehensive documentation: Phần mềm chạy tốt
hơn là tài liệu đầy đủ
- Customer collaboration over contract negotiation: Cộng tác với khách hàng
hơn là đàm phán hợp đồng
- Responding to change over following a plan: Phản hồi với sự thay đổi hơn là
bám theo kế hoạch
a Cá nhân và sự tương tác hơn là quy trình và công cụ
- Đặt trọng tâm vào con người và sự tương hỗ giữa những thành viên trong team.Nếu dự án có những thành viên có năng lực, chịu làm việc cùng nhau thì sẽmang đến thành công cho dự án
- Quy trình là các thủ tục cần thiết để phát triển dự án như thiết kế, sau đó đến
lập trình, rồi kiểm tra QA/QC Hay để đưa ra một chức năng nào đó cần phải có
sự đồng ý của bộ phận QA/QC … Quy trình này do mỗi công ty quy định vàbắt buộc các nhân viên khi tham gia vào dự án phải tuân thủ
- Công cụ là phần mềm được sử dụng trong dự án như : Phần mềm quản lý công
việc, phần mềm quản lý source code, phần mềm quản lý lỗi… Có rất nhiềucông cụ được sử dụng để hỗ trợ một tổ chức vận hành
b Phần mềm chạy tốt hơn là tài liệu đầy đủ
- Trong một số quy trình phát triển phần mềm, việc tạo ra và cập nhật các tài liệu
về sản phẩm là bắt buộc Nhóm lập trình viên không thể hoặc không đồng ý tiếnhành công việc nếu không có tài liệu đặc tả về yêu cầu, thiết kế hệ thống
1
Trang 7- Nhóm kiểm thử thì yêu cầu tài liệu về sản phẩm để có thể viết trường hợp kiểmthử và kiểm thử được Nhóm QA đòi tất cả các tài liệu phải được viết trước khisản phẩm được giao cho khách hàng nếu không thì không đủ điều kiện, chuẩn
và cần gì để có thể tư vấn và điều chỉnh thay vì chỉ dựa vào những điều đã quyđịnh trong hợp đồng
- Trao đổi và thảo luận với khách hàng về sự cần thiết có hay không của mộtchức năng trong sản phẩm, từ đó quyết định là có nên làm hay không Tất nhiên
để thuyết phục khách hàng thì cần có số liệu nghiên cứu cụ thể chẳng hạn
d Phản hồi với sự thay đổi hơn là bám theo kế hoạch
- Có một điểm chung là hầu hết những dự án đều có sự thay đổi điều chỉnh khitriển khai Sự thay đổi đó có thể là thay đổi về requirements, thay đổi techstack, thay đổi nhân sự, thay đổi deadline, thay đổi phương thức làm việc…mặc dù kế hoạch đã được định ra rõ ràng từ đầu
- Agile không khuyến khích cho sự thay đổi nhưng khuyến khích chúng ta tậpthích nghi với thay đổi
- Một trong các nguyên tắc cơ bản của agile là “phần mềm chạy tốt chính làthước đo của tiến độ” Nguyên tắc này giúp nhóm dám loại bỏ đi các công việc
dư thừa không trực tiếp mang lại giá trị cho sản phẩm
- Để vận hành được cơ chế “làm việc dựa trên giá trị”, nhóm agile thường làmviệc trực tiếp và thường xuyên với khách hàng, cộng tác trực tiếp với họ để biết
yêu cầu nào có độ ưu tiên cao hơn, mang lại giá trị hơn sớm nhất có thể cho dự
án Nhờ đó các dự án agile thường giúp khách hàng tối ưu hóa được giá trị của
dự án Một cách gần như trực tiếp, agile gia tăng đáng kể độ hài lòng của kháchhàng
3 Nguyên Tắc Áp Dụng Trong Mô Hinh Agile
a Thử nghiệm giúp dự án nhanh chóng được bàn giao hơn
Ở dự án truyền thống, kiểm thử thường được xem là bước cuối kiểm tra chấtlượng sản phẩm Và việc ngăn chặn lỗi của phầm mềm bị coi như trách nhiệm củaQA/tester Bug được tìm thấy dù quan trọng hay không thì cũng sẽ làm chậm quá trìnhbàn giao sản phẩm.Trong dự án Agile, chúng ta xây dựng một sản phẩm tốt ngay từban đầu, sử dụng kiểm thử để phản hồi trên ngay khi phát triển để làm thế nào cho sản
Trang 8phẩm tương đồng với yêu cầu Nghe có vẻ là thay đổi nhỏ, nhưng thực chất thì việcnày có ý nghĩa lớn Mối liên hệ giữa tester và dev cần là sự cộng tác, tương hỗ lẫnnhau
b Kiểm thử không chỉ là một giai đoạn của dự án
- Kiểm thử không phải là một giaiđoạn trong quá trình phát triển Agile mà cầnđược tham gia sâu vào quy trình phát triển từ sớm
- Cách tiếp cận Agile tập trung vào việc xác nhận những điều đúng đắn ngay từđầu, giảm sự cần thiết phải có nhiều kiểm thử viên (QA Tester) ở cuối quy trình
để đạt được kết quả Đảm bảo tiến độ dự án được liên tục
c Cá nhân và sự tương hỗ quan trọng hơn quy trình
- Với dự án truyền thống, tester làm việc độc lập và chịu trách nhiệm với toàn bộhoạt động test
- Đối với Agile, các hoạt động test được thực hiện bởi toàn bộ dự án Để thựchiện được hết test thì cần thực hiện lặp lại qua các sprint
- Tuy nhiên tới khi dự án lớn hoặc phức tạp lên thì sẽ có lúc không thể test hếtcác testcase đề ra và không thể thực hiện được mục tiêu ban đầu đề ra Có nghĩateam không thể thực hiện nhanh như họ nghĩ Vì nếu test chưa xong thì featurecũng không thể xong được, vì vậy để đẩy nhanh tốc độ thì cả team phải làmcùng nhau và đẩy nhanh phần chậm nhất, test cùng nhau
d Rút ngắn vòng lặp phản hồi
- Thời gian từ khi viết code và thực hiện code tới khi biết được code vận hànhnhư thế nào được gọi là feedback loop (vòng phản hồi) Nếu một phần mềmkhông được thực hiện test cho tới khi kết thúc và được bàn giao thì vòng phảnhồi này bị kéo dài tới cả tháng, như thế là quá dài
- Agile tạo nên một vòng phản hồi ngắn hơn bởi với dự án Agile, phần mềmđược sẵn sàng để test ngay từ khi bắt đầu Đặc thù của Agile là đội dự án có rấtnhiều cấp độ kiểm thử để có thể tấn công được nhiều loại dữ liệu khác nhau
- Agile sử dụng nhiều test tự động vì nó trả lại phản hồi nhanh Test hồi quy thủcông mất nhiều thời gian thực hiện hơn, cần có nhân lực và có thể không thựchiện ngay lập tức được Kiểm tra thủ công vẫn còn quan trọng
- Tuy nhiên, đội Agile thường thấy rằng những thông tin phản hồi nhanh chóngtạo nên bởi hồi quy tự động là chìa khóa để phát hiện các vấn đề một cáchnhanh chóng, do đó làm giảm rủi ro và giảm việc phải làm lại
e Thỏa mãn mong muốn của khách hàng
- Cho dù là sử dụng phương pháp test tự động hay phương pháp test thủ công thìkịch bản test vẫn cần phải khớp với yêu cầu và mong đợi từ phía khách hàng
- Vì vậy, trước khi tốn thời gian tìm bug và sửa lỗi thì đội ngũ phát triển ứngdụng, phần mềm và website nên đặt câu hỏi để làm sáng tỏ mong muốn củakhách hàng đối với chức năng sản
Trang 9f Giữ những dòng code được rõ ràng
- Nguyên tắc này là một ví dụ về một nguyên tắc mà đội Agile phải có Sẽ mấtnhiều công sức và thời gian để sửa lỗi khi chúng được tìm thấy
- Nếu đó là một lỗi chính đáng nó sẽ được sửa trong vòng lặp và đôi khi kết quảsau khi sửa sẽ không được tốt bằng làm từ đầu vì nó ảnh hưởng tới những phầnkhác
g Giản lược tài liệu kiểm thử
Thay vì viết dài dòng thì Agile test sẽ
- Tái sử dụng checklist
- Tập trung vào bản chất của các thử nghiệm chứ không phải là các chi tiết ngẫunhiên
- Sử dụng các tài liệu hướng dẫn đơn giản
- Nắm bắt những ý tưởng thử nghiệm trong điều lệ kiểm nghiệm thăm dò
h Chưa thể hoàn thành khi chưa qua giai đoạn kiểm thử
- Trong dự án truyền thống có sự phân tách rõ ràng giữa dev và test, đó là đặc trưngcho việc dev nói “xong” với phần họ phát triển nhưng nó vẫn chưa được test Do
đó thực tế là phần phát triển ấy vẫn chưa xong cho tới khi test xong và bug đượcfix
- Đó là lý do vì sao mà phần mềm chỉ được để “90% done” Agile không tính là
“done” mà nó cần được sẵn sàng cho sự chấp nhận của Product Owner vàkhách hàng cho tới khi nó được thực thi và test
k Test-Last & Test-Driven
Trong môi trường phát triển truyền thống, test được lấy từ tài liệu yêu cầu Yêucầu và design đầu tiên, sau đó đến kiểm thử Quá trình kiểm thử diễn ra ở cuối dự án.Tuy nhiên kiểm thử cung cấp một ví dụ về ý nghĩa của việc phát triển thỏa mãn yêucầu Test được định hướng từ các thành phần của project, trong đó có tài liệu dự án.Việc thực hiện test được tiến hành vào thời điểm cuối cùng của project Đây gọi làcách tiếp cận “testlast” – Test sau cùng
4 Các giai đoạn kiểm thử phần mềm tương ứng với các giai đoạn phát triển phần mềm trong mô hình Agile
a Tiền-Phân-đoạn (Pre-iteration):
Yêu cầu được phân tích chi tiết bởi BA (Business Analyst – chuyên viên phântích nghiệp vụ) và các tiêu chí chấp nhận (acceptance criteria) Và QA sử dụng các yêucầu này ngay từ đầu, ta cần phải xác minh (verify) những yêu cầu đó từ sớm và thườngxuyên
b Xác minh Yêu cầu
- Phương pháp tiếp cận & kiểm tra nhanh Agile thông thường thiên về việc đưa
ra phản hồi sớm; Và phương pháp này cần phải bắt đầu bằng việc kiểm tra cácyêu cầu từ sớm bởi QA hoặc tester để làm sáng rõ ý nghĩa và tính khả-kiểm
Trang 10(testability) Việc này sẽ đảm bảo các yêu cầu luôn rõ ràng và có thể kiểm thửđược
- Yêu cầu cần đủ nhỏ để có ý nghĩa trong bối cảnh xác định; Tiêu chí chấp nhận(acceptance criteria: những story thường được sử dụng cho các tiêu chí chấpnhận) không nên bị trùng lặp, chồng chéo từ những story khác nhau, các giaiđoạn nên được phân bố một cách cụ thể ví dụ như cách tiếp cận kiểm tra nhanhthông thường dưới đây
- user story: là một tóm tắt đơn giản, ngắn gọn về chức năng mà khách hàngmong muốn
- Tiêu chí chấp nhận (Acceptance Criteria): là những tiêu chí dùng để đánh giásản phẩm, chức năng đã thực hiện đúng yêu cầu hay chưa? Có thể coi đó là cáctiêu chí xác nhận hoàn thành story
- Các tiêu chí đặt ra phải đáp ứng các đặc tính sau:
- Tính khả dụng (usability): là tiêu chí trả lời cho câu hỏi: Có dễ sử dụng haykhông?
- Tính chức năng (Functionality)
- Xử lý lỗi (error handing): Liệt kê ra những lỗi có thể gặp phải trong quá trình sửdụng chương trình và phương thức để xử lý Ví dụ người dùng có thể thực hiệnsai thứ tự các bước và khi đó chương trình sẽ xử lý như thế nào?
- Hiệu suất( Performance)
- Stress tests: Là tiêu chí trả lời cho câu hỏi: Hệ thống sẽ hoạt động như thế nàodưới những áp lực như có nhiều người truy cập tại cùng 1 thời điểm, có quánhiều request được gửi đến hệ thống…
- Để đạt được mục tiêu của giai đoạn này cần có sự giao tiếp chặt chẽ giữa cácbên Đội Phát triển / Nhà phân tích nghiệp vụ/ Đảm bảo chất lượng
Trang 11- Khả kiểm (Testable): Các khía cạnh có thể kiểm thử được phải được xem xétchi tiết Những yếu tố này thường là:
- Tìm kiếm các yêu cầu ẩn
- Môi trường
- Dữ liệu kiểm thử (test data)
- Sự phụ thuộc vào các yêu cầu khác
c Các hoạt động Đảm bảo chất lượng:
- Kiểm thử chấp nhận là các yêu cầu về phương diện kiểm thử cần được thựchiện để hiểu các yêu cầu phần mềm Các kiểm thử chấp nhận này được sinh ra
tự động và dùng để hướng dẫn quá trình phát triển
- Các kiểm thử chấp nhận không nên bao gồm toàn bộ các tình huống (casescenarios) do điều này có thể tạo ra những sự ngưng trệ không cần thiết và cóthể tạo ra quá nhiều bộ kiểm thử tự động (automated test) tương tự nhau
- Kiểm thử chấp nhận trong các dự án Agile rất khác biệt so với các dự án truyềnthống Không giống như các dự án truyền thống, nơi kiểm thử chấp nhận xảy ra
ở phần cuối của vòng đời phần mềm, trong dự án Agile kiểm thử chấp nhậnđược thực hiện trước khi phần mềm được chuyển giao Kiểm thử chấp nhậncũng có xu hướng được tự động hóa để họ có thể chạy như là kiểm thử hồi quy(regression test)
- Kiểm thử tự động rất quan trọng đối với mọi dự án Agile Các bản build thườngxuyên yêu cầu các chu kỳ phản hồi ngắn, do đó kiểm thử hồi quy phải nhanhchóng và chính xác
- Trong các dự án Agile, kiểm thử tự động được thực hiện bởi tất cả các cấp độ –lập trình viên, kiểm thử viên bảo đảm chất lượng(QA tester) và các nhà phântích nghiệp vụ (BA) Sự tham gia của tất cả mọi người làm gia tăng tính xácđáng của các phần kiểm thử và thường giúp xác định đúng các phần kiểm thử.Tuy nhiên, điều này không có nghĩa là tất cả mọi người phải đều phải viết mãkiểm thử
5 Lợi Ích khi xây dựng ứng dụng web bằng phương pháp Agile
a Sự linh hoạt
Các phương pháp luận Agile khuyến khích các bộ phận có liên quan cung cấpđầu vào ở tất cả các giai đoạn của dự án và bản chất lặp đi lặp lại, thích ứng của họ cónghĩa là các nhóm phát triển Agile nắm bắt các yêu cầu thay đổi
b Nâng cao khả năng lên kế hoạch thực tiễn cho dự án
Phần mềm làm việc được trình bày cho các bên liên quan của dự án vào cuốimỗi lần lặp lại - đôi khi thường xuyên như một lần một tuần - tạo cơ hội để đánh giátrong suốt quá trình xây dựng Chu kỳ kết quả thường xuyên này cũng giúp bạn dễdàng xác định khối lượng công việc đã hoàn thành - cũng như tốc độ di chuyển của dựán
Trang 12c Tăng tốc độ hoàn tất dự án
Agile cho phép các nhà phát triển làm việc trên các chức năng cốt lõi và cáctính năng quan trọng, trong khi các nhà thiết kế làm việc trên hình ảnh và giao diệnkhung dây của kỹ sư UX sẽ được sử dụng để thử nghiệm user ban đầu Giảm thời gianchờ đợi hoàn thành các giai đoạn trước giúp cho việc thực hiện dự án nhanh hơn vàhiệu quả hơn
d Phản hồi liên tục của user
Thay vì trải qua thử nghiệm khi phần mềm đã hoàn tất, một dự án Agile có thểthích ứng với các thử nghiệm thường xuyên và phản hồi của người dùng trong suốtquá trình xây dựng - cải thiện thiết kế sản phẩm của bạn và phù hợp với thị trườngcàng sớm càng tốt
e Tạo động lực cho team dự án
Các nhóm Agile có quy mô nhỏ và mỗi thành viên nắm quyền sở hữu dự án.Điều này khuyến khích các cá nhân làm việc chăm chỉ hơn, vì điều đó có nghĩa là họcảm thấy bản thân như những bánh răng nhỏ trong một cỗ máy khổng lồ và không thểthiếu đối với thành công của dự án
g Tăng sự gắn bó trong mối quan hệ làm việc
Đặt trọng tâm lớn vào giao tiếp và hợp tác trong nhóm phát triển và giữa cácbên liên quan, có nghĩa là các tổ chức thường tiếp tục xây dựng các mối quan hệ làmviệc bền vững và thành công trong nội bộ hoặc với các cơ quan Agile bên ngoài củahọ
h Giảm thiểu chi phí
Vì Agile hoạt động tốt nhất với các nhóm phát triển nhỏ hơn và là cách tạophần mềm nhanh hơn, hiệu quả hơn, nên nó thường tiết kiệm chi phí hơn các phươngpháp phát triển truyền thống Hơn nữa, vì bản chất Agile là linh hoạt, bạn có khả năng
bỏ ra chi phí ít hơn cho các thay đổi đối với chức năng sau khi quá trình phát triểnhoàn tất
k Chất lượng sản phẩm tốt hơn
Các phương pháp Agile xây dựng các vòng lặp kiểm tra và phản hồi trong quátrình phát triển, khuyến khích mã hóa “sạch sẽ”, đo lường và đánh giá thường xuyêntất cả các công việc được thực hiện trong suốt dự án và do đó sản phẩm cuối có chấtlượng cao hơn
j Hạn chế rủi ro
Agile có nghĩa là liên tục ưu tiên và phát triển các tính năng cốt lõi trước, đồngthời lưu các tính năng ít giá trị hơn cho đến sau này trong quá trình phát triển Điềunày làm giảm rủi ro của dự án, vì ngay cả trong giai đoạn đầu của dự án, một phầnmềm hoạt động đã được sản xuất
Nếu bạn không có nhóm Agile nội bộ, thì việc thuê một cơ quan phát triển sửdụng phương pháp Agile cho dự án phát triển web của bạn có thể giúp bạn gặt hái tất
cả những lợi ích mà Agile mang lại
Trang 136 Scrum là gì?
Scrum là một “bộ khung làm việc” cơ bản để tiếp cận những công việc phức
tạp Dựa trên bộ khung này, nhóm làm việc có thể áp dụng những quy trình, kỹ thuậtkhác nhau cho công việc của mình… Nó là một thành viên của họ Agile
Credit: Scrum.org
a Scrum có ích gì cho phát triển phầm mềm hiện nay
Nó giúp loại bỏ những công đoạn phức tạp và chỉ tập trung vào những côngđoạn cần thiết đáp ứng được nhu cầu của khác hàng đưa ra Ba yếu tố nòng cốt tạo
thành một mô hình quản lý tiến trình thực nghiệm gồm: sự minh
bạch (transparency), thanh tra (inspection) và thích nghi (adaptation).
b Ba giá trị cốt lõi của Scrum
1 Minh bạch
Muốn áp dụng thành công Scrum, các thông tin liên quan đến quá trình phảimình bạch và thông suốt Các thông tin có thể là tầm nhìn của sản phẩm, yêu cầu củakhách hàng, tiến độ công việc, các rào cản khác…
Từ đó mọi thành viên ở vai trò khác nhau có đầy đủ thông tin cần có để tiếnhành quyết định trong việc nâng cao hiệu quả công việc
2 Thanh tra
Phải thường xuyên thanh tra các hoạt động trong Scrum và tiến độ đến đích đểphát hiện các bất thường không theo ý muốn Tần suất thanh tra không nên quá dày đểkhỏi ảnh hưởng đến công việc Công tác thanh tra khi được thực hiện bởi người có kĩnăng tại các điểm quan trọng của công việc sẽ giúp cải tiến liên tục trong Scrum
Trang 143 Thích nghi
Scrum mang lợi thế là tính linh hoạt rất cao, nhờ đó mang lại tính thích nghicao Dựa vào thông tin liên tục và minh bạch từ quá trình thanh tra và làm việc, Scrum
có thể cho lại các thay đổi tích cực, nhờ đó mang lại thành công cho dự án
c Lợi ích mà Scrum mang lại
Tính minh bạch, kiểm tra, và thích nghi là 3 nền tảng cơ bản của Scrum Vàdưới đây là những lý do tại sao nên dùng Scrum
1 Cải thiện chất lượng phần mềm, dễ học và dễ sử dụng
2 Rút ngắn thời gian phát hành phần mềm, cho phép khách hàng sử dụng sản phẩm sớm hơn
3 Nâng cao tinh thần đồng đội, tối ưu hóa hiệu quả và nỗ lực của đội phát triển
4 Gia tăng tỷ suất hoàn vốn đầu tư (ROI)
5 Tăng mức độ hài lòng của khách hàng
6 Kiểm soát dự án tốt, cải tiến liên tục
7 Giảm thiểu rủi ro khi xây dựng sản phẩm
d Các khái niệm cơ bản Scrum
1 Scrum Team
Scrum team chia làm 3 vai trò bao gồm những thành phần sau:
Product Owner: Nhiệm vụ của Product Owner là đảm bảo việc quản lý
những công việc còn tồn đọng (Product backlog) của việc phát triển sản
phẩm phần mềm Product Owner phải liên tục cập nhật thông tin cho các thành viên trong team để họ hiểu về yêu cầu hay các tính năng cần có của sản phẩm ngay cả khi họ không trực tiếp phát triển tính năng đó
Development Team: là những lập trình viên sẽ tham gia vào việc phát triển từng tính năng cụ thể Các lập trình viên này có thể sẽ có kỹ năng khác nhau
và một số sẽ giỏi về những kỹ năng nhất định Tuy nhiên khi sử dụng Scrum thì tất cả các thành viên của Development Team yêu cầu phải có khả năng làm việc thay thế vị trí của nhau và không ai chỉ chịu trách nhiệm phát triển một (hoặc một số) tính năng nhất định
Scrum Master: sẽ chịu trách nhiệm cho việc lên kế hoạch để phân công
công việc, sắp xếp thứ tự ưu tiên giải quyết những công việc tồn đọng nào có
trong Backlog trước, tổ chức các buổi họp với Product Owner để theo dõi
tình hình và nắm thông tin cần thiết
2 Sprint
Sprint là mộ phân đoạn lặp đi lặp lại trong quy trình phát triển phần mềm, có
khung thời gian thường là 1 tháng (từ 1 – 4 tuần) mà theo đó sản phẩm sẽ
được release phiên bản mới Khi một Sprint kết thúc thì Scrum Master cần phải chuyển trạng thái của nó sang Done.