Mục đích chính BDD là cung cấp một kỹ thuật để phát triển phần mềm theo đúng mong muốn của khách hàng, việc áp dụng phát triển phần mềm hƣớng hành vi dựa trên ba nguyên lý cơ bản[7]:
Đủ là đủ (enough is enough): đô ̣i phát triển cần nổ lực đủ để bàn giao cho khách hàng phần mềm đúng theo yêu cầu của họ. Điều này có nghĩa là phải dành đủ thời gian cho việc phân tích, lập kế hoạch và thiết kế phần mềm, nhƣng chỉ thực hiện những công việc trên mô ̣t số yêu cầu hê ̣ thống để đƣa vào vòng lă ̣p đầu tiên cài đặt hê ̣ thống.
Phân phối giá trị của các bên liên quan (deliver stakeholder value): Các bên liên quan ở đây không đơn thuần chỉ những ngƣời trả tiền để phát triển phần mềm, mà bao gồm tất cả các nhân tố đƣợc hƣởng lợi từ việc sử dụng phần mềm. Trong quá trình phát triển phần mềm, chỉ chú trọng đến những công việc mang lại lợi ích vàcần sớm loa ̣i bỏ các công việc không mang lại lợi ích hoặc không cải thiện đƣợc lợi ích cho ngƣời dùng.
Tập trung vào hành vi: BDD tập trung mô tả hành vi của ứng dụng ở tất cả các cấp độ.
Trong kỹ thuật phát tr iển phần mềm hƣớng hành vi , sau khi xác đi ̣nh các mục đích và kết quả của dự án, đô ̣i phát triển sẽ sƣ̉ du ̣ng sẽ mô tả hành vi của hê ̣ thống bằng BDD. Đó chính là các câu chuyê ̣n ngƣời dùng đƣợc mô tả theo mô ̣t dạng thức quy định, mỗi câu chuyê ̣n còn go ̣i là tính năng của hê ̣ thống . Các tính năng đƣợc mô tả chi tiết về các khía ca ̣nh ngƣời dùng , hoạt động, kết quả, giá trị nghiê ̣p vu ̣, … . Phần mô tả tính năng cũng bao gồm các tiêu chí để đánh giá hê ̣ thống theo quan điểm của ngƣời sƣ̉ du ̣ng , chúng chính là thƣớc đo để xây dựng các phƣơng thức kiểm thử chấp nhận cho hệ thống.
Ngày nay, các hệ thống sử dụng phƣơng pháp phát triển phần mềm hiện đại đƣợc hỗ trợ bởi rất nhiều công cu ̣ , đă ̣c biê ̣t là trong giai đoa ̣n kiểm thƣ̉. Mô ̣t số công cu ̣ kiểm thƣ̉ đơn giản dễ sƣ̉ du ̣ng bằng cách thông qua tƣơng tác với chuột và bàn phím, … . Tuy nhiên, kỹ thuật phát triển phần mềm hƣớng hành vi BDD ngoài mục đích kiểm thử chấp nhận tự động còn hỗ trợđô ̣i phát triển cài đặt mã nguồn dựa trên các đặc tả phần mềm. BDD mô tả các yêu cầu hê ̣ thống theo tƣ̀ng ki ̣ch bản sƣ̉ du ̣ng .Mỗi kịch bản xác định rõ ràng các bƣớc bao gồm ngƣ̃ cảnh sử dụng , các hoạt động , hành động và kết quả của kịch bản đó . Chính vì thế BDD vƣ̀a làm tài liê ̣u đă ̣c tả ,làm tài liê ̣u thiết kế phần mềm , vƣ̀a làm tài liệu chung cho các bên liên quan.
BDD tƣơng đối đơn giản, dễ hiểu, nó thể hiện khuôn khổ hoạt động dựa trên ba nguyên tắc:
i. Các hoạt động nghiệp vụ và kỹ thuật nên quy vào một mối, theo cùng một cách.
BDD mô tả các yêu cầu nghiệp vụ dƣới dạng các ngôn ngữ tự nhiên giúp cho các đối tƣợng không am hiểu ngôn ngƣ̃ kỹ thuật nhƣ khách hàng, ngƣời kiểm thử đọc đƣợc tài liê ̣u đă ̣c tả hê ̣ thống. Khách hàng có thể dễ dàng biết hệ thống sẽ làm gì và tạo ra kết quả gì ở các chức năng mà họ mong muốn. Kiểm thử viên biết đƣợc các tiêu chí để kiểm thử chấp nhận hê ̣ thống. Đội phát triển dựa vào tài liệu mô tả bằng BDD để xây dựng các phƣơng thức kiểm thƣ̉ và cà i đặt các chức năng tƣơng ứng. Các phƣơng thức kiểm thử có thể đƣợc sinh ra một cách tự động nhờ các công cụ hỗ trợ BDD cho ngôn ngữ lập trình mà đội phát triển muốn sử dụng.
BDD giúp thống nhất cách nhìn giữa các bên liên quan đến hệ thống đang phát triển do hệ thốngđƣợc xây dựng từ một tài liệu đặc tả duy nhất đểtránh các
lỗi hiểu nhầm yêu cầu, hoă ̣c lỗi xảy ra trong quá trình chuyển tƣ̀ tài liê ̣u đă ̣c tả sang tài liệu thiết kế.
ii. Mọi hệ thống nên được xác định nghiệp vụ và các thuộc tính kiểm thử của nghiệp vụ đó.
Với dƣ̣ án phần mềm sƣ̉ du ̣ng kỹ thuâ ̣t phát triển hƣớng hành vi BDD , các tính năng nên đƣợc xác định một cách rõ ràng. Bên cạnh mô tả vai trò sử dụng, các hoạt động cơ bản thì quá trình mô tả các tính năng nên đƣa ra các giá trị có thể làm tiêu chí kiểm thử chấp nhận. Việc xác định nghiệp vụ cũng nhƣ giá trị có thể kiểm thử rất quan trọng, nó quyết định thành công của dự án và cách thức làm việc của công cụ hỗ trợ.
iii. Phân tích, thiết kế, lập kế hoạch theo Up – Front.
Trƣớc khi mã hóa, mọi tính năng đều cần đƣợc phân tích, thiết kế và lập kế hoạch. Với đa số dƣ̣ án phần mềm , sau khi đã xác đi ̣nh yêu cầu hê ̣ thống , đô ̣i phát triển thƣờng vội vàng cài đặt mã nguồn cho yêu cầu , điều này thƣờng gây ra lỗi khi có sƣ̣ thay đổi yêu cầu . BDD bắt buô ̣c đô ̣i ph át triển phải mô tả tính năng theo da ̣ng thƣ́c mô tả đầy đủ các tiêu chí kiểm thƣ̉ chấ p nhâ ̣n, dƣ̃ liê ̣u kiểm thƣ̉ trƣớc khi viết các phƣơng thƣ́c kiểm thƣ̉ tƣơng ƣ́ng với các tiêu chí đã đề ra. Pha cài đă ̣t là pha cuối cùng trong mỗi vòng lă ̣p , viê ̣c cài đă ̣t ở đây nhằm mu ̣c đích đảm bảo cho các tiêu chí kiểm thƣ̉ chấp nhâ ̣n không bi ̣ bỏ sót và ở tra ̣ng thái thành công trƣớc khi chuyển sang vòng lặp kế tiếp.
Câu chuyện ngƣời dùng đƣợc coi là phần tử nguyên tử của BDD. Trong phƣơng pháp phát triển phần mềm hƣớng hành vi, phần mềm đƣợc tạo ra bằng cách gia tăng từng phần thông qua các vòng lặp, trƣớc mỗi vòng lặp đội phát triển sẽ chọn ra một tập các câu chuyện ngƣời dùng cho vòng lặp đó. Do đó vấn đề xác định câu chuyện ngƣời dùng cần đƣợc chú trọng để việc cài đặt diễn ra nhanh chóng.
Khi viết một câu chuyện ngƣời dùng, cần cân bằng các chi tiết của câu chuyện bằng các tiêu chí kiểm thử chấp nhận, sau khi viết xong các tiêu chí kiểm thửđó thì mới bắt đầu quá trình cài đặt.