Nghiên cứu phát triển phần mềm hướng hành vi ứng dụng công cụ Behat Phan Thị Gấm Trường Đại học Công nghệ.. Chỉ ra và phân tích một số những vấn đề cơ bản, góp phần phát hiện những yế
Trang 1Nghiên cứu phát triển phần mềm hướng hành
vi ứng dụng công cụ Behat
Phan Thị Gấm
Trường Đại học Công nghệ Đại học Quốc gia Hà Nội Luận văn ThS Công nghệ thông tin: 60 48 10 Người hướng dẫn : TS Trương Anh Hoàng
Năm bảo vệ: 2014
103 tr
Abstract Làm sáng tỏ những nội dung cơ bản trong tư tưởng Hồ Chí Minh về đạo
đức cách mạng, chủ yếu là đạo đức của đội ngũ cán bộ y tế Chỉ ra và phân tích một số những vấn đề cơ bản, góp phần phát hiện những yếu tố, điều kiện tác động, chi phối thực trạng đạo đức của đội ngũ cán bộ y tế ở Việt Nam trong những năm gần đây Đề xuất một số quan điểm cơ bản và luận chứng một số giải pháp chủ yếu nhằm tiếp tục xây dựng đạo đức cho đội ngũ cán bộ y tế ở Việt Nam hiện nay
Keywords.Công nghệ phần mềm; Công nghệ thông tin; Công cụ Behat; Tin học
Content
CHƯƠNG – MỞ ĐẦU
Chất lươ ̣ng là mô ̣t trong những yếu tố quan tro ̣ng nhất của sản phẩm phần mềm Lỗi phần mềm không chỉ ảnh hưởng đến dữ liê ̣u , hoạt động của cơ quan tổ chức sử dụng phần mềm mà đôi khi còn ảnh hưởng đến tính ma ̣ng con người Những ha ̣n chế hay lỗi phần mềm sẽ che lấp các tính năng và tiê ̣n ích mà hê ̣ thống đó mang la ̣i Đặc biê ̣t, trong thi ̣ trường ca ̣nh tranh chất lượng cao như hiê ̣n nay mô ̣t phần mềm phát sinh lỗi trong quá trình sử du ̣ng sẽ làm ảnh hưởng nghiêm tro ̣ng tới danh tiếng , thương hiê ̣u
và uy tín của công ty sản xuất phần mềm Chính vì lý do đó đảm bảo chất lượng phần mềm là mô ̣t vấn đề quan tro ̣ng và ngày c àng cần được quan tâm hàng đầu trong lĩnh vực phát triển phần mềm
Tuy nhiên, mô ̣t phần mềm chất lượng cao cũng có thể gă ̣p thất ba ̣i trên thi ̣ trường nếu phần mềm đó không đáp ứng được nhu cầu của khách hàng Các công ty sả n xuất phần mềm luôn cố gắng đưa ra các hê ̣ thống với các tính năng mới để ca ̣nh tranh với các nhà cung cấp khác Với đa phần các hê ̣ thống thương ma ̣i , tại thời điểm bắt đầu dự
án, có thể đội phát triển không thu thập đư ợc các yêu cầu thực sự từ khách hàng , phần
Trang 2mềm sẽ được phát triển dựa trên các tính năng phỏng đoán và trong trường hợp tồi tê ̣ các tính năng đó có thể không phù hợp với mong muốn của khách hàng Viê ̣c thu thâ ̣p yêu cầu khách hàng và sử dụng các mô tả tường minh để yêu cầu đó không bị sai lệch trong quá trình phát triển phần mềm là vấn đề lớn của các nhà sản xuất
Thông qua quá trình sử du ̣ng phần mềm , người sử du ̣ng sẽ dễ hình dung r a các hoạt động của hệ thống vàhiểu rõ hơn về nghiệp vụ và miền ứng dụng , khi đó khách hàng dễ đưa ra các ý tưởng cho tính năng mới và bổ sung chúng Đây là ha ̣n chế lớn nhất của các phương pháp phát triển phần mềm tr uyền thống , bởi khi có sự bổ sung hoă ̣c thay đổi yêu cầu phần mềm đang phát triển sẽ dễ phá vỡ cấu trúc hê ̣ thống Trong phương pháp phát triển phần mềm truyền thống , khách hàng cũng chỉ được tiếp xúc với phần mềm sau kh i các yêu cầu phần mềm đã được cài đă ̣t hoàn thiê ̣n , do đó viê ̣c phát hiện sai sót hoặc cài đặt hệ thống không đúng với yêu cầu khách hàng rất dễ xảy
ra Quy trình phát triển phần mềm lă ̣p hiê ̣n đa ̣i được coi là mô ̣t giải p háp khắc phục vấn đề thay đổi yêu cầu của người sử du ̣ng Ý tưởng cơ bản trong các quy trình lặp hiê ̣n đa ̣i là ta ̣o ra phần mềm được sản xuất theo từng bước nhỏ , mỗi bước chỉ thực hiê ̣n
mô ̣t số tính năng tương đối đô ̣c lâ ̣p để đưa ra một phần mềm nhỏ có thể dùng được Sau mỗi vòng lă ̣p, khách hàng có thể dùng thử phần mềm để đưa ra các phản hồi về hệ thống và dựa vào các phản hồi đó đô ̣i phát triển sẽ bổ sung các tính năng hữu ích hoă ̣ c cải thiện các tính năng đã được phát triển theo hướng tốt hơn cho khách hàng Viê ̣c chọn các tính năng để đưa vào mỗi vòng lặp thường căn cứ vào độ ưu tiên của chúng ,
do đó các tính năng quan tro ̣ng thường được cho ̣n để ph át triển trước, cho phép khách hàng sử dụng hệ thống sớm hơn các phương pháp phát triển phần mềm truyền thống Bên ca ̣nh những lợi ích đáp ứng sự thay đổi yêu cầu , các quy trình phát triển phần mềm theo phương pháp lă ̣p cũ ng ta ̣o ra những thách thức mới cho giai đoa ̣n kiểm thử phần mềm Ở quy trình phát triển truyền thống , kiểm thử là mô ̣t pha được thực hiê ̣n vào cuối dự án , khi hê ̣ thống đã được cài đă ̣t hoàn thiê ̣n , nhưngvới các hê ̣ thống s ử dụng phương pháp lặp , phần mềm sẽ được kiểm tra trong mỗi vòng lă ̣p Khách hàng thường xuyên được sử du ̣ng các phiên bản nhỏ của hê ̣ thống , nên lỗi phần mềm hoă ̣c các tính năng sai sót sẽ sớm được phát hiện và giải quyế t trước khi sản phẩm chính thức được bàn giao cho khách hàng Trong điều kiê ̣n lý tưởng, sau mỗi vòng lă ̣p khách hàng sẽ nhận được một sản phẩm có chất lượng cao, phù hợp với yêu cầu
Trong phương pháp phát triển phần mềm linh hoa ̣t, nhu cầu kiểm thử được hiểu là các quy tắc hay hoạt động được sử dụng để đảm bảo chất lượng phần mềm Quá trình phát triển phần mềm thường sử dụng các kỹ thuật và công cụ hỗ trợ để mã nguồn viết cho mỗi t ính năng hoạt động đúng , chẳng ha ̣n như các kỹ thuâ ̣t lâ ̣p trình theo că ̣p , kỹ thuâ ̣t phát triển hê ̣ thống lấy kiểm thử làm tro ̣ng tâm hay kỹ thuâ ̣t kiểm thử trước , Tuy nhiên, tính năng đúng có phù hợp yêu cầu của khách hàn g hay không la ̣i phải cần
mô ̣t phương pháp kiểm thử ở mức đô ̣ cao hơn , đó là kiểm thử chấp nhâ ̣n hay kiểm thử
Trang 3của khách hàng Yêu cầu của khách hàng là yếu tố quan tro ̣ng nhất để xác đi ̣nh các trường hợp kiểm thử, viê ̣c kiểm thử nhằm đảm bảo phần mềm làm ra đáp ứng nhu cầu của khách hàng
Trong quy trình lă ̣p , phần mềm được phát triển qua các vòng lă ̣p và có sự thay đổi liên tu ̣c sẽ có lợi cho viê ̣c kiểm tra các tính năng Mỗi tính năng được kiểm thử ít nhất
mô ̣t lần, thâ ̣m chí những tính năng quan tro ̣ng được kiểm thử nhiều lần thông qua các vòng lặp khi bổ sung các tính năng mới Chính vì thế ,kiểm thử hồi quy trở nên nhàm chán và khó thực hiện; càng gần cuối chu trình phát triển phần mềm , viê ̣c kiểm thử các tính năng ban đầu quan trọng nhất dễ bị kiểm tra lỏng lẻo bở i tâm lý chủ quan của kiểm thử viên Trái lại, khi tích hợp thêm các tính năng mới , rất dễ phát sinh các lỗi ảnh hưởng tới toàn hệ thống và lỗi đó phát hiện càng muộn thì chi phí sữa lỗi càng cao
và đối với những vòn g lă ̣p cuối thì rất khó để thực hiê ̣n , lúc này kiểm thử tự động trở thành một giải pháp hữu hiệu để giải quyết vấn đề trên Kiểm thử tự đô ̣ng là viê ̣c sử dụng các phần mềm , các công cụ để kiểm thử phần mềm khác nhằ m hỗ trơ ̣ cho con người tự đô ̣ng hóa quá trình kiểm thử Kiểm thử tự đô ̣ng giúp công viê ̣c thực hiê ̣n mô ̣t cách nhanh chóng, chính xác hơn, giải quyết các vấn đề về tâm lý trong quá trình kiểm thử Kiểm thử tự đô ̣ng đă ̣c biê ̣t hữu hiê ̣u trong vấn đề kiểm thử hồi quy, bởi có thể thực hiê ̣n hằng ngày, hằng giờ, cho mo ̣i vòng lă ̣p mà không hề nhàm chán
Hiê ̣n nay có khá nhiều công cu ̣ để kiểm thử tự đô ̣ng và nó trở thành mô ̣t phần không thể thiếu đối với các hê ̣ thống phát triển theo phương pháp linh hoa ̣t Tuy nhiên,
để tự động hóa quá trình kiểm thử chấp nhận thì cần phải lựa chọn một kỹ thuật phù
hơ ̣p để mô tả yêu cầu của khách hàng Viê ̣c sử du ̣ng công cu ̣ phần lớn phu ̣ thuô ̣c vào ngôn ngữ lâ ̣p trình và kỹ thuâ ̣t đă ̣c tả yêu cầu người dùng Với sự phát triển ma ̣nh mẽ của các quy trình phát triển phần mềm theo phương pháp linh hoạt thì thời gian gần đây có rất nhiều công cu ̣ hỗ trợ chẳng ha ̣n như PHPUnit, Selenium, TestPro, …
Nghiên cứu và tìm hiểu mô ̣t kỹ thuâ ̣t phát triển phần mềm, có thể đặc tả những tiêu chí kiểm thử chấp nhận từ người sử dụng và tái sử dụng các tiêu chí đó cho việc tự
động hóa kiểm thử chấp nhậnlà rất cần thiết Chính vì lí do đó tôi chọn đề tài “Nghiên
cứu phát triển phần mềm hướng hành vi và ứng dụng công cụ Behat”
Nô ̣i dung luâ ̣n văn tâ ̣p trung vào những vấn đề sau:
Giới thiê ̣u tổng quan về phương pháp phát triển phần mềm linh hoa ̣t ; Giới thiê ̣u hai quy trình được sử du ̣ng phổ biến trong Agile là quy trình Scrum và lâ ̣p trình cực hạn XP; Tổng kết mu ̣c đích và vai trò của kiểm thử trong phương pháp phát triển phần mềm linh hoa ̣t , chỉ ra các mức kiểm thử thường được áp dụng như kiểm thử đơn vị , kiểm thử chấp nhâ ̣n…
Tìm hiểu một số kỹ thuật phát triển phần mềm thường áp dụng trong phương pháp phát triển linh hoạt Phần này chủ yếu trình bày phương pháp phát triển phần
Trang 4mềm lấy kiểm thử làm tro ̣ng tâm ; đưa ra các khái niê ̣m và quy trình thực hiê ̣n của phương pháp phát triển dựa vào kiểm thử (TDD) và phương pháp phát triển dựa vào kiểm thử chấp nhâ ̣n (ATDD) Phần này cũng nêu lên mô ̣t số ha ̣n chế của các kỹ thuật này
Nghiên cứu phương pháp phát triển phần mềm hướng hành vi Đây là mô ̣t phương pháp mới, chưa được áp du ̣ng phổ biến trong sản xuất phần mềm Tuy nhiên, thông qua nghiên cứu của mình tôi thấy đây là mô ̣t kỹ thuâ ̣t ha y, có thể áp dụng rộng rãi, vì thế trong phần này , tôi trình bày những kiến thức cơ bản nhất về phương pháp phát triển phần mềm dựa vào hành vi của ứng dụng như : nguyên lý, quy trình, các sản phẩm cũng như công cu ̣ hỗ tr ợ; chú trọng trình bày dạng thức mô tả yêu cầu ứng dụng dưới da ̣ng mô ̣t tính năng ; đi ̣nh da ̣ng mô tả tính năng , các kịch bản sử dụng tính năng , cũng như các mô tả các tiêu chí kiểm thử chấp nhận thông qua các định nghĩa bướ c
Nghiên cứu công cụ Behat: Trình bày chi tiết về cách cài đặt, cấu hình, kiến trúc
và cách thức sử dụng công cụ này ;mô tả cách sử du ̣ng ngôn ngữ Gherkin để viết tính năng, đi ̣nh nghĩa các tiêu chí kiểm thử chấp nhâ ̣n như là các bước của kịch bản ; Cách
đi ̣nh nghĩa phương thức kiểm thử chấp nhâ ̣n trong lớp ngữ cảnh
Áp dụng những nghiên cứu về phát triển phần mềm hướng hành vi và công cụ Behat để xây dựng ứng dụng minh họa: giới thiê ̣u công cu ̣ và kỹ thuâ ̣ t hỗ trợ; mô tả ứng dụng và các bước xây dựng ứng dụng; tổng kết, đánh giá viê ̣c áp du ̣ng
Cấu trúc của luâ ̣n văn gồm bốn phần như sau:
Chương 1 – Kiểm thử phần mềm trong Agile: Trình bày các khái niệm cơ
bản, một số quy trình phát triển phần mềm theo phương pháp phát triển linh hoạt; Mục đích, tầm quan trọng, các loại hình kiểm thử trong phương pháp phát triển linh hoa ̣t
Chương 2 – Phát triển phần mềm theo hướng hành vi – BDD: Trình bày
khái niệm, quy trình và một số kiến thức liên quan đến phát triển phần mềm hướng hành vi
Chương 3 – Công cụ Behat: Giới thiệu công cụ Behat và các thành phần liên
quan
Chương 4 - Áp du ̣ng phát triển phần mềm hướng hành vi và công cu ̣
Behat:Vâ ̣n du ̣ngphát triển phần mềm hướng hàn h vivà sử du ̣ng công cu ̣ Behat đ ể xây
dựng ứng dụng minh họa
TÀI LIỆU THAM KHẢO
[1]Beck Kent - Extreme Programming Explained: Embrace Change Third Print, 190, AddisonWesley, Reading (MA), 2000
[2]Beck Kent ,Test-Driven Development By Example 240, Addison-Wesley,
2003
Trang 5 [3]Control Chaos What is Scrum? <http://www.controlchaos.com/about/> September 26th, 2006
[4]Larman, Craig (2004) Agile & Iterative Development: A Manager’s Guide
342, Addison-Wesley
[5]John Horn Lopes, Evaluation of Behavior-DrivenDevelopment 2012
[6]http://en.wikipedia.org/wiki/Behavior-driven_development
[7]http://dannorth.net/introducing-bdd/
[8]http://behat.org