Luận văn ThS: Nghiên cứu sinh mã kiểm thử tự động dựa trên BDD

Luận văn ThS nghiên cứu mã kiểm thử tự động theo phương pháp BDD. Phân tích quy trình và ứng dụng vào phát triển phần mềm thực tế.

Trường đại học

Trường đại học công nghệ

Chuyên ngành

Kỹ thuật phần mềm

Người đăng

Ẩn danh

Thể loại

Luận văn thạc sỹ

2018

64
1
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CẢM ƠN

LỜI CAM ĐOAN

MỤC LỤC

DANH MỤC TỪ VIẾT TẮT

DANH MỤC BẢNG BIỂU

DANH MỤC HÌNH VẼ

1. CHƯƠNG 1: MỞ ĐẦU

1.1. Khái quát vấn đề

1.2. Bố cục luận văn

2. CHƯƠNG 2: MỘT SỐ KIẾN THỨC NỀN TẢNG

2.1. Phát triển phần mềm dựa trên phương pháp Agile

2.2. Phát triển phần mềm hướng kiểm thử (TDD)

2.3. Phát triển hướng BDD

2.4. Xử lý ngôn ngữ tự nhiên

2.5. Khái quát về tự động kiểm thử trong BDD

3. CHƯƠNG 3: MỘT SỐ CÔNG CỤ KIỂM THỬ TỰ ĐỘNG HƯỚNG HÀNH VI

3.1. Công cụ kiểm thử Cucumber

3.2. Công cụ kiểm thử Jasmine

3.3. Công cụ kiểm thử Rspec

4. CHƯƠNG 4: THỰC NGHIỆM FRAMEWORK KIỂM THỬ TỰ ĐỘNG VÀ ĐÁNH GIÁ

4.1. Các thành phần của Framework kiểm thử sử dụng Cucumber

4.2. Công nghệ Java

4.3. Báo cáo kết quả kiểm thử

4.4. Đánh giá Framework kiểm thử

4.5. Phương pháp sinh mã kiểm thử tự động

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng quan Luận văn ThS Mã kiểm thử tự động BDD

Luận văn Thạc sĩ này tập trung vào mã kiểm thử tự động sử dụng Behavior Driven Development (BDD). Trong bối cảnh tự động hóa ngày càng gia tăng trong phát triển phần mềm, việc tự động hóa kiểm thử, một giai đoạn tốn nhiều chi phí và nguồn lực, trở thành một vấn đề cấp thiết. Luận văn đi sâu vào kiểm thử tự động hướng hành vi, tức là kiểm thử chấp nhận dựa trên hành vi người dùng. Nghiên cứu này khảo sát quá trình sinh mã kiểm thử tự động từ các công cụ kiểm thử, và tìm hiểu ứng dụng của các kỹ thuật tự động hóa kiểm thử trong kiểm thử BDD. Bằng cách thực nghiệm công cụ kiểm thử với các kịch bản viết bằng ngôn ngữ tự nhiên có cấu trúc, luận văn đánh giá, nhận xét và đề xuất cải tiến công cụ tự động trong kiểm thử phần mềm hướng hành vi. Các từ khóa chính bao gồm: Kiểm thử, Kiểm thử tự động, Kiểm thử hướng hành vi, và BDD. Theo tài liệu gốc, luận văn tập trung vào việc nghiên cứu sinh mã kiểm thử tự động từ các công cụ kiểm thử tự động và tìm hiểu phương pháp xây dựng công cụ kiểm thử tự động trong kiểm thử hướng hành vi. Điểm yếu được chỉ ra là các công cụ hiện tại không sinh được thân hàm kiểm thử, do đó cần một phương án để giải quyết vấn đề này. Luận văn đề xuất phương án xây dựng một bộ dữ liệu bao gồm các ca kiểm thử dưới dạng ngôn ngữ tự nhiên và các ca kiểm thử tự động sinh tương ứng. Từ dữ liệu đó, áp dụng ứng dụng NLP và công cụ kiểm thử tự động hướng hành vi để khi gọi đến ca kiểm thử, các kịch bản tự động sinh ra các bước kiểm thử hướng hành vi tương ứng. Tự động hóa kiểm thử được xem là một biện pháp có tác động sâu sắc tới dự án, làm giảm chi phí phát triển phần mềm, chu trình phát triển được rút ngắn, chất lượng phần mềm cũng được rút ngắn.

1.1. Giới thiệu về kiểm thử tự động BDD Behavior Driven Development

