Kịch bản seminar 2020.KCPM.LQVU Mã nhóm- Nội dung trình bày lý thuyết Trình bày nội dung, hình ảnh liên quan đến phương pháp Mã nhóm- Các công cụ dự định tìm hiểu Trình bày nội dung, hình ảnh liên quan đến phương pháp Mã nhóm- Nội dung dự kiến demo Trình bày nội dung, hình ảnh liên quan đến phương pháp Mã nhóm G1- Code Coverage là gì? -Khái niệm: Code coverage là độ phủ các dòng code đã được chạy qua các test case mà chúng ta đã viết. Cơ bản là xác định dòng code nào đã được thực thi, dòng code nào không được thực thi thông qua quá trình chạy thử. - Ý nghĩa của code coverage là đảm bảo các dòng code đã được chạy qua bởi các test case, do đó nếu ta xác định mục tiêu các Unit sai, chia các case sai thì vẫn sẽ có bug tồn tại, ở đây thường là các bug về logic, bug giữa các Unit với nhau. -Mục đích của Code Coverage là: -Để kiểm tra các bài test của chúng đã thực sự tốt như thế nào. -Để đảm bảo đã đủ các trường hợp hay chưa. -Để duy trì chất lượng của dự án trong suốt vòng đời của dự án. Mã nhóm G1- Các công cụ dự định tìm hiểu 1. dotCover( https://www.jetbrains.com/dotcover/ ) -Thông tin cơ bản về Tools: Phương pháp đánh giá độ bao phủ, định dạng báo cáo, hỗ trợ nền tảng nào, ngôn ngữ hỗ trợ, giấy phép, thời hạn sử dụng miễn phí hay không? , đánh giá độ khó, ưu điểm, nhược điểm… 1. EMMA( http://emma.sourceforge.net/ ) - Tương tự 1. 1. CodeCoverage Tools ( http://codecover.org/ ) - Tương tự 1. Mã nhóm G1- Nội dung dự kiến demo ● Chọn 1 trong 3 Tools tìm hiểu: -Hướng dẫn cài đặt công cụ -Giới thiệu giao diện chính, các chức năng quan trọng. -Hướng dẫn Import dữ liệu test, test case, tính năng cơ bản -Thực hiện test đơn giản. Mã nhóm D - Automation for Web 1. What is automated web testing? - Automated Website Testing là một quá trình mà các công cụ kiểm thử phần mềm khác nhau được sử dụng để đánh giá hiệu năng của website. Quá trình này diễn ra trong suốt giai đoạn phát triển phần mềm. - Automated Website Testing đề cập đến the process of automating end-user scenarios trên các website để kiểm tra hành vi của nó. These end-user scenarios are scripted by QAs using an automation framework like Selenium to mimic user interactions on a website’s UI. 1. When & Why? - Khi ứng dụng phức tạp và yêu cầu maintenance thường xuyên hay thậm chí là release tính năng mới. - Bởi vì, sản phẩm phần mềm ngày càng tăng kích thước, khu vực phạm vi ảnh hưởng càng lớn với những tính năng mới. Vì thế, quy trình manual testing cho toàn bộ ứng dụng lặp lại trên các thiết bị, platforms trở nên cồng kềnh và dễ thiếu sót gây lỗi. 1. Benefits & Advantages - Tiết kiệm thời gian, tăng tốc độ release và đảm bảo maximum test coverage with accurate results hơn. - Cung cấp phạm vi kiểm tra toàn diện và hiệu quả hơn manual testing. - Tìm và fix bug sớm giúp cho release sản phẩm nhanh hơn. - Những test scripts có thể tái sử dụng - Cung cấp kết quả test nhanh, nhất quán và chính xác. Mã nhóm D - Các công cụ dự định tìm hiểu 1. Selenium - Demo - Selenium là bộ kiểm thử tự động miễn phí (mã nguồn mở) dành cho các ứng dụng web trên các trình duyệt và nền tảng khác nhau. - Selenium không chỉ là 1 công cụ độc lập mà là 1 bộ công cụ của phần mềm, mỗi bộ đều đáp ứng được nhu cầu kiểm thử khác nhau của 1 tổ chức. Nó có 4 thành phần: Selenium Integrated Development Environment (IDE), Selenium Remote Control (RC), WebDriver và Selenium Grid. - Có rất nhiều Selenium C# frameworks được sử dụng cho test automation như: NUnit, XUnit, Gauge, MSTest, SpecFlow. - Some of the advantages of using the NUnit framework: + It is a robust and user-extensible test framework. + Attributes are an important part of the NUnit framework and they are instrumental in speeding up the execution of the test cases. + NUnit is open-source. + The framework is well-suited if you are planning to use Test-Driven Development (TDD) for the test activity. + Along with automated browser testing, NUnit framework can also be used for unit testing and acceptance testing using the Selenium framework. 1. Watir 2. Cucumber Mã nhóm D - Nội dung dự kiến demo - Giới thiệu sơ lược về công cụ mà nhóm tìm hiểu Giới thiệu giao diện và các chức năng cần test của SUT - YasuoShop Link website: http://shopshoeyasuo.herokuapp.com/ Demo môi trường, yêu cầu và một vài kịch bản test cơ bản. Sử dụng Selenium IDE để record/play một chức năng nào đó như giở hàng. Mã nhóm E1 - Kiểm thử tự động What is Automation Testing? Kiểm thử tự động là một kỹ thuật kiểm thử, trong đó sử dụng các công cụ đặc biệt để tự động hóa việc thực thi các bộ Test case. Không giống với việc kiểm thử tự động, kiểm thử thủ công được thực hiện bởi con người làm việc trước màn hình máy tính một cách cẩn thận để thực thi từng bước kiểm thử. Phần mềm kiểm thử tự động cũng có thể nhập vào các bộ dữ liệu mẫu (test data) vào System Under Test (SUT), so sánh kết quả dự kiến so với thực tế và tạo ra các bảng báo cáo chi tiết. Kiểm thử tự động yêu cầu sự đầu tư đáng kể về tiền và tài nguyên. Chu trình phát triển liên tục yêu cầu việc thực thi lặp lại các bộ test case giống nhau. Việc sử dụng các công cụ kiểm thử tự động giúp chúng ta có thể ghi lại các bộ test và có thể lặp lại nếu có yêu cầu. Một khi các bộ test được tự động hóa thì không cần đến sự can thiệp của con người. Điều đó có thể cải thiện được Tỷ suất hoàn vốn (ROI - Returns of Investments) của việc kiểm thử tự động. Mục tiêu của việc kiểm thử tự động là giảm bớt số lượng test case thủ công, tuy nhiên không thể loại trừ việc kiểm thử thủ công. Mã nhóm E1 - Kiểm thử tự động (Cont’d) Why Automated Testing? Kiểm thử tự động là một trong những cách tốt nhất để gia tăng hiệu quả công việc, độ phủ sóng của các test case, và tốc độ thực thi trong việc kiểm thử phần mềm. Kiểm thử phần mềm tự động thì quan trọng bởi vì các lý do sau: ● Việc kiểm thử thủ công mọi luồng làm việc (workflows), tất cả các trường, tất cả các kịch bản xấu thì tốn thời gian và tiền bạc. ● Việc kiểm thử thủ công cho các trang đa ngôn ngữ gặp nhiều khó khăn. ● Kiểm thử tự động không yêu cầu sự can thiệp của con người, việc kiểm thử tự động có thể thực hiện xuyên suốt. ● Kiểm thử tự động gia tăng tốc độ của việc thực thi các test case. ● Việc kiểm thử tự động có thể giúp gia tăng độ phủ sóng của test case. ● Việc kiểm thử thủ công có thể gây ra sự nhàm chán, và gây ra các lỗi không mong muốn. Mã nhóm E1 - Kiểm thử tự động (Cont’d) Which Test Cases to Automate? Những test case có thể tự động hóa có thể sử dụng các tiêu chí sau để có thể tăng tỷ suất hoàn vốn (ROI) ● Các test case với rủi ro cao. ● Các test case được lặp lại nhiều lần. ● Các test case rất dài hoặc khó để có thể thực hiện. ● Các test case tốn nhiều thời gian. Những loại test case không phù hợp với việc kiểm thử tự động ● Các test case mới được thiết kế và chưa thực thi lần nào. ● Các test case thường xuyên thay đổi yêu cầu. ● Các test case được thực thi theo phương pháp ad-hoc. Mã nhóm E1 - Kiểm thử tự động (Cont’d) Automated Testing Process Quy trình kiểm thử tự động được thực hiện theo các bước sau 1. Chọn công cụ kiểm thử. 2. Xác định phạm vi của việc kiểm thử tự động. 3. Lên kế hoạch, thiết kế và phát triển. 4. Thực thi test. 5. Bảo trì. Mã nhóm E1 - Kiểm thử tự động (Cont’d) Framework cho kiểm thử tự động Framework là một bộ chỉ dẫn có thể giúp đỡ trong việc ● Duy trì tính nhất quán của việc kiểm thử. ● Cải thiện cấu trúc của việc kiểm thử. ● Tối ưu hóa code. ● Giảm thiểu sự bảo trì code. ● Tăng tính tái sử dụng. ● Các tester bình thường có thể tham gia vào. ● Có thể giảm thiểu giai đoạn đào tạo để sử dụng các công cụ. 4 loại framework sử dụng trong kiểm thử tự động ● Data Driven Automation Framework. ● Keyword Driven Automation Framework. ● Modular Automation Framework. ● Hybrid Automation Framework. Mã nhóm E1 - Kiểm thử tự động (Cont’d) Benefits of Automation Testing ● ● ● ● ● ● ● ● ● ● ● ● ● Nhanh hơn kiểm thử thủ công 70%. Độ phủ sóng rộng hơn. Độ tin cậy trong kết quả. Đảm bảo tính nhất quán. Tiết kiệm thời gian và tiền bạc. Cải thiện độ chính xác. Không cần sự can thiệp của con người trong lúc thực thi. Tăng hiệu quả. Tốc độ tốt hơn. Tái sử dụng các test script. Thường xuyên và rõ ràng hơn. Có thể lưu trữ các chu trình. Hoàn thành sớm hơn. Mã nhóm E1 - Các công cụ dự định tìm hiểu Katalon Studio (Renarox Studio) Mã nhóm E1 - Nội dung dự kiến demo SUT: Ứng dụng Mattermost Test Scenario: 1. 2. 3. 4. 5. 6. Kiểm tra chức năng login Kiểm tra thêm 1 server Kiểm tra quản lý channel Kiểm tra thêm 1 member vào channel Kiểm tra chức năng nhắn tin hoạt động Kiểm tra chức năng app setting hoạt động Nhóm H - Nội dung trình bày lý thuyết ❖ Định nghĩa phương pháp kiểm thử (what): ➢ GUI testing: Graphical user interface- Kiểm tra đồ hoạ giao diện người dùng ➢ Browser Compatibility testing: Khả năng tương thích của trình duyệt, nghĩa là trang web/ ứng dụng web đã được phát triển có hoạt động như mong đợi trong bất kỳ trình duyệt nhất định nào hay không. ➢ Link checker: Kiểm tra link của trang web nào bị hỏng để tránh liên kết đến các trang web không hợp lệ ➢ Usability and UX testing: kiểm tra đo lường mức độ dễ dàng và thân thiện của một ứng dụng phần mềm, tập trung vào tính dễ sử dụng của người dùng, tính linh hoạt của ứng dụng trong xử lý các điều khiển và khả năng ứng dụng đáp ứng các mục tiêu của nó. Nhóm H - Nội dung trình bày lý thuyết ❖ Tầm quan trọng (why): Giao diện rất quan trọng trong việc tăng sức hút của ứng dụng với người dùng. Phương pháp kiểm thử này nhằm tìm ra các lỗi trên giao diện phần mềm, khả năng tương tích với nhiều nền tảng, thiết bị và trình duyệt khác nhau, tạo sự thân thiện với người dùng, để tăng cường trải nghiệm, sự hài lòng của người dùng khi sử dụng ứng dụng. ❖ Thời điểm áp dụng (when): ➢ Trong quá trình phát triển phần mềm: Developers thực hiện ➢ Trước khi phát hành/bàn giao phần mềm: QA thực hiện Nhóm H - Nội dung trình bày lý thuyết ❖ Đối tượng kiểm thử (Where): giao diện phần mềm ❖ Người thực hiện (Who): Developer, Tester và QA ❖ Phương thức thực hiện (How): ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ Kiểm tra kích thước, vị trí, căn chỉnh của các thành phần trên giao diện Kiểm tra những thông báo lỗi, cảnh báo Kiểm tra các phần khác nhau của màn hình Kiểm tra font chữ có dễ đọc được hay không, các lỗi sai chính tả Kiểm tra trên các kích thước màn hình khác nhau Kiểm tra kích thước, độ rõ nét, căn chỉnh của các hình ảnh Kiểm tra các thanh cuộn dựa theo kích thước của màn hình Kiểm tra các trường, hotkey, những thành phần bị vô hiệu Kiểm tra sự tồn tại, cách thể hiện của các liên kết Nhóm H - Các công cụ dự định tìm hiểu ❖ Cross browser testing tool: Lambda Test ❖ Link checker: Link Checker ❖ Usability and UX testing tool: Hot Jar Nhóm H - Nội dung dự kiến demo ❖ Software under test: web app “Super Market” ❖ Kịch bản kiểm thử: ❖ Phân hệ guess ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ Test scenario 1: Kiểm thử giao diện trang chủ Test scenario 2: Kiểm thử giao diện đăng nhập Test scenario 3: Kiểm thử giao diện đăng ký Test scenario 4: Kiểm thử giao diện khôi phục mật khẩu Test scenario 5: Kiểm thử giao diện danh sách sản phẩm Test scenario 6: Kiểm thử giao diện chi tiết sản phẩm Test scenario 7: Kiểm thử giao diện giỏ hàng Test scenario 8: Kiểm thử giao diện thanh toán ➢ Test scenario 9: Kiểm thử giao diện liên hệ ➢ Test scenario 10: Kiểm thử giao diện câu hỏi thường gặp (FAQs) Nhóm H - Nội dung dự kiến demo ❖ Kịch bản kiểm thử (t.t): ❖ Phân hệ member ➢ Test scenario 1: Kiểm tra giao diện quản lý tài khoản ➢ Test scenario 2: Kiểm tra giao diện quản lý mua hàng ❖ Phân hệ admin ➢ ➢ ➢ ➢ ➢ Test scenario 1: Kiểm thử giao diện bảng điều khiển Test scenario 2: Kiểm tra giao diện quản lý sản phẩm Test scenario 3: Kiểm tra giao diện quản lý người dùng Test scenario 4: Kiểm tra giao diện quản lý đơn hàng Test scenario 5: Kiểm tra giao diện thống kê ❖ Demo: Nhóm H - Demo Hotjar | Usability - UX testing tool Nhóm H - Demo Link Checker L1- Nội dung trình bày lý thuyết ❖ What - Định nghĩa? ➢ Cucumber là một Testing Tool hỗ trợ Sự phát triển của các luồng sự kiện (Behavior Driven Development, viết tắt là BDD). Nó cung cấp một cách viết các bài Test mà bất kì ai cũng có thể hiểu được như một văn bản tiếng Anh đơn giản sử dụng ngôn ngữ Gherkin. ➢ BDD (Phát triển theo hướng hành vi) Kiểm thử là một kỹ thuật phát triển phần mềm nhanh nhẹn và là một phần mở rộng của TDD (Test Driven Development), tức là Phát triển theo hướng kiểm tra. ➢ Gherkin là định dạng cho các thông số kỹ thuật của Cucumber. Nó là ngôn ngữ dành riêng cho domain giúp mô tả hành vi (UI) mà không cần phải đi vào triển khai chi tiết. ❖ Why - Tại sao lại cần nó? ➢ Cucumber được viết theo một văn bản tiếng Anh đơn giản sử dụng ngôn ngữ Gherkin ➢ Trước khi có Gherkin, các vấn đề về giao tiếp và kiểm thử theo yêu cầu vô cùng khó khăn: Từ ngôn ngữ nói → Ngôn ngữ lập trình → Ngôn ngữ test dễ gây lỗi không hiểu từ 1 trong 3. ➢ Sau khi có Gherkin, vấn đề về Kiểm thử theo yêu cầu được giải quyết một cách thống nhất bằng ngôn ngữ có thể hiểu được (dễ hiểu) cho nhiều người dù không có trình độ chuyên môn cao L1 - Nội dung trình bày lý thuyết ❖ When - Thực hiện khi nào? ➢ Testing level: Acceptance testing ❖ Who - Ai sẽ thực hiện? ➢ Developer, Tester, BA, User ❖ Where - Đối tượng áp dụng? ➢ Các giao diện phần mềm L1 - Nội dung trình bày lý thuyết ❖ How - Thực hiện như thế nào? ➢ Cucumber test cases được viết song song với quá trình phát triển phần mềm. Các test case này được gọi là steps trong ngôn ngữ Gherkin. ➢ Đầu tiên Cucumber đọc các steps được viết bằng ngôn ngữ Gherkin trong feature file. ➢ Sau đó, nó tìm kiếm steps này trong step definition file (sẽ định nghĩa cách thức hoạt động và assert các kết quả thu được để kiểm tra các step có hoạt động một cách chính xác hay không). Nếu trùng khớp thì sẽ thực hiện chạy test case và cung cấp kết quả pass/fail sau khi chạy xong. ➢ Ngoài ra Cucumber hỗ trợ một số các phương thức helper điển hình như hooks cho phép chúng ta có thể thực các công việc nhất định tại một thời điểm thực thi các test case như trước khi bắt đầu một Scenario hay sau khi kết thúc một Scenario, ... L1- Các công cụ dự định tìm hiểu ❖ Cucumber: https://cucumber.io/docs/cucumber/ L1- Nội dung dự kiến demo ❖ ❖ ❖ ❖ Giới thiệu sơ lược công cụ mà nhóm tìm hiểu Hướng dẫn cài đặt và sử dụng công cụ Giới thiệu giao diện chính, các chức năng quan trọng của web Demo ❖ Link tham khảo: https://youtu.be/Y691be6IudM Nhóm F2 - Performance Testing ★ Các khái niệm: ○ Performance Testing: kiểm tra hiệu năng, tốc độ, độ phản hồi, độ ổn định, độ tin cậy,... của một phần mềm dưới môi trường làm việc nhất định. ○ Load Testing: kiểm tra khả năng hoạt động của ứng dụng khi người dùng load. ○ Stress Testing: kiểm thử ứng dụng dưới môi trường làm việc nặng để xem thử cách mà ứng dụng xử lí tắc nghẽn hoặc dữ liệu lớn. ○ Endurance Testing: kiểm tra xem ứng dụng có thể xử lí load như mong đợi trong khoảng thời gian dài. ○ Spike Testing: kiểm tra phản ứng của ứng dụng khi đột ngột tăng lượng load từ người dùng. ○ Volume Testing: kiểm thử phần mềm bằng nhiều khối lượng cơ sở dữ liệu khác nhau. ○ Scalability Testing: quyết định xem phần mềm có hiệu quả khi mở rộng để hỗ trợ tăng lượng user load, lập kế hoạch bổ sung khả năng cho hệ thống. ★ Tiến trình: Nhóm F2 - Các công cụ cho Performance Testing 1. Webserver Stress Tool: Webserver Stress Tool là một ứng dụng kiểm thử HTTP-client/server được thiết kế để xác định vấn đề performance của website hoặc web server làm cản trở trải nghiệm người dùng. A. B. Công cụ có thể giả lập hàng trăm, hàng triệu HTTP request Hỗ trợ nhiều loại testing: Performance Tests, Load Tests, Stress Tests, Ramp Tests,… 2. Jmeter performance testing tool: Jmeter là một phần mềm cái mà có thể sử dụng để chạy thử nghiệm hiệu suất, thử nghiệm tại và thử nghiệm chức năng của ứng dụng web. JMeter cũng có thể mô phỏng tải nặng trên máy chủ bằng cách tạo hàng tấn người dùng ảo đồng thời lên máy chủ web. 3. LoadUI. A. B. C. Nhanh chóng tạo ra các bản kiểm thử tải. Kiểm thử tốc độ và khả năng mở rộng, nhưng đổi mới của API trong vài giây. Thực hiện kiểm thử trước hiệu năng của API trước khi đưa ra môi trường sản xuất. Nhóm F2 - Kịch bản demo Kịch bản: Test hiệu năng của trang web khi nhiều users truy cập cùng một lúc Thực hiện: B1: Thiết lập Test Plan: -Tạo Thread mới và thiết lập users, rampup time, loop. -Tạo các Sampler: HTTP Request để chỉ định các trang cần test load. - Lưu lại test plan với định dạng jmx. B2: Thực hiện bài Test: - Mở CMD, cd đến thư mục chứa file jmeter. - Thực hiện câu lệnh: jmeter -n -t [đường dẫn đến file .jmx] -l [đường dẫn đén file .csv] -f -e -o [đường dẫn đến thư mục xuất file report] Nhóm F2 - Kịch bản demo Ví dụ câu lệnh: jmeter -n -t \APP\apache-jmeter-5.3\bin\LoadTests\loadtest.jmx -l \APP\apachejmeter-5.3\bin\LoadTests\report.csv -f -e -o \APP\apache-jmeter-5.3\bin\LoadTests\HTMLreport Kết quả: màn hình cmd thực hiện, file report html: index.html Link video demo: https://youtu.be/ZpHtl9wAZm0 K1 - Nội dung trình bày lý thuyết WHAT - Khái niệm CI. CI làgiảm Continuous Nó là phương pháp phát phần mềm yêutích cầuhợp các thành viên team tích hợp việc củahợp họphát thường xuyên, mỗi ngày íttriển nhất một lần.hơn. Mỗi được tự động (bao gồmcông cả Integration. test) nhằm hiện lỗi phát nhanh nhất có thể. Cả team nhận thấy rằng cách"build" tiếp của cận này thiểu vấn đề tích và cho phép triển phần mềm nhanh WHY - Lý do CI: ○ ○ ○ ○ Giảm thiểu rủi ro lỗi do được phát hiện sớm. Giảm thiểu những quy trình thủ công lặp đi lặp lại, thay vì đó là build tự động, chạy test tự động. Tạo ra phần mềm chất lượng sớm nhất có thể và sẵn sàng triển khai mọi lúc mọi nơi. Cải thiện chất lượng phần mềm. K1 - Nội dung trình bày lý thuyết WHAT - Khái niệm CD. Trong khi Continuous quy trình đểNhững build và test tựrelease động, thì Continuous Delivery (tạm dịch làkhi chuyển giao liênIntegration tục) lại nâng cao hơn một chút, bằng khai tất testing, cả đổi về code (đã được build và test) đến môi trường testing hoặc staging. Continuous Delivery chothay phép developer tự động hóa phần testing bên cạnh việc sử dụng unit test, kiểm tratriển phần mềm qua nhiều thước đo trước triển khai cho khách hàng bài testcách này bao gồm UI load testing, integration testing, API testing... Nólà(production). tự động hoàn toàn quy trình phần mềm. WHY - Lý do sử dụng CD: ○ ○ Việc test trước khi triển khai lên môi trường production là tự động do đó tiết kiệm được chi phí và thời gian xử lý công việc. Nâng cao tốc độ triển khai , hiệu quả và liên tục khi có thêm các update mới. K1 - Nội dung trình bày lý thuyết WHO - Người thực hiện CI/CD: Devops. WHEN - Thực hiện khi nào: Trong suốt quá trình dự án cho tới khi deploy Production. WHERE - Thực hiện ở đâu: K1 - Các công cụ tìm hiểu Jenkins là một phần mềm tự động hóa, mã nguồn mở được viết bằng Java, đóng vai trò máy chủ build & test của hệ thống tích hợp liên tục. - Là trái tim của CI - Là CI server (build & test server) giữ vị trí trung tâm “trái tim” cho mọi hoạt động của hệ thống . - CI giúp khép kín quy trình phát triển phần mềm một cách tự động. + Nhờ vào việc hỗ trợ đa nền tảng, công nghệ Jenkins giúp khép kín quy trình phát triển phần mềm một cách tự động theo mô hình Agile nói chung và hệ thống tích hợp liên tục nói riêng. + Với hơn 400 plugin và được phát triển thêm không ngừng Jenkins đã trở thành trợ thủ đắc lực cho hệ thống CI. - Dễ dàng cài đặt và sử dụng. - Đa nền tảng. - Hỗ trợ cho nhiều công nghệ phát triển phần mềm - Được sử dụng rộng rãi. - Dễ mở rộng. - Dễ dàng liên kết với các công cụ khác của hệ thống tích hợp liên tục thông qua các plug in. - Miễn phí. Travis CI là một dịch vụ tích hợp liên tục được lưu trữ được sử dụng để xây dựng và kiểm tra các dự án phần mềm được lưu trữ tại GitHub và Bitbucket. Travis CI là một công cụ CI tuyệt vời, dễ sử dụng. So với Jenkins thay vì phải thiết lập server, TravisCI cung cấp dịch vụ web với UI bắt mắt, dễ dàng setup hơn, thích hợp cho các project nhỏ. Tuy nhiên, với các project lớn hơn, Jenkins lại khẳng định mình qua kho tính năng khổng lồ với các plugin độc đáo, đồng thời config được nhiều hơn là config qua file .yaml như TravisCI. Tóm tắt: https://www.guru99.com/jenkins-vs-travis.html - Travis CI rất nhanh chóng và đơn giản để thiết lập - Nó tích hợp hoàn hảo với GitHub - Giúp các dev phát hiện nhanh lỗi phát sinh và đối ứng kịp thời - Cho phép bạn kiểm tra trên hệ điều hành Mac và Linux cùng một lúc - Lưu trữ trên đám mây - Cho phép test trên nhiều môi trường, thiết bị, hệ điều hành - Các dự án mã nguồn mở không giới hạn với đầy đủ chức năng K1 - Nội dung dự kiến demo - Hướng dẫn cài đặt công cụ - Giới thiệu công cụ và các chức năng - Demo Unit Test , SCM, Auto Build Nhóm F1 - Performance Testing Performance Testing là gì? (WHAT) ● Performance Testing- Kiểm thử hiệu năng là kiểm tra về tốc độ, thời gian phản hồi, độ tin cậy, sử dụng tài nguyên, khả năng mở rộng của một chương trình phần mềm. Mục đích của Kiểm tra hiệu năng không phải là tìm ra các lỗi chức năng mà là để loại bỏ các tắc nghẽn về hiệu suất trong phần mềm hoặc thiết bị. Tại sao cần sử dụng Performance Testing? (WHY) ● ● ● ● Hiệu năng của một ứng dụng phần mềm như thời gian phản hồi, độ tin cậy, sử dụng tài nguyên và khả năng mở rộng của nó rất quan trọng. Kiểm thử hiệu năng được thực hiện để cung cấp cho các bên liên quan thông tin ứng dụng về tốc độ, tính ổn định và khả năng mở rộng. Nếu không có kiểm thử hiệu năng, phần mềm có thể gặp phải các vấn đề như: chạy chậm trong khi một số lượng người dùng nhất định sử dụng đồng thời, sự không nhất quán trên các hệ điều hành khác nhau và khả năng sử dụng kém. Kiểm thử hiệu năng sẽ xác định xem phần mềm của họ có đáp ứng các yêu cầu về tốc độ, khả năng mở rộng và độ ổn định theo dự kiến hay không. Kiểm tra hiệu năng để đảm bảo ứng dụng chạy trong một thời gian dài mà không bị sai lệch. Nhóm F1 - Performance Testing Các loại Performance Testing : ● ● ● ● ● ● Load testing: tìm ngưỡng capacity của server để xác định ngưỡng có thể chịu tải được của hệ thống. Stress testing: liên quan đến việc kiểm tra một ứng dụng trong một khối lượng công việc cực lớn để xem cách nó xử lý lưu lượng truy cập cao hoặc xử lý dữ liệu như thế nào. Mục tiêu là xác định "breaking point" của một ứng dụng ( làm cho hệ thống chết không phản hồi được nữa) Endurance testing: được thực hiện để đảm bảo phần mềm có thể xử lý tải dự kiến trong một khoảng thời gian dài. Spike testing: kiểm tra phản ứng của phần mềm đối với các đột biến do có 1 lượng tải lớn từ người dùng trong một khoảng thời gian ngắn. Volume testing: Kiểm tra khả năng chịu tải của phần mềm với một lượng dữ liệu nhất định( thường là ngưỡng do spec mong muốn từ đầu). Scalability testing: Mục tiêu của kiểm tra khả năng mở rộng là xác định tính hiệu quả của ứng dụng phần mềm trong việc "nhân rộng" để hỗ trợ tăng tải người dùng. Nó giúp lập kế hoạch bổ sung khả năng đáp ứng của hệ thống với nhu cầu tăng dần. Nhóm F1 - Performance Testing Nhóm F1 - Các công cụ dự định tìm hiểu ● K6: k6 là công cụ kiểm tra tải mã nguồn mở hiện đại cung cấp trải nghiệm xuất sắc cho nhà phát triển để kiểm tra hiệu suất của các API và trang web. Đây là một công cụ CLI có nhiều tính năng và dễ sử dụng với các trường hợp thử nghiệm được viết bằng ES5.1 JavaScript và hỗ trợ các giao thức HTTP / 1.1, HTTP / 2 và WebSocket. ● WebLOAD: Công cụ kiểm tra hiệu suất và tải cấp doanh nghiệp cho các ứng dụng web. WebLOAD là công cụ được lựa chọn cho các doanh nghiệp có lượng người dùng lớn và các yêu cầu kiểm tra phức tạp. Nó cho phép thực hiện kiểm tra tải và trên bất kỳ ứng dụng internet nào bằng cách tạo tải từ đám mây và các máy tại chỗ. ● Smartmeter.io: Có thể tạo các kịch bản thử nghiệm mà không cần tập lệnh chỉ bằng cách nhấp vào trình duyệt được nhúng. Cũng không cần thiết lập proxy hoặc plugin trình duyệt. Nó có các báo cáo được tạo tự động với tất cả các chi tiết về thử nghiệm và kết quả của nó. Nhóm F1 - Nội dung dự kiến demo - Công cụ: K6 Nội dung: 1. Giới thiệu K6 2. Hướng dẫn cài đặt 3. Demo load testing 4. Demo stress testing Nhóm B1 - Database testing (Unit test for Database) Nội dung trình bày lý thuyết 1. Database testing là gì ? Kiểm thử cơ sở dữ liệu là là một loại kiểm thử phần mềm giúp kiểm tra xác minh dữ liệu, sự liên kết các bảng , các trigger ,việc hiển thị dữ liệu từ database lên giao diện ... 2. Quy trình kiểm thử cơ sở dữ liệu ? Nhóm B1 - Database testing (Unit test for Database) Nội dung trình bày lý thuyết 3. Vì sao cần phải thực hiện database testing ? I. Đảm bảo tính thống nhất của dữ liệu (Data mapping) Xác định dữ liệu của một bảng này tương ứng với dữ liệu nào trong bảng khác. Vấn đề này có ý nghĩa quan trọng: Di chuyển dữ liệu, Phân tích dữ liệu, Hợp nhất các dữ liệu. I. Đảm bảo các thuộc tính ACID (ACID properties) Tính nguyên tố (Atomicity), Tính nhất quán (Consistency), Tính độc lập (Isolation), Tính bền vững (Durability) -> Đảm bảo các tính chất ACID để tránh trường hợp dữ liệu tại các bước của một thao tác không khớp, không liên kết với nhau dẫn đến tình trạng thất thoát hoặc sai dữ liệu. I. Đảm bảo tính toàn vẹn dữ liệu (Data Integrity) Duy trì tính chính xác và nhất quán của dữ liệu, ngăn chặn những truy cập trái phép. Kiểm thử cơ sở dữ liệu giúp đảm bảo các giá trị dữ liệu và thông tin nhận được, lưu trữ vào cơ sở dữ liệu có hợp lệ hay không, giúp hạn chế mất dữ liệu. Nhóm B1 - Database testing (Unit test for Database) Nội dung trình bày lý thuyết 4. Các loại database testing ? ● ● ● Kiểm thử cấu trúc CSDL(Structural Database Testing): kiểm tra tất cả các phần tử bên trong CSDL, được sử dụng cho việc lưu trữ dữ liệu, không cho phép người dùng cuối thao tác trực tiếp. Các truy vấn SQL được sử dụng để kiểm thử trong việc kiểm thử cấu trúc. Kiểm thử chức năng (Functional Database Testing : kiểm tra các yêu cầu chức của 1 database trên phương diện người dùng. Mục đích chính của việc này là khi người dùng thực thi một hoạt động nào đó liên quan đến database thì database thay đổi đúng như mong đợi hay không. Kiểm thử phi chức năng (Non-Functional Database Testing): phân loại thành các loại khác nhau: load testing, Stress Testing, Security Testing, Usability Testing, và Compatibility Testing,... Nhóm B1 - Database testing (Unit test for Database) Các công cụ dự định tìm hiểu Chức năng đặc trưng Redgate Mockup Data NoSQLUnit -Test SQL bằng framework tSQL -Xem và lưu trữ procedure và function. -Lưu trữ database trong 1 schema -Cho phép thực hiện unit test cho SQL Server - Công cụ giúp người dùng chỉ cần thêm cột trước khi kiểm tra kết quả. - Là một công cụ nhẹ (~10MB) hỗ trợ xem trước tự động và tức thì lên đến 10 records. - Nhanh chóng tạo ra một lượng lớn dữ liệu và kiểm tra nhiều bảng cùng một lúc để tìm mối quan hệ cùng với các khóa ngoại. - Tạo file CSV và database với dữ liệu thực tế. - Thực hiện Unit test trên NoSQL database -Công cụ open-source cài đặt như một JUnit extension sử dụng để Test trên ứng dụng JAVA sử dụng NoSQL database - Quản lý lifecycle của NoSQL Server https://www.redgate.com/ http://www.mockupdata.com/ https://github.com/lordofthe jars/nosql-unit Nhóm B1 - Database testing (Unit test for Database) Nội dung dự kiến demo Nhóm B2 - Nội dung trình bài lý thuyết 1. DB Generation tool là gì Là các công cụ chuyên dụng để tạo ra các bộ dữ liệu giả để sử dụng trong trong quá trình kiểm thử phần mềm. Dữ liệu này phải tuân theo các điều kiện, được chỉ định cho kịch bản thử nghiệm mà dữ liệu sẽ được sử dụng. 2. Phân loại DB Generation tool Nhóm B2 - Nội dung trình bài lý thuyết 3. Chức năng 4. So sánh các công cụ phổ biến 5. Giới thiệu công cụ demo Nhóm B2 - Các công cụ tìm hiểu ❏ Redgate Data Generator ❏ DTM DB Generator Nhóm B2- Nội dung DEMO Công cụ lựa chọn Liên kết DB Tạo 1 Table Tạo các column Generate data cho các column(random, từ danh sách các giá trị cho trước, từ field data có sẵn, …) 5. Save 1. 2. 3. 4. Team L2 - Content 1. 1. 1. - Cucumber ? Cucumber, testing framework hỗ trợ Behavior Driven Development (BDD), cho phép người dùng định nghĩa hành vi hệ thống với ngữ nghĩa tiếng anh thông qua cú pháp Gherkin và tìm hiểu thêm nhiều khác niệm nâng cao. Gherkin syntax ? Cú pháp gherkin chia thành 3 thành phần chính là Feature, Scenario và step: Feature -> Scenario -> step -> key: Give, when, then, ... Anti-Pattern? Một vài anti-pattern cần tránh trong quá trình viết script test: Writing the scenario after you’ve written the code. BA/Product Owner creating scenarios in isolation. Incidental details. Devs or testers writing scenarios without talking to business people. Scenario with either a bad name or no name at all. Too high level. Lots of user interface details. No clear separation between Given, When, and Then Team L2 - Tool Công cụ nhóm dự định tìm hiểu: Cucumber Cucumber là một công cụ kiểm thử phần mềm miễn phí, hỗ trợ Behavior Driven Development (BDD). · Nó thực thi các câu lệnh bằng một ngôn ngữ logic với cú pháp như ngôn ngữ nói thông thường mà khách hàng có thể hiểu - ngôn ngữ thô Gherkin. · · Plugin của Cucumber hoạt động nhanh hơn so với các công cụ khác như HP ALM hay Selenium. · Cucumber framework hỗ trợ các ngôn ngữ như Java, Scala, Groovy · Cài đặt Cucumber theo hướng dẫn tại: https://viblo.asia/p/huong-dan-su-dung-tool-automation-cucumberE375zb2j5GW Team L2 - Demo Cucumber là một tool kiểm thử tự động Công việc: test hành vi của phần mềm dựa trên việc thực thi các functions được mô tả dướng dạng plain-text. Kịch bản tường minh: So sánh tính hiệu quả của các đoạn script trên từng UI Tiêu chuẩn để so sánh: dựa trên các yếu tố cơ bản và tìm hiểu về kinh nghiệm của các test chuyên nghiệp Dự kiến demo: Đối tượng kiểm thử: Giao diện phần mềm Người thực hiện: Developer và Tester Kế hoạch tổng quan: Kiểm thử tất cả phần giao diện của phần mềm Nhóm A2 - Automation for mobile apps WHAT: là khi tester viết kịch bản và sử dụng những công cụ hỗ trợ để kiểm thử phần mềm WHY: - Tiết kiệm thời gian, tiền bạc Có thể kiểm thử các trang web, phần mềm đa ngôn ngữ dễ hơn - Giảm sự nhàm chán do sự lặp lại của kiểm thử thủ công Tăng phạm vi kiểm thử WHEN: Dự án - Lớn và trọng điểm Yêu cầu kiểm thử thường xuyên Kiểm tra tính ổn định của phần mềm Tính khả dụng của thời gian Test cases - Rủi ro cao Thực hiện nhiều lần Khó thực hiện thủ công Tốn thời gian Nhóm A2 - Automation UI mobile testing 1. What Kiểm tra màu sắc, phong cách Menu, nhất quán của giao diện người dùng trên các thiết bị khác nhau Kiểm tra sự phản hồi của ứng dụng đối với các thao tác của người dùng lên UI 1. Why - - Giảm thiểu tình trạng bug đã fix rồi quay trở lại Hỗ trợ test các View Controller - Như một loại tài liệu của ứng dụng Đem lại trải nghiệm trực quan khi sử dụng ap 1. Doc https://viblo.asia/p/gioi-thieu-ve-ui-testing-trong-ios-Az45bN0N5xY Nhóm A2 Các công cụ dự định tìm hiểu 1. Appium 2. Expresso Nhóm A2 - Công cụ Appium Appium là một công cụ mã nguồn mở được sử dụng để kiểm thử tự động các native app, mobile web app, và hybrid app trên nền tảng iOS và Android. Hỗ trợ kiểm thử phần mềm tự động hóa trên trình mô phỏng hoặc giả lập và các thiết bị di động vật lý Ưu điểm ● ● ● ● Đa nền tảng Hỗ trợ nhiều ngôn ngữ lập trình, tùy chọn các framework testing Cung cấp API ổn định Chuyển đổi linh động giữa nội dung ứng dụng gốc và nội dung web Khuyết điểm ● ● ● ● Không hỗ trợ cho Android API level < 17 (Android < 4.2) Chạy script rất chậm trên platform iOS Hỗ trợ hành động cử chỉ có giới hạn Không hỗ trợ Toast message. Nguồn tham khảo: https://saucelabs.com/resources/articles/mobile-testing-tools Nhóm A2 - Công cụ Espresso Espresso là một “Open source Android UI Testing Framework” được phát triển bởi Google để viết các bài Android UI test ngắn gọn, hiệu quả, linh hoạt, đẹp mắt và đáng tin cậy. Các UI test trực tiếp cùng với code của ứng dụng và có thể có quyền truy cập vào code được chia sẻ. Là một phần của Android SDK và có thể dễ dàng sử dụng để phát triển một native app. Ưu điểm Khuyết điểm 1/ Ổn định cao, tốc độ nhanh. 2/ Quy trình đơn giản, phản hồi nhanh chóng. 3/ API nhỏ gọn 4/ Thiết lập và tích hợp dễ dàng với Android Studio. 5/ Mọi người đều có thể sử dụng. 1/ Giới hạn về ngôn ngữ. 2/ Chỉ tương thích với Android. Hướng dẫn sử dụng: https://saucelabs.com/resources/articles/using-espresso-to-test-mobileapplications-in-android-studio Nhóm A2 - Kịch bản demo ● Đối tượng kiểm thử (Where): Giao diện phần mềm ● Người thực hiện (Who): Developer, Tester và QA ● Phương thức thực hiện (How): ○ ○ ○ ○ ○ ○ ○ Test scenario 1: Kiểm thử giao diện màn hình thêm thu chi Test scenario 2: Kiểm thử giao diện thêm hóa đơn Test scenario 3: Kiểm thử giao diện chi tiết thu chi Test scenario 4: Kiểm thử giao diện danh sách hóa đơn Test scenario 5: Kiểm thử giao diện báo cáo Test scenario 6: Kiểm thử giao diện thống kế Test scenario 6: Kiểm thử giao diện chào mừng Nhóm N - Mock Object for API Testing ❖ Mock Object for API Testing là gì? ➢ Mocking: thuật ngữ này dùng để chỉ hành động tạo ra các thành phần mô phỏng một đối tượng nào đó. Mà trong “API Mocking” đối tượng chính là các API. Tóm lại Mock Object for API Testing là tạo ra các đối tượng mô phỏng API thực tế để sử dụng cho việc kiểm thử API. ❖ Tại sao chúng ta phải Mocking API? ➢ Như chúng ta thấy API là phương thức để truyền tải dữ liệu giữa các thành phần, nhưng trong quá trình phát triển phần mềm thực tế việc sử dụng API của bên thứ ba có thể gặp một số vấn đề sau: ■ Bên thứ ba không có hoặc không cung cấp hệ thống test cho chúng ta. ■ Bên thứ 3 đang phát triển API song song với chúng ta hoặc chưa hoàn thành API cho chúng ta sử dụng. ■ Không thể gọi API thật để test: gặp vấn đề về chi phí và bảo mật. ■ Gọi service của bên thứ ba để viết Unit Test rất chậm và đôi khi service của họ die dẫn đến Unit Test của chúng ta failed không mong muốn. Nhóm N - Mock Object for API Testing ❖ Mocking API được sử dụng khi nào? ➢ Mocking API có thể sử dụng trong quá trình phát triển phần mềm và cả quá trình kiểm thử. ❖ Ai là người sử dụng Mocking API? ➢ Cả lập trình viên và tester. ❖ Xây dựng Mocking API ở đâu? ➢ Tự xây dựng fake API ở local host bằng kiến thức web cơ bản. ➢ Ta có thể sử dụng các các công cụ ảo hóa dịch vụ có sẵn trên thị trường như postman,... ❖ Mocking API được sử dụng trong các trường hợp nào? ➢ ➢ ➢ ➢ ➢ Mocking trong quá trình phát triển phần mềm Mocking để thực hiện functional Test Mocking để thực hiện non - functional Test Mocking các External Components Mocking để DEMO sản phẩm Nhóm N - Các tool dự định tìm hiểu 1. Postman 2. MockAPI ( https://mockapi.io/ ) 3. Insomnia (https://insomnia.rest/) Nhóm N - Kịch bản DEMO ● Giới thiệu và hướng dẫn cài đặt công cụ ● Sử dụng công cụ để xây dựng 1 mocking API cơ bản ● Kết hợp Mocking API đó vào product under testing để hoàn thành 1 vòng API testing. Nhóm C1- Nội dung trình bày lý thuyết ❖ Automation test for web Nhóm C1- Công cụ tìm hiểu - Selenium Nhóm C1- Kịch bản demo - Chức năng đăng nhập của 1 trang web nào đó Viết script kiểm thử một chương trình web kiểm tra tam giác đơn giản mà nhóm đã làm ra Automation for Mobile Apps Nhóm trình bày: A1 Ngày: 24/11/2020 A1- Automation for Mobile Apps 1. Automation for Mobile Apps là gì? - Là sử dụng công cụ hỗ trợ chạy tự động để thay thế các thao tác testing bằng tay góp phần nâng cao năng suất kiểm thử và giảm thiểu lỗi 1. Lợi ích - Tiết kiệm thời gian, thay thế Tester làm đi làm lại những quy tắc kiểm thử nhàm chán. Cho ra kết quả cao, ổn định và tránh được những rủi ro có thể phát sinh, ngoài ra còn có thể phát hiện bug một cách hiệu quả. Làm giảm rủi ro về chất lượng sản phẩm, việc kiểm thử được diễn ra nhanh chóng và không nhàm chán. Giúp Tester chạy được nhiều case, tốc độ xử lý cực kì nhanh. Việc rút ngắn thời gian và không tốn nhiều nhân lực giúp giảm thiểu chi phí. A1- Các công cụ dự định tìm hiểu - Robotium Appium A1- Robotium 1. Robotium là gì? - - Robotium là một công cụ viết bằng mã nguồn mở dùng để kiểm thử hộp xám tự động dành cho các ứng dụng trên điện thoại hệ điều hành android. Với sự hỗ trợ của Robotium, chúng ta có thể viết các test case về test chức năng, hệ thống, và acceptance test scenarios, bao phủ các tính năng của Android. Robotium thể được sử dụng cả cho các ứng dụng test sử dụng mã nguồn có sẵn và các ứng dụng mà chỉ có sẵn file apk. A1- Robotium 2. Ưu và nhược điểm Ưu điểm - - Dễ viết, code ngắn hơn. Xử lý tự động nhiều hoạt động Android. Độ khó của test case được cải thiện. Tự động định thời và độ chậm trễ. Tự động hoạt động theo quy trình hiện tại. Tự động đưa ra quyết định riêng của mình. Tự động tìm kiếm lượt xem. Thực hiện test nhanh. Test case được phát huy mạnh mẽ hơn do thời gian chạy liên kết với các thành phần GUI. Tích hợp thông suốt với Maven hoặc Ant. Nhược điểm - - - Robotium không thể xử lý Flash hoặc các thành phần Web. Nó chỉ kiểm soát một ứng dụng tại một thời điểm Nó không thể mô phỏng cách nhấp vào bàn phím mềm(cần phải sử dụng 'enterText()' để nhập văn bản vào một trường EditText). Robotium không thể tương tác với Status Bar Notifications - Đó là, kéo xuống khu vực thông báo và nhấp chuột vào một thông báo cụ thể. Có thể chạy chậm, đặc biệt là chạy trên các thiết bị cũ A1- Appium 1. Appium là gì? - Appium là một công cụ mã nguồn mở được sử dụng để kiểm thử tự động các native app, mobile web app, và hybrid app trên nền tảng iOS và Android. Nó hỗ trợ các ứng dụng iOS, Android và Windows bằng giao thức WebDriver. Appium hỗ trợ “đa nền tảng” (cross-platform) cho phép bạn sử dụng API giống nhau để viết test cho các nền tảng khác nhau (iOS và Android). Appium hỗ trợ kiểm thử tự động phần mềm trên cả emulator, simulator và devices A1- Appium 2. Ưu và nhược điểm Ưu điểm - - - Appium giúp kiểm thử hồi quy mobile app một cách dễ dàng, đặc biệt là đối với những ứng dụng di động lớn liên tục được phát triển thêm các tính năng và chức năng mới. Appium hỗ trợ đa ngôn ngữ và nền tảng như sau: Hỗ trợ đa nền tảng: Android, iOS, FirefoxOS Hỗ trợ đa ngôn ngữ: Java, Objective-C, JavaScript with Node.js, PHP, Python, C#, Clojure, Perl Đa nền tảng Nhược điểm - Không hỗ trợ cho Android API level < 17, tức là Android < 4.2 Chạy script rất chậm trên platform iOS Hỗ trợ hành động cử chỉ có giới hạn Không hỗ trợ Toast message A1- Nội dung dự kiến demo ● Kiểm tra tự động Robotium cho Android - Ứng dụng: ZCalculator (ứng dụng tính kết quả phép tính cộng và trừ từ 2 số nhập vào)