1. Trang chủ
  2. » Mẫu Slide

Slide Test driven development

41 627 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 41
Dung lượng 1,87 MB

Nội dung

TDD là một kỹ thuật thiết kế với một hiệu ứng phụ là việc đảm bảo toàn bộ mã nguồn của bạn được thực hiện kiểm thử mức đơn vị. Tuy nhiên, có những điều còn quan trọng hơn cả việc thực hiện kiểm thử. Bạn sẽ vẫn cần xem xét các kỹ thuật kiểm thử khác như kiểm thử chấp nhận sản phẩm (acceptance test) hay kiểm thử dò hỏi (investigative test) theo kiểu Agile. Bạn có thể thực hiện nhiều những kiểu kiểm thử này trong dự án nếu như bạn chọn làm điều đó (và bạn nên làm).

LOGO Các vấn đề đại Công nghệ phần mềm Nhóm Test-driven Test-driven Development Development Giảng viên: TS. Võ Đình Hiếu Thành viên nhóm: Nguyễn Thị Ánh Phạm Anh Đạt (Nhóm trưởng) Nguyễn Thị Loan Nội dung Định nghĩa Tại PM nên phát triển theo hướng TDD? Chu trình phát triển Thuận lợi thách thức Định hướng phát triển Các khung kiểm thử TDD Demo Test-driven Development  Traditional development cycle  Test-driven development cycle Test-driven Development Định nghĩa  TDD phương pháp tiếp cận cải tiến phát triển PM dựa lặp lại chu kỳ phát triển:  Viết automated test case xác định cải thiện mong muốn chức mới.  Tạo lượng vừa đủ code để vượt qua test case đó.  Cấu trúc lại mã với tiêu chuẩn chấp nhận được. Test-driven Development Test-driven Development Test first Development TDD Refactoring Test-driven Development Phần mềm nên phát triển theo hướng TDD?  TDD cách kiểm thử truyền thống Kiểm thử truyền thống  TDD Một mẫu kiểm thử thành công tìm  nhiều lỗi. bạn cần phải giải số vấn đề.   Khi mẫu kiểm thử thất bại bạn biết Đạt 100% kiểm thử độ phủ mã Hệ thống có nhiều rủi ro lớn cần nguồn (coverage test) - dòng mã phải có nhiều mẫu kiểm thử thực hiện. kiểm thử. Test-driven Development Phần mềm nên phát triển theo hướng TDD? TDD kỹ thuật đặc tả, đem lại kết việc kiểm thử mã nguồn tốt đáng kể so với kỹ thuật truyền thống. TDD tăng niềm tin hệ thống bạn đáp ứng yêu cầu, hệ thống bạn hoạt động tiếp tục. Một lợi đáng kể TDD cho phép bạn thực bước nhỏ viết phần mềm. Test-driven Development Phần mềm nên phát triển theo hướng TDD?  Nhiều người cho kỹ thuật Agile hoạt động ổn với dự án nhỏ, cần số người vài tháng, chúng không hoạt động dự án thực lớn hơn. Tuy nhiên, điều không hoàn toàn đúng.  Ví dụ: hệ thống Smalltalk – TDD • năm, 40 man-year • 250,000 function code lines; 25000 test code lines • 4000 test case: ~ 20 – Bộ kiểm thử đầy đủ: ~ vài ngày  TDD hoạt động tốt với dự án có kích thước lớn. Test-driven Development Chu trình phát triển Test-driven Development Add a test  Mỗi tính bắt đầu cách viết test.  Test chắn phải thất bại viết trước tính thực hiện.  Để viết test, phải hiểu rõ đặc tả yêu cầu tính này. 10 Test-driven Development TDD cho công nghệ phát triển  TDD với truy cập liệu   Phương pháp truyền thống test truy cập liệu cách thủ công chậm dễ bị lỗi Chúng ta có lợi tương đối bất lợii việc áp dụng TDD với hội nhập chiến lược khác cho quan lý liệu  TDD  the unpredictable TDD với chức theo thời gian: trừu tượng hóa thời gian hệ thống , test với log output với thòi gian hệ thống giả  TDD với đa luồng: không quan tâm văn test cho hành vi liên tục mà hành vi đồng thời sau không gian lỗi lớn 26 Test-driven Development Hướng phát triển, TDD cho công nghệ phát triển  TDD với Swing  Internal plumbing and utilities: giao diện người dùng cách trình bày bố trí hình ảnh , điều nghĩa cách phần code thực tế không giống vớinhững viết phát triển hệ thống  Redering and layout: • • •   muốn đặt layout để xác nhận phần việc test Đôi cần test cho việc bố tri sthô cần bố trí “Button A nên button B bảng C đưa ra” ngược lại Interaction: loại tương tác test cách tâm thường. Chúng ta kiểm tra tương tác mong muôn dễ dàng miễnlà chugns ta biết Swing 27 Test-driven Development Nhược điểm Phức tạp B Đầu tư thời gian chi phí A C Gắn liền với thiết kế lớn TDD Liên quan chặt chẽ đến Agile D E 28 Cần phải tinh chỉnh liên tục Test-driven Development Nhược điểm  Đối với trường hợp đơn giản bạn khoảng 20% thời gian cài đặt , vơi dự án phức tạp lớn  Trong toán phức tạp khó tính testcase, trường hợp test tự động song song với thiết kế test đơn vị đơn giản  Nếu số không thiết kế rõ ràng từ đầu kết thúc  Với cấu trúc liệu kiểm thử hộp đen việc kiểm thử đơn vị hoàn hảo thuật toán có hướng thay đổi, tinh lại cần thời gian lớn. 29 Test-driven Development Nhược điểm  Liên quan chặt chẽ đến agile:   Trao đổi với khách hàng liên tục bạn đề xuất thực . Tất nằm tay nhà phát triển nên TDD tốt mà việc ghi chép cho tài liệu test phải rõ ràng ngược lại  Tài liệu lời thiệu mã , mà văn thức tồn bên ứng dụng 30 Test-driven Development VI. CÁC KHUNG KIỂM THỬ  Ý nghĩa khung kiểm thử với TDD?  Tìm hiểu khung kiểm thử?  Khung kiểm thử Python (Unittest) 31 Test-driven Development Tìm hiểu Unittest(UT) 1. Định nghĩa: • UT kỹ thuật kiểm nghiệm hoạt động chi tiết mã nguồn với quy trình tách biệt với quy trình phát triển phần mềm, giúp phát lỗi vấn đề tiềm ẩn kịp thời. • Tìm lỗi hay chí sửa lỗi từ ý tưởng thiết kế 2. Cấu trúc UT •. UT đoạn mã có cấu trúc đối tượng, xây dựng để kiểm tra phận hệ thống.Một UT bao gồm: • • Các kết trả mong muốn Các lỗi ngoại lệ mong muốn 32 Test-driven Development Tìm hiểu Unittest(UT) 3. Đặc điểm UT  Đóng vai trò người sử dụng hệ thống  Chỉ có giá trị chúng phát vấn đề tiềm ẩn lỗi kỹ thuật chương trình 33 Test-driven Development Tìm hiểu Unittest(UT) 4. Vòng đời UT PASS IGNORE FAIL Sau phát lỗi, Trạng thái phát lỗi chương trình thực thi UT Trạng thái tạm ngừng thực hiện, nhằm mục đích phân tích sửa lỗi phần mềm sửa lỗi thành công UT vượt qua hoàn thành xong nhiệm vụ 34 Test-driven Development Tìm hiểu Unittest(UT) 5. Thiết kế UT  Thiết lập điều kiện cần thiết: khởi tạo đối tượng, xác định tài nguyên cần thiết, xây dựng liệu giả .  Triệu gọi phương thức cần kiểm tra.  Kiểm tra hoạt động đắn phương thức.  Dọn dẹp tài nguyên sau kết thúc kiểm tra. 35 Test-driven Development Tìm hiểu Unittest(UT) 6. Ứng dụng UT  Kiểm tra đơn vị nhỏ thuộc tính, kiện, thủ tục hàm.  Kiểm tra trạng thái ràng buộc đối tượng mức sâu mà thông thường truy cập được.  Kiểm tra quy trình (process) mở rộng khung làm việc(workflow - tập hợp nhiều quy trình). 36 Test-driven Development Tìm hiểu Unittest(UT) 7. Chiến lược viết mã hiệu với UT  Phân tích tình xảy với mã.  Mọi UT phải bắt đầu với trạng thái “Fail” kết thúc trạng thái “Pass”.  Mỗi viết đoạn mã quan trọng, viết UT tương ứng bạn nghĩ thêm tình nữa.  Sớm nhận biết đoạn mã không ổn định có nguy gây lỗi cao, viết UT tương ứng để khống chế. 37 Test-driven Development KHUNG KIỂM THỬ PYUNIT 1. Khái niệm .PyUnit phiên ngôn ngữ Python JUnit, viết Kent Beck Erich Gramma. .PyUnit thư viện hỗ trợ việc kiểm tra tự động hóa, chia sẻ thiết lập ngừng việc thay đổi mã nguồn để thử nghiệm, tổng hợp test , chạy chúng cách độc lập sau trả báo cáo. Những module có sẵn unittest cung cấp lớp hỗ trợ cho tập hợp kiểm tra tương ứng 38 Test-driven Development KHUNG KIỂM THỬ PYUNIT 2. Cấu trúc đơn giản testCase 39 Test-driven Development DEMO Bài toán:   Input: Giá trị cạnh tam giác. Output: Kiểm tra đầu vào có thỏa mãn điều kiện tam giác? Nếu có, thuộc loại tam giác nào? Hướng giải quyết? 40 Test-driven Development LOGO Các vấn đề đại Công nghệ phần mềm Nhóm Thank You ! 41 [...]... các test 12 Test- driven Development Run tests Nếu tất cả các test cases đều pass, lập trình viên có thể tự tin rằng code đã đáp ứng được tất cả các yêu cầu 13 Test- driven Development Refactor code  Quá trình làm thay đổi code hiện có mà không cần thay đổi hành vi bên ngoài của nó   Có sự trùng lặp Thấy rằng code và/hoặc mục đích của nó không rõ ràng  Cảm thấy code có vấn đề 14 Test- driven Development. .. năng test : hỗ trợ giao diện cho các modules, class, những gì bạn có và được đảm bảo bởi QA  Giảm thời gian cho fix lỗi : fix các lỗi tốn hơn 40 lần so với việc viết code mới => test làm mịn + liên tục chạy test 17 Test- driven Development Ưu điểm Phát hiện lỗi sớm hơn, test Tìm lỗi dễ hơn design Phát hiện lỗi theo Từng bước nhỏ implement Xác định chức năng Cài đặt code theo các testcase test Viết test. .. đã phá vỡ cái gì đó Test pass, không cần phải làm gì nữa 19 Test- driven Development Ưu điểm  Tài liệu cho các nhà phát triển:   Các test mô tả sự hiểu biết của bạn về chức năng đó của dự án Việc thêm một vài comment trước mỗi test là bạn đã có một tài liệu hướng dẫn cho các nhà phát triển khác  Giảm bớt sự thay đổi    Thêm chức năng Yêu cầu mới Cấu trúc lại 20 Test- driven Development TDD cho... gồm: • • Các kết quả trả về mong muốn Các lỗi ngoại lệ mong muốn 32 Test- driven Development Tìm hiểu về Unittest(UT) 3 Đặc điểm của một UT  Đóng vai trò là người sử dụng đầu tiên của hệ thống  Chỉ có giá trị khi chúng có thể phát hiện các vấn đề tiềm ẩn hoặc lỗi kỹ thuật của chương trình 33 Test- driven Development Tìm hiểu về Unittest(UT) 4 Vòng đời của một UT PASS IGNORE FAIL Sau khi đã phát hiện... nhiệm vụ của mình 34 Test- driven Development Tìm hiểu về Unittest(UT) 5 Thiết kế UT  Thiết lập các điều kiện cần thiết: khởi tạo các đối tượng, xác định tài nguyên cần thiết, xây dựng các dữ liệu giả  Triệu gọi các phương thức cần kiểm tra  Kiểm tra sự hoạt động đúng đắn của các phương thức  Dọn dẹp tài nguyên sau khi kết thúc kiểm tra 35 Test- driven Development Tìm hiểu về Unittest(UT) 6 Ứng dụng... thời gian lớn 29 Test- driven Development Nhược điểm  Liên quan chặt chẽ đến agile:   Trao đổi với khách hàng liên tục về những gì bạn đề xuất thực hiện Tất cả nằm trong tay nhà phát triển nên TDD chỉ tốt khi mà việc ghi chép cho tài liệu test phải rõ ràng và ngược lại  Tài liệu không phải là một lời thiệu trong mã , mà là văn bản chính thức tồn tại bên ngoài ứng dụng 30 Test- driven Development VI...Run all tests and see if the new one fails Điều này xác nhận rằng test đang làm việc một cách chính xác và các test mới không pass nhầm mà không cần bất kỳ code mới nào Bước này cũng kiểm thử chính các test 11 Test- driven Development Write some code  Viết một số mã để pass Mã mới được viết trong giai đoạn này là... vấn đề 14 Test- driven Development Repeat  Bắt đầu với một test mới, chu kỳ sau đó được lặp đi lặp lại để hoàn thiện các chức năng 15 Test- driven Development Ưu điểm  Chất lượng  Hiệu quả  Xác định đúng chức năng  Hạn chế các lỗi bên trong  Giảm bớt sự thay đổi  Tài liệu cho nhà phát triển  Lập trình viên được làm chủ 16 Test- driven Development Ưu điểm  Chất lượng  Chất lượng trên nhiều khía... SampleController cần để làm, và đối tượng ModelAndView trả lại nói với Spring MVC cái nhằm trả lại các response 24 Test- driven Development TDD cho các công nghệ phát triển  Spring controllers Chúng ta bắt đầu viết test thứ nhất với ví dụ đăng nhập tương tự như trên với Spring MVC public class TestLoginController { @Test public void wrongPasswordShouldRedirectToErrorPage() throws Exception { MockHttpServletRequest... layout đúng để xác nhận như là một phần của việc test Đôi khi cần test cho việc bố tri sthô những gì chúng ta cần bố trí “Button A nên ở trên button B khi bảng C đưa ra” hoặc ngược lại Interaction: loại tương tác này không phải là có thể test một cách tâm thường Chúng ta có thể kiểm tra sự tương tác mong muôn dễ dàng miễnlà chugns ta biết Swing 27 Test- driven Development Nhược điểm Phức tạp B Đầu tư thời . nghệ phần mềm Test-driven Development Test-driven Development Nhóm 8 Giảng viên: TS. Võ Đình Hiếu Thành viên nhóm: Nguyễn Thị Ánh Phạm Anh Đạt (Nhóm trưởng) Nguyễn Thị Loan Test-driven Development Nội. triển 2 Các khung kiểm thử của TDD Demo  Traditional development cycle  Test-driven development cycle Test-driven Development 3 Test-driven Development Định nghĩa  TDD là phương pháp tiếp cận. first Development Test first Development Refactoring Refactoring Test-driven Development Test-driven Development 5 Phần mềm nên phát triển theo hướng TDD?  TDD và cách kiểm thử truyền thống Test-driven

Ngày đăng: 11/09/2015, 12:26

TỪ KHÓA LIÊN QUAN

w