Kiểm thử phần mềm theo hướng kiểm thử hướng hành vi (BDD) là một khái niệm mở rộng của TDD (Test Driven Development). TDD là khái niệm kiểm thử theo hướng kiểm thử từng phần, viết ca kiểm thử trước rồi lập trình sau. Trong kiểm thử hướng hành vi dựa trên yêu cầu của người sử dụng chúng ta xây dựng các ca kiểm thử. Một trong những điểm yếu khi lập trình phần mềm là rất khó để đáp ứng được đúng yêu cầu của người sử dụng, có nhiều nguyên nhân, trong đó có nguyên nhân là người lập trình không hiểu được yêu cầu người dùng. Vì vậy nếu sử dụng được trực tiếp ngôn ngữ của người sử dụng vào các ca kiểm thử thì sẽ có được một phần mềm đúng với yêu cầu người sử dụng mà không lãng phí nhiều tài nguyên. Theo luận văn, một trong những điểm yếu khi lập trình phần mềm là khó đáp ứng đúng yêu cầu của người dùng. Do vậy, sử dụng ngôn ngữ của người dùng vào ca kiểm thử sẽ giúp tạo ra phần mềm đáp ứng yêu cầu người dùng tốt hơn. Đồng thời, kiểm thử tự động với mã kiểm thử hướng hành vi sẽ giúp tiết kiệm nguồn nhân lực kiểm thử, giảm thiểu tối đa chi phí làm phần mềm, sản phẩm.

1.2. Vấn đề và giải pháp với mã kiểm thử tự động BDD

Qua tìm hiểu một số công cụ kiểm thử tự động trong kiểm thử hướng hành vi hiện nay sinh phương thức kiểm thử nhưng không sinh thân hàm kiểm thử. Ví dụ với công cụ kiểm thử tự động Cucumber, Từ kịch bản kiểm thử ngôn ngữ tự nhiên: Feature: search Wikipedia Scenario: direct search article Given Enter search term 'Cucumber' When Do search Then Single result is shown for 'Cucumber' Thông qua công cụ kiểm thử tự động, các phương thức được sinh ra như sau: @Given ("^Enter search term 'Cucumber'$") public void enter_search_term_Cucumber() throws Throwable { // Write code here that turns the phrase above into concrete actions } @When("^Do search$") public void do_search() throws Throwable { // Write code here that turns the phrase above into concrete actions } @Then("^Single result is shown for 'Cucumber'$") public void single_result_is_shown_for_Cucumber() throws Throwable { // Write code here that turns the phrase above into concrete actions } Tuy nhiên, công cụ tự động hiện tại không sinh được thân hàm do vậy cần đưa phương án để sinh thân các phương thức để tự động kiểm thử với kịch bản kiểm thử BDD đã có.2 Giải pháp Giải pháp luận văn đưa ra là nghiên cứu sinh các mã kiểm thử tự động từ kịch bản kiểm thử hướng hành vi. Đồng thời sử dụng framework Cucumber kết hợp tích hợp các công cụ để kiểm thử tự động trong kiểm thử hướng hành vi dựa trên viết mã kịch bản kiểm thử bằng ngôn ngữ tự nhiên có cấu trúc.

II. Cách ứng dụng Agile TDD vào mã kiểm thử BDD tự động

Agile là phương pháp phát triển phần mềm theo hướng linh hoạt, chia quy trình là các pha nhỏ để phát triển phần mềm. Agile có các đặc điểm như công việc được chia nhỏ và kết hợp lại từ các giai đoạn khác nhau, phần mềm được triển khai dựa trên tài liệu hướng dẫn, khách hàng được đàm phán thông qua hợp đồng, và phản hồi thay đổi một cách nhanh chóng, linh hoạt. TDD (Test-Driven Development) là phát triển phần mềm theo hướng kiểm thử. Lập trình viên sẽ viết mã kiểm thử trước, sau đó viết mã chương trình. Từ kết quả kiểm thử để cải thiện, thay đổi lại code của chương trình. Agile, TDD kết hợp với BDD trong kiểm thử tạo ra một quy trình phát triển phần mềm hiệu quả và linh hoạt. Kiểm thử phần mềm trong quy trình phát triển phần mềm Agile không phải là một giai đoạn của dự án nữa mà là một phần của dự án ngay từ đầu. Để đạt được chất lượng phần mềm tốt với bất kì quy trình phát triển phần mềm nào, kiểm thử luôn là một giai đoạn tốn kém và mất nhiều chi phí, nhân công. Đặc biệt là trong quy trình Agile với sự linh hoạt và chia nhỏ các module phát triển, nhân công cho kiểm thử càng gia tăng, chất lượng phần mềm càng khó kiểm soát và tốn nhiều kinh phí. Chính vì vậy, kiểm thử được đánh giá là khá mất thời gian và công sức của cả nhóm phát triển phần mềm Tự động hóa kiểm thử là một việc làm giúp cải thiện chất lượng phần mềm mà không mất nhiều thời gian, qua mỗi lần thay đổi yêu cầu của người dùng dự án lại được xây dựng lại do đó kiểm thử cần chính xác và đảm bảo nhanh chóng kịp.

2.1. Tối ưu quy trình Agile với tự động hóa kiểm thử BDD

Trong quy trình Agile, chu trình thực hiện các ca kiểm thử bị dồn lại khá nhiều thời gian dành cho kiểm thử hồi quy là khá ít, ứng dụng kiểm thử tự động trong quy trình Agile là một việc làm thiết yếu. Agile là sự kết hợp của sự đa dạng các quy trình làm phần mềm truyền thống khác nhau như: Scrum, RUP…Với tiến trình Agile phần mềm được phát triển một cách linh hoạt, tạo ra một sự kết hợp giữa các phương pháp phát triển một cách chặt chẽ. Quy trình Agile đã kết hợp nhiều phương thức phát triển tiên tiến như: Test Driven Development (TDD- phát triển phần mềm kiểm thử), Behavior Driven Development (BDD- Phát triển theo hướng hành vi),…

2.2. Vai trò của TDD trong xây dựng mã kiểm thử BDD hiệu quả

Trong quy trình TDD, phần mềm được phát triển theo hướng kiểm phát triển kiểm thử trước, sau đó từ kết quả kiểm thử người phát triển điều chỉnh lại mã nguồn sao cho đúng với yêu cầu nghiệp vụ của dự án. Các ưu điểm của phát triển phần mềm hướng kiểm thử [12] là: - Khả năng kiểm thử: khả năng kiểm thử của hệ thống được cải thiện thông qua hoạt động viết ca kiểm thử trước, khiến cho các lập trình viên khi lập trình sẽ phải nghĩ về việc làm sao để chương trình đáp ứng được đúng ca kiểm thử và yêu cầu đã thiết kế. Do vậy làm giảm tối thiểu việc kiểm thử cho hệ thống. - Tính đơn giản: Người lập trình viên phát triển phần mềm theo hướng TDD trong quá trình triển khai các chức năng của hệ thống sẽ tập trung để làm sao cải tiến hoặc chỉnh sửa mã nguồn của mình đã chạy qua được ca kiểm thử, do đó mã nguồn sẽ dễ hiểu hơn và thống nhất hơn. - Chất lượng: Kiểm thử hồi quy được xây dựng ngay từ đầu khiến cho những thay đổi được xác minh liên tục. Việc này khiến cho những thay đổi càng về sau của hệ thống không gây nên những tác động tiêu cực dẫn đến chất lượng phần mềm được đảm bảo hơn, đưa đến cho nhà phát triển và khách hàng có niềm tin hơn rằng những thay đổi của họ đã được đáp ứng.Việc chấp nhận phát triển phần mềm theo hướng phát triển hướng TDD đòi hỏi một số kỹ năng từ người phát triển, viết tốt mã kiểm thử là một kỹ năng cần thiết đối với người lập trình theo hướng này.

III. Top 3 công cụ kiểm thử tự động BDD Ưu và nhược

Luận văn giới thiệu một số công cụ trong kiểm thử tự động trong kiểm thử hướng hành vi như: Cucumber, Jasmine, Rspec. Các công cụ này đã được ứng dụng trong nhiều dự án phần mềm, dễ dùng và mang lại hiệu quả cao trong kiểm thử hướng hành vi. Cucumber là công cụ kiểm thử BDD phổ biến, có khả năng tích hợp với nhiều ngôn ngữ lập trình và framework khác nhau. Ưu điểm của Cucumber bao gồm khả năng tạo tài liệu đặc tả và kiểm thử thành một thể thống nhất, tự động hóa ca kiểm thử, và giúp các bên liên quan theo dõi kiểm thử mà không cần chuyên môn về CNTT. Jasmine là công cụ kiểm thử hướng hành vi cho mã nguồn viết bằng JavaScript. Jasmine không phụ thuộc vào nền tảng Javascript nào, không yêu cầu cấu trúc DOM, có cú pháp rõ ràng, dễ hiểu, phù hợp cho kiểm thử web và dự án Node.js. Rspec là một Framework phát triển phần mềm hướng hành vi cho lập trình viên Ruby. Rspec không tuyệt đối chia các thành phần ngôn ngữ tự nhiên như Cucumber.

3.1. So sánh chi tiết Cucumber Jasmine và Rspec

Qua khảo sát một số công cụ tự động theo hướng kiểm thử BDD, Cucumber được xem là công cụ phổ biến và khá hiệu quả, giúp cải tiến quy trình phát triển phần mềm. Trong cucumber, kịch bản được viết dưới dạng ngôn ngữ Gherkin, đặc tả ngôn ngữ tự nhiên của ca kiểm thử được mô tả một cách chặt chẽ cho phép bên phát triển, khách hàng và các bên liên quan khác đều hiểu được. Các ca kiểm thử chính là kiểm thử chấp nhận và cấu cấu trúc của nó là tập hợp các features. Mỗi kịch bản cấu thành 1 ca kiểm thử là dựa trên cấu trúc Give - When - Then, trong mỗi mệnh đề là các bước.

3.2. Lựa chọn công cụ kiểm thử BDD phù hợp dự án

Qua khảo sát các công cụ kiểm thử phần mềm hướng hành vi nhận thấy công cụ kiểm thử Cucumber là công cụ dễ dùng và có quy trình kiểm thử rõ ràng khi kết hợp với các công cụ kiểm thử tự động khác. Với mục đích ứng dụng công cụ vào trong dự án thực tế, luận văn đi sâu tìm hiểu công cụ Cucumber và xây dựng Framework kiểm thử tự động hướng hành vi sử dụng Cucumber bằng cách kết hợp công cụ Selenium tích hợp trên nền tảng Java với Eclipse để kiểm thử ứng dụng web. Nội dung thực nghiệm Framework kiểm thử tự động dựa trên BDD sẽ được trình bày trong chương 4 sau đây.

IV. Hướng dẫn Xây dựng Framework kiểm thử BDD với Cucumber

Framework Cucumber được xây dựng dựa trên phối hợp của 3 nền tảng sau: Selenium Webdriver, công nghệ Javacông cụ kiểm thử BDDCucumber. Eclipse là một môi trường tích hợp phát triển cho các ngôn ngữ lập trình. Nền tảng Eclipse là công cụ mã nguồn mở được phát hành theo giấy phép EPL (Eclipse Public License) để có thể sử dụng miễn phí đồng thời cho phép sửa đổi và phân phối bởi cộng đồng. Maven là công cụ quản lý dự án phần mềm, cung cấp một cái nhìn mới về mô hình đối tượng dự án (POM). Maven cho phép tự động hoá cấu trúc thư mục ban đầu, thực hiện việc biên dịch và kiểm thử cũng như đóng gói sản phẩm cuối cùng. Nó rất tốt trong việc giảm số lượng các bước trong quá trình xây dựng phần mềm. Selenium Webdriver là công cụ mã nguồn mở và hoàn toàn miễn phí. Cucumber là công cụ kiểm thử BDD phổ biến trên trình duyệt Web nhưng nó không bao gồm các thư viện để tương tác với trình duyệt Web. Vì vậy cần sử dụng thư viện trong framework Selenium để tương tác hiệu quả với các phần tử của website trên trình duyệt.

4.1. Tích hợp Selenium và Cucumber Chi tiết từng bước

Trong kiểm thử tự động với BDD, Cucumber là công cụ để mô tả các các bước kiểm thử với ngôn ngữ tự nhiên tuy nhiên không cung cấp thư viện để tương tác với các trình duyệt web. Chính vì vậy cần kết hợp sử dụng Selenium - công cụ cung cấp các thư viện để tương tác, hoạt động với trình duyệt web. Để gọi thư viện trong Selenium ta dùng 2 Hook @Before và @After như sau. Với hook @Before định nghĩa các phương thức trước khi chạy ca kiểm thử và @After là sau khi kết thúc ca kiểm thử đã mô tả trong kịch bản ở file Feature.

4.2. Cách tạo báo cáo kiểm thử tự động với Cucumber

Khi chạy một kịch bản kiểm thử, cho dù là thủ công hay tự động, đầu ra cần có định dạng rõ ràng và cụ thể mô tả tổng thể của việc kiểm thử. Để framework tự động sinh báo cáo kết quả kiểm thử, ta sử dụng các thư viện có sẵn của cucumber bằng các tạo class runner trong tệp runner như sau: @RunWith(Cucumber.class) @CucumberOptions ( features= {"src/test/java/CucumberFramework/featureFiles/"}, glue = {"CucumberFramework.stepFiles"}, monochrome = true, plugin = {"pretty", "html:target/cucumber", "json:target/cucumber.ExtentCucumberFormatter:target/ report.html"}) public class MainRunner {} Các file report sẽ được tổng hợp trong thư mục target của cấu trúc mã nguồn Framework kiểm thử.

V. Phân tích hiệu quả sinh mã kiểm thử tự động từ BDD

NLP là một lĩnh vực nghiên cứu trong khoa học máy tính, tập trung vào phát triển hệ thống có cho phép máy tính tương tác với con người dựa trên ngôn ngữ tự nhiên. NLP là một cách để các máy tính phân tích, hiểu ý nghĩa của ngôn ngữ tự nhiên của con người một cách thông minh và hữu ích. Kỹ thuật sinh mã kiểm thử BDD từ kịch bản kiểm thử viết bằng ngôn ngữ tự nhiên đưa ra các ca kiểm thử tương ứng hoặc gần nghĩa vì vậy cần sử dụng các kĩ thuật xử lý ngôn ngữ tự nhiên. Hiện nay có các kĩ thuật xử lý ngôn ngữ tự nhiên được sử dụng như: - POS tagging. - Phân tích phụ thuộc. WordNet là một cơ sở dữ liệu lớn từ vựng tiếng anh, được phát triển bởi đại học PrinceTon được sử dụng để thiết kế dưới sự kiểm soát. Đầu vào của việc sinh mã kiểm thử cho các kịch bản kiểm thử hướng hành vi là ngôn ngữ tự nhiên. Do vậy việc xử lý ngôn ngữ tự nhiên đóng với trò quan trọng trong việc sinh mã kiểm thử tự động trong kịch bản BDD.

5.1. Tối ưu sinh mã kiểm thử BDD bằng NLP Xử lý ngôn ngữ tự nhiên

Với một từ điển các ca kiểm thử trên ngôn ngữ tự nhiên, từ dữ liệu đó có một hành vi tương ứng khi đọc đến ca kiểm thử hành vi đối với phần mềm đang xây dựng. Khi đó, mỗi lúc gọi đến kịch bản kiểm thử sẽ dẫn đến hành vi xử lý trong phần mềm tương ứng khác nhau. Luận văn đề xuất phương án xây dựng một bộ dữ liệu bao gồm các ca kiểm thử dưới dạng ngôn ngữ tự nhiên và các ca kiểm thử tự động sinh tương ứng. Từ dữ liệu đó, áp dụng ứng dụng NLP và công cụ kiểm thử tự động hướng hành vi để khi gọi đến ca kiểm thử, các kịch bản tự động sinh ra các bước kiểm thử hướng hành vi tương ứng.

5.2. Các bước tiến trong sinh mã kiểm thử BDD tự động

Tuy nhiên khối lượng dữ liệu là lớn, do vậy trong luận văn chỉ đưa ra phương pháp và sử dụng công cụ tự động trong kiểm thử hướng hành vi để sinh phương thức là các hàm mà chưa tự động hoá được hoàn toàn sinh các thân hàm kiểm thử. Từ việc chạy công cụ kiểm thử tự động trong kiểm thử dựa trên kịch bản BDD ta có thể thấy được quy trình tự động, cũng như phương pháp phát triển, cải tiến công cụ kiểm thử tự động hiện có.

VI. Kết luận Hướng phát triển mã kiểm thử BDD tự động

Luận văn đã trình bày các kiến thức nền tảng về quy trình phần mềm, một số khái niệm về tự động hóa trong kiểm thử, giới thiệu một số công cụ tự động trong kiểm thử tự động BDD, và các ứng dụng có thể của xử lý ngôn ngữ tự nhiên trong kiểm thử phát triển phần mềm. Đồng thời, luận văn đã giới thiệu khái quát, ưu, nhược điểm, cách hoạt động của một số công cụ kiểm thử tự động thường dùng trong kiểm thử hướng hành vi như Cucumber, Jasmine, Rspec. Luận văn đã cài đặt và chạy thực nghiệm Framework kiểm thử tự động với BDD, đưa ra quy trình, viết cơ sở dữ liệu chạy cho công cụ. Dựa trên tìm hiểu các kiến thức và công cụ tự động trong kiểm thử, luận văn phân tích và đưa ra phương pháp sinh mã kiểm thử tự động dựa trên quy trình xử lý ngôn ngữ tự nhiên. Hướng phát triển có thể bao gồm tự động sinh các thân hàm kiểm thử từ kịch bản kiểm thử BDD, xây dựng một bộ dữ liệu lớn hơn các ca kiểm thử, và cải tiến các công cụ kiểm thử tự động hiện có.

6.1. Bài học kinh nghiệm từ luận văn về mã kiểm thử BDD

Như đã đề cập ở chương 3, Cucumber là công cụ tự động sử dụng cho kiểm thử, chạy các ca kiểm thử chấp nhận dưới dạng BDD. Trong framework kiểm thử này, sử dụng hầu hết các thư viện đã xây dựng của Cucumber.

6.2. Hướng nghiên cứu tiếp theo về tự động hóa kiểm thử BDD

Từ việc chạy công cụ kiểm thử tự động trong kiểm thử dựa trên kịch bản BDD ta có thể thấy được quy trình tự động, cũng như phương pháp phát triển, cải tiến công cụ kiểm thử tự động hiện có.

23/09/2025

Trích đoạn nội dung tài liệu

MỞ ĐẦU Ứng dụng tự động hoá trong nhiều lĩnh vực ngày càng phát triển. Trong lĩnh vực làm phần mềm càng lúc lại càng được tự động hóa nhiều hơn. Kiểm thử là một trong những giai đoạn làm phần mềm, làm sao để tự động và đơn giản hóa quá trình kiểm thử đang là một vấn đề được quan tâm. Luận văn tập trung nghiên cứu về kiểm thử động hướng hành vi.

Từ việc nghiên cứu sinh mã kiểm thử tự động của các công cụ kiểm thử tự động, luận văn áp dụng ứng dụng công cụ vào kiểm thử và tìm hiểu phương pháp xây dựng công cụ kiểm thử tự động trong kiểm thử hướng hành vi.1 Khái quát vấn đề Kiểm thử phần mềm theo hướng kiểm thử hướng hành vi (BDD – Behavior Driven Testing) [2] là một khái niệm mở rộng của TDD (Test Driven Development). TDD là khái niệm kiểm thử theo hướng kiểm thử từng phần, viết ca kiểm thử [12] trước rồi lập trình sau. Trong kiểm thử hướng hành vi dựa trên yêu cầu của người sử dụng chúng ta xây dựng các ca kiểm thử. Một trong những điểm yếu khi lập trình phần mềm là rất khó để đáp ứng được đúng yêu cầu của người sử dụng, có nhiều nguyên nhân, trong đó có nguyên nhân là người lập trình không hiểu được yêu cầu người dùng.

Vì vậy nếu sử dụng được trực tiếp ngôn ngữ của người sử dụng vào các ca kiểm thử thì sẽ có được một phần mềm đúng với yêu cầu người sử dụng mà không lãng phí nhiều tài nguyên. Đồng thời kiểm thử tự động với mã kiểm thử hướng hành vi sẽ giúp tiết kiệm nguồn nhân lực kiểm thử, giảm thiểu tối đa chi phí làm phần mềm, sản phẩm. Qua tìm hiểu một số công cụ kiểm thử tự động trong kiểm thử hướng hành vi hiện nay sinh phương thức kiểm thử nhưng không sinh thân hàm kiểm thử. Ví dụ với công cụ kiểm thử tự động Cucumber, Từ kịch bản kiểm thử ngôn ngữ tự nhiên: Feature: search Wikipedia Scenario: direct search article Given Enter search term 'Cucumber' When Do search Then Single result is shown for 'Cucumber' TIEU LUAN MOI download : skknchat@gmail.com 2 Thông qua công cụ kiểm thử tự động, các phương thức được sinh ra như sau: @Given ("^Enter search term 'Cucumber'$") public void enter_search_term_Cucumber() throws Throwable { // Write code here that turns the phrase above into concrete actions } @When("^Do search$") public void do_search() throws Throwable { // Write code here that turns the phrase above into concrete actions } @Then("^Single result is shown for 'Cucumber'$") public void single_result_is_shown_for_Cucumber() throws Throwable { // Write code here that turns the phrase above into concrete actions } Tuy nhiên, công cụ tự động hiện tại không sinh được thân hàm do vậy cần đưa phương án để sinh thân các phương thức để tự động kiểm thử với kịch bản kiểm thử BDD đã có.2 Giải pháp Giải pháp luận văn đưa ra là nghiên cứu sinh các mã kiểm thử tự động từ kịch bản kiểm thử hướng hành vi.

Đồng thời sử dụng framework Cucumber kết hợp tích hợp các công cụ để kiểm thử tự động trong kiểm thử hướng hành vi dựa trên viết mã kịch bản kiểm thử bằng ngôn ngữ tự nhiên có cấu trúc. Từ việc nghiên cứu quy trình xử lý ngôn ngữ tự nhiên dựa trên NLP ( Natural Language TIEU LUAN MOI download : skknchat@gmail.com 3 Processing) luận văn cũng đưa ra và phân tích tự động hóa trong kiểm thử hướng hành vi. Với một từ điển các ca kiểm thử trên ngôn ngữ tự nhiên, từ dữ liệu đó có một hành vi tương ứng khi đọc đến ca kiểm thử hành vi đối với phần mềm đang xây dựng. Khi đó, mỗi lúc gọi đến kịch bản kiểm thử sẽ dẫn đến hành vi xử lý trong phần mềm tương ứng khác nhau.

Luận văn đề xuất phương án xây dựng một bộ dữ liệu bao gồm các ca kiểm thử dưới dạng ngôn ngữ tự nhiên và các ca kiểm thử tự động sinh tương ứng. Từ dữ liệu đó, áp dụng ứng dụng NLP và công cụ kiểm thử tự động hướng hành vi để khi gọi đến ca kiểm thử, các kịch bản tự động sinh ra các bước kiểm thử hướng hành vi tương ứng. Tuy nhiên khối lượng dữ liệu là lớn, do vậy trong luận văn chỉ đưa ra phương pháp và sử dụng công cụ tự động trong kiểm thử hướng hành vi để sinh phương thức là các hàm mà chưa tự động hoá được hoàn toàn sinh các thân hàm kiểm thử. Từ việc chạy công cụ kiểm thử tự động trong kiểm thử dựa trên kịch bản BDD ta có thể thấy được quy trình tự động, cũng như phương pháp phát triển, cải tiến công cụ kiểm thử tự động hiện có.3 Bố cục luận văn Phần còn lại của luận văn gồm các nội dung chính như sau: Chương 2 Đưa ra các kiến thức nền tảng về quy trình phần mềm, một số khái niệm về tự động hóa trong kiểm thử đồng thời cũng giới thiệu một số công cụ tự động trong kiểm thử tự động BDD, các ứng dụng có thể của xử lý ngôn ngữ tự nhiên trong kiểm thử phát triển phần mềm.

Chương 3 Giới thiệu khái quát, ưu, nhược điểm, cách hoạt động của một số công cụ kiểm thử tự động thường dùng trong kiểm thử hướng hành vi. Đồng thời đưa ra một số ví dụ kiểm thử với các công cụ đưa ra để rút ra kết luận và so sánh giữa các công cụ kiểm thử tự động trong kiểm thử hướng hành vi. Chương 4 Cài đặt và chạy thực nghiệm Framework kiểm thử tự động với BDD và đưa ra quy trình, viết cơ sở dữ liệu chạy cho công cụ. Dựa trên tìm hiểu các kiến thức và công cụ tự động trong kiểm thử, luận văn phân tích và đưa ra phương pháp sinh mã kiểm thử tự động dựa trên quy trình xử lý ngôn ngữ tự nhiên.

TIEU LUAN MOI download : skknchat@gmail.com 4 Yêu cầu của người dùng Tự động sinh mã kiểm Thực thi kiểm thử dựa trên BDD thử cho phần mềm thực phần mềm thi Hình 1-1 Tiến trình sinh mã kiểm thử tự động dựa trên kịch bản BDD Chương cuối cùng sẽ là các kết luận và hướng phát triển. TIEU LUAN MOI download : skknchat@gmail.com 5 CHƯƠNG 2: MỘT SỐ KIẾN THỨC NỀN TẢNG 2. Phát triển phần mềm dựa trên phương pháp Agile Trong nhiều thế kỉ qua, có nhiều quy trình phần mềm được ứng dụng trong các doanh nghiệp, tổ chức làm phần mềm như quy trình thác nước, quy trình xoắn ốc một cách thành công. Tuy nhiên với nhiều yêu cầu phức tạp trong nhu cầu làm phần mềm ngày nay quy trình luôn được đổi mới và lặp đi lặp lại.

Agile [11] là phương pháp phát triển phần mềm theo hướng linh hoạt, chia quy trình là các pha nhỏ để phát triển phần mềm. Quy trình Agile có các đặc điểm sau: ● Các công việc trong tiến trình làm phần mềm được chia và kết hợp lại từ các giai đoạn làm phần mềm khác nhau. ● Phần mềm được triển khai dựa trên tài liệu hướng dẫn. ● Khách hàng được đàm phán thông qua hợp đồng.

● Phản hồi thay đổi theo kế hoạch một cách nhanh chóng, linh hoạt. Agile là sự kết hợp của sự đa dạng các quy trình làm phần mềm truyền thống khác nhau như: Scrum, RUP…Với tiến trình Agile phần mềm được phát triển một cách linh hoạt, tạo ra một sự kết hợp giữa các phương pháp phát triển một cách chặt chẽ. Quy trình Agile đã kết hợp nhiều phương thức phát triển tiên tiến như: Test Driven Development (TDD- phát triển phần mềm kiểm thử), Behavior Driven Development (BDD- Phát triển theo hướng hành vi),… ❏ Kiểm thử phần mềm trong quy trình Agile Quy trình Agile là mô hình phát triển linh hoạt, phát triển dựa trên quy trình lặp. Đặc điểm của quy trình này là: dự án được chia thành các mảng, module nhỏ để dễ sử dụng và nhanh chóng thay đổi khi yêu cầu khách hàng thay đổi, các phần nhỏ sẽ được kiểm thử ngay trong khi làm dự án mà không cần đợi đến khi kết thúc dự án.

Trong quy trình phát triển phần mềm theo tiến trình Agile sản phẩm được xây dựng tốt ngay từ đầu, sau đó nhận các phản hồi của khách hàng và cải tiến lại sao cho đúng yêu cầu. Kiểm thử phần mềm trong quy trình phát triển phần mềm Agile không phải là một giai đoạn của dự án nữa mà là một phần của dự án ngay từ đầu. Để đạt được chất lượng phần mềm tốt với bất kì quy trình phát triển phần mềm nào, kiểm TIEU LUAN MOI download : skknchat@gmail.com 6 thử luôn là một giai đoạn tốn kém và mất nhiều chi phí, nhân công. Đặc biệt là trong quy trình Agile với sự linh hoạt và chia nhỏ các module phát triển, nhân công cho kiểm thử càng gia tăng, chất lượng phần mềm càng khó kiểm soát và tốn nhiều kinh phí.

Chính vì vậy, kiểm thử được đánh giá là khá mất thời gian và công sức của cả nhóm phát triển phần mềm Tự động hóa kiểm thử là một việc làm giúp cải thiện chất lượng phần mềm mà không mất nhiều thời gian, qua mỗi lần thay đổi yêu cầu của người dùng dự án lại được xây dựng lại do đó kiểm thử cần chính xác và đảm bảo nhanh chóng kịp. Trong quy trình Agile, chu trình thực hiện các ca kiểm thử bị dồn lại khá nhiều thời gian dành cho kiểm thử hồi quy là khá ít, ứng dụng kiểm thử tự động trong quy trình Agile là một việc làm thiết yếu. Phát triển phần mềm hướng kiểm thử (TDD) Test - Driven development - TDD là phát triển phần mềm theo hướng kiểm thử. Người lập trình sẽ viết một đoạn một đoạn mã để kiểm thử mã thực thi của chương trình, sau đó viết mã chương trình.

Từ kết quả của mã kiểm thử để cải thiện, thay đổi lại code của chương trình. Trong quy trình phát triển phần mềm theo hướng kiểm thử từng phần, có nhiều quy trình sẽ được lặp đi lặp lại, các yêu cầu được xác định rõ hơn làm cho phần mềm đáp ứng được yêu cầu khách hàng một cách đầy đủ, rõ ràng hơn. Test Refactor code Hình 2-1. Quy trình TDD Trong quy trình TDD, phần mềm được phát triển theo hướng kiểm phát triển kiểm thử trước, sau đó từ kết quả kiểm thử người phát triển điều chỉnh lại mã nguồn sao cho đúng với yêu cầu nghiệp vụ của dự án.

Các ưu điểm của phát triển phần mềm hướng kiểm thử [12] là: TIEU LUAN MOI download : skknchat@gmail.com 7 - Khả năng kiểm thử: khả năng kiểm thử của hệ thống được cải thiện thông qua hoạt động viết ca kiểm thử trước, khiến cho các lập trình viên khi lập trình sẽ phải nghĩ về việc làm sao để chương trình đáp ứng được đúng ca kiểm thử và yêu cầu đã thiết kế.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