Unit test là gì

Ở trường đại học nhiều bạn đã được học khái niệm về Unit Test trong khóa học kiểm thử phần mềm tuy nhiên vẫn còn khá mơ hồ. Hôm nay, Techacademy sẽ giới thiệu chi tiết về khái niệm, chức năng… của Unit Test

Unit test là gì? Tìm hiểu về unit test trong kiểm thử phần mềm

UNIT TEST là một cấp độ kiểm thử phần mềm trong đó các đơn vị (unit) / thành phần riêng lẻ của phần mềm được kiểm thử. Mục đích là để xác nhận rằng mỗi unit của phần mềm thực hiện như thiết kế. Một unit là phần nhỏ nhất có thể kiểm thử của bất kỳ phần mềm nào.

Unit test thường có một hoặc một vài đầu vào và thường là một đầu ra duy nhất. Trong lập trình thủ tục, một đơn vị có thể là một chương trình riêng lẻ, chức năng, thủ tục, v.v … Trong lập trình hướng đối tượng, unit nhỏ nhất là một phương thức, có thể thuộc về một lớp cơ sở / siêu lớp, lớp trừu tượng hoặc lớp dẫn xuất / lớp con. (Một số coi module của ứng dụng là một unit. Điều này không được khuyến khích vì có thể sẽ có nhiều unit riêng lẻ trong module đó.) Khung unit test, trình điều khiển, sơ khai và các đối tượng giả / giả được sử dụng để hỗ trợ unit test.

unit test là gì
unit test là gì

Định nghĩa bởi ISTQB:

+ Unit Test: Xem component test
+ Component test: Việc kiểm thử các thành phần phần mềm riêng lẻ.

Đặc điểm của Unit Test

  • Code Unit Test phải ngắn gọn, dễ hiểu, dễ đọc.
  • Mỗi Unit Test là 1 đơn vi riêng biệt, độc lập, không phụ thuộc vào unit khác.
  • Mỗi Unit Test là 1 method trong test class, tên method cũng là tên UnitTest. Do đó ta nên đặt tên hàm rõ ràng, nói rõ Unit Test này test cái gì (Test_A_Do_B), tên method có thể rất dàiii cũng không sao.
  • Unit Test phải nhanh, vì Unit Test sẽ được chạy để kiểm định lỗi mỗi lần build. Do đó trong Unit Test nên hạn chế các task tốn thời gian như gọi I/O, database, network,…
  • Unit Test nên test từng đối tượng riêng biệt. Vd: Unit Test cho Business Class thì chỉnh test chính BusinessClass đó, không nên dụng tới các class móc nối với nó (DataAccess Class chẳng hạn).

Phương pháp Unit Test

Unit Test được thực hiện bằng cách sử dụng phương pháp Kiểm thử Hộp Trắng (White Box Test).

Khi nào Unit Test được thực hiện?

Unit Test là cấp độ kiểm thử phần mềm đầu tiên và được thực hiện trước kiểm thử tích hợp.

XEM THÊM: Các Phương Pháp Kiểm Thử Phần Mềm

Ai thực hiện Unit Test?

Unit Test thường do lập trình viên thực hiện. Công đoạn này cần được thực hiện càng sớm càng tốt trong giai đoạn viết code và xuyên suốt chu kỳ PTPM. Thông thường, Unit Test đòi hỏi kiểm tra viên có kiến thức về thiết kế và code của chương trình. Mục đích của Unit Test là bảo đảm thông tin được xử lý và xuất (khỏi Unit) là chính xác, trong mối tương quan với dữ liệu nhập và chức năng của Unit.

Điều này thường đòi hỏi tất cả các nhánh bên trong Unit đều phải được kiểm tra. Một nhánh thường là một chuỗi các lệnh được thực thi trong một Unit, ví dụ: chuỗi các lệnh sau điều kiện If và nằm giữa then … else là một nhánh. Thực tế việc chọn lựa các nhánh để đơn giản hóa việc kiểm tra và quét hết Unit đòi hỏi phải có kỹ thuật, đôi khi phải dùng thuật toán để chọn lựa.

Nhược điểm của Unit

Không có thời gian cho Unit Test

Viết Unit Test là tốn thời gian đó là lý do tại sao rất khó để đáp ứng thời hạn. Trong thực tế, Unit Test có thể tiết kiệm rất nhiều thời gian và nỗ lực phát triển trong thời gian dài.

Unit tests khác với viết code

Đúng, bạn hãy nghĩ rằng để viết được một unit test đôi khi còn mất thời gian hơn viết một chức năng code. Và có thể có những Lập Trình Viên viết được code nhưng chưa chắc viết được test case. Không có gì đảm bảo, ngay cả khi mã được kiểm tra kỹ lưỡng, sẽ không có lỗi.

XEM THÊM: Các Mô Hình Phát triển Phần Mềm

Unit Test Tasks

+ Unit Test plan

Chuẩn bị
Review
Thực hiện lại
Baseline

+ Unit Test Cases/Scripts

Chuẩn bị
Review
Thực hiện lại
Baseline

+ Unit Test

Biểu diễn

Lợi ích Unit Test

  • Unit Test làm tăng sự tự tin trong việc thay đổi / duy trì mã. Nếu các bài Unit Test tốt được viết và nếu chúng được chạy mỗi khi bất kỳ mã nào được thay đổi, chúng tôi sẽ có thể kịp thời nắm bắt bất kỳ lỗi nào được đưa ra do thay đổi. Ngoài ra, nếu các mã đã được thực hiện ít phụ thuộc lẫn nhau hơn để thực hiện Unit Test, thì tác động ngoài ý muốn của các thay đổi đối với bất kỳ mã nào là ít hơn.
  • Mã được tái sử dụng nhiều hơn. Để thực hiện Unit Test, mã cần phải được module hóa. Điều này có nghĩa là mã dễ sử dụng hơn.
  • Phát triển nhanh hơn. Làm sao? Nếu bạn không có Unit Test tại chỗ, bạn viết mã của mình và thực hiện ‘kiểm thử dành cho nhà phát triển’ mờ đó (Bạn đặt một số điểm dừng, kích hoạt GUI, cung cấp một vài đầu vào hy vọng đánh vào mã của bạn và hy vọng rằng bạn đã thiết lập xong). Nhưng, nếu bạn có Unit Test tại chỗ, bạn viết kiểm thử, viết mã và chạy kiểm thử. Viết bài kiểm thử mất thời gian nhưng thời gian được bù lại bằng thời gian ít hơn để chạy các bài kiểm thử; Bạn không cần kích hoạt GUI và cung cấp tất cả các đầu vào đó. Và, tất nhiên, các bài Unit Test đáng tin cậy hơn nhà phát triển kiểm thử. Phát triển nhanh hơn trong thời gian dài quá. Làm sao? Nỗ lực cần thiết để tìm và sửa các lỗi được tìm thấy trong quá trình Unit Test là rất ít so với nỗ lực cần có để sửa các lỗi được tìm thấy trong quá trình kiểm thử hệ thống hoặc kiểm thử chấp nhận.
  • Chi phí sửa chữa một lỗi được phát hiện trong quá trình Unit Test là ít hơn so với các lỗi được phát hiện ở các cấp cao hơn. So sánh chi phí (thời gian, công sức, sự phá hủy) của một khiếm khuyết được phát hiện trong quá trình kiểm thử chấp nhận hoặc khi phần mềm hoạt động.
  • Gỡ lỗi rất dễ dàng. Khi kiểm thử thất bại, chỉ những thay đổi mới nhất cần được gỡ lỗi. Với kiểm thử ở mức cao hơn, những thay đổi được thực hiện trong khoảng vài ngày / tuần / tháng cần phải được quét.

Mẹo khi dùng Unit Test

  • Tìm một công cụ / framework cho ngôn ngữ của bạn.
  • Không tạo trường hợp kiểm thử cho tất cả mọi thứ. Thay vào đó, hãy tập trung vào các bài kiểm thử tác động đến hành vi của hệ thống.
  • Cô lập môi trường phát triển từ môi trường kiểm thử.
  • Sử dụng dữ liệu kiểm thử gần với dữ liệu sản xuất.
  • Trước khi sửa lỗi, viết một bài kiểm thử để lộ khuyết điểm. Tại sao? Đầu tiên, sau này bạn sẽ có thể bắt lỗi nếu bạn không sửa nó đúng cách. Thứ hai, bộ kiểm thử của bạn bây giờ toàn diện hơn. Thứ ba, rất có thể bạn sẽ quá lười để viết bài kiểm thử sau khi bạn đã sửa lỗi.
  • Viết các trường hợp kiểm thử độc lập với nhau. Ví dụ, nếu một lớp phụ thuộc vào cơ sở dữ liệu, không viết trường hợp tương tác với cơ sở dữ liệu để kiểm thử lớp. Thay vào đó, hãy tạo một giao diện trừu tượng xung quanh kết nối cơ sở dữ liệu đó và triển khai giao diện đó với một đối tượng giả.
  • Nhằm mục đích bao gồm tất cả các con đường thông qua các đơn vị. Đặc biệt chú ý đến điều kiện vòng lặp.
  • Hãy chắc chắn rằng bạn đang sử dụng một hệ thống kiểm soát phiên bản để theo dõi các kịch bản kiểm thử của bạn. Ngoài việc viết các trường hợp để xác minh hành vi, hãy viết các trường hợp để đảm bảo hiệu suất của mã.
    Thực hiện Unit Test liên tục và thường xuyên.

Thêm một lý do

Hãy để nói rằng bạn có một chương trình bao gồm hai đơn vị và kiểm thử duy nhất bạn thực hiện là kiểm thử hệ thống. Trong quá trình kiểm thử, bạn tìm thấy một lỗi. Bây giờ, làm thế nào bạn sẽ xác định nguyên nhân của vấn đề?

  • Là lỗi do lỗi trong unit 1?
  • Là lỗi do lỗi trong unit 2?
  • Là lỗi do lỗi trong cả hai unit?
  • Là lỗi do một lỗi trong giao diện giữa các unit?
  • Là lỗi do một lỗi trong kiểm thử hoặc trường hợp kiểm thử?

Unit Test thường bị bỏ qua nhưng trên thực tế, đây là cấp độ kiểm thử quan trọng nhất.

The post Unit test là gì first appeared on Techacademy.

source https://techacademy.edu.vn/unit-test-la-gi/

Các Mô Hình Phát Triển Phần Mềm

Mô hình phát triển phần mềm hay quy trình phát triển phần mềm xác định các pha/ giai đoạn trong xây dựng phần mềm. Hôm nay, Techacademy.edu.vn giới thiệu các mô hình phát triển phần mềm thông dụng và hiệu quả nhất hiện nay.

1. Định nghĩa

Mô hình phát triển phần mềm hay quy trình phát triển phần mềm xác định các pha/ giai đoạn trong xây dựng phần mềm. Có nhiều loại mô hình phát triển phần mềm khác nhau ví dụ như:

  • Mô hình thác nước ( Waterfall model)
  • Mô hình xoắn ốc ( Spiral model)
  • Mô hình agile
  • Mô hình tiếp cận lặp ( Iterative model)
  • Mô hình tăng trưởng ( Incremental model)
  • Mô hình chữ V ( V model)
  • Mô hình Scrum
  • RAD model ( Rapid Application Development)

Bài viết này sẽ giúp bạn giải đáp thắc mắc về các mô hình trong phát triển phần mềm được sử dụng trong khóa học Tester – Kiểm thử phần mềm tại Techacademy Việt Nam.

2. Các mô hình được sử dụng trọng khóa học Tester Kiểm thử phần mềm

2.1. Mô hình thác nước ( Waterfall model)

Đây được coi như là mô hình phát triển phần mềm đầu tiên được sử dụng. Mô hình này áp dụng tuần tự các giai đoạn của phát triển phần mềm. Đầu ra của giai đoạn trước là đầu vào của giai đoạn sau. Giai đoạn sau chỉ được thực hiện khi giai đoạn trước đã kết thúc. Đặc biệt không được quay lại giai đoạn trước để xử lý các yêu cầu khi muốn thay đổi.

Phân tích mô hình

  • Requirement gathering: Thu thập và phân tích yêu cầu được ghi lại vào tài liệu đặc tả yêu cầu trong giai đoạn này.
  • System Analysis: Phân tích thiết kế hệ thống phần mềm, xác định kiến trúc hệ thống tổng thể của phần mềm.
  • Coding: Hệ thống được phát triển theo từng unit và được tích hợp trong giai đoạn tiếp theo. Mỗi Unit được phát triển và kiểm thử bởi dev được gọi là Unit Test.
  • Testing: Cài đặt và kiểm thử phần mềm. Công việc chính của giai đoạn này là kiểm tra và sửa tất cả những lỗi tìm được sao cho phần mềm hoạt động chính xác và đúng theo tài liệu đặc tả yêu cầu.
  • Implementation: Triển khai hệ thống trong môi trường khách hàng và đưa ra thị trường.
  • Operations and Maintenance: Bảo trì hệ thống khi có bất kỳ thay đổi nào từ phía khách hàng, người sử dụng.

Ứng dụng

Mô hình thường được áp dụng cho các dự án phần mềm như sau:

  • Các dự án nhỏ , ngắn hạn.
  • Các dự án có ít thay đổi về yêu cầu và không có những yêu cầu không rõ ràng.

Ưu điểm

  • Dễ sử dụng, dễ tiếp cận, dễ quản lý.
  • Sản phẩm phát triển theo các giai đoạn được xác định rõ ràng.
  • Xác nhận ở từng giai đoạn, đảm bảo phát hiện sớm các lỗi.

Nhược điểm

  • Ít linh hoạt, phạm vi điều chỉnh hạn chế.
  • Rất khó để đo lường sự phát triển trong từng giai đoạn.
  • Mô hình không thích hợp với những dự án dài, đang diễn ra, hay những dự án phức tạp, có nhiều thay đổi về yêu cầu trong vòng đời phát triển.
  • Khó quay lại khi giai đoạn nào đó đã kết thúc.

Tham khảo: Các phương pháp kiểm thử phần mềm

2.2.Mô hình chữ V( V model)

Mô tả Mô hình V là một phần mở rộng của mô hình thác nước và được dựa trên sự kết hợp của một giai đoạn thử nghiệm cho từng giai đoạn phát triển tương ứng. Điều này có nghĩa là đối với mỗi giai đoạn trong chu kỳ phát triển, có một giai đoạn thử nghiệm liên quan trực tiếp. Đây là một mô hình có tính kỷ luật cao và giai đoạn tiếp theo chỉ bắt đầu sau khi hoàn thành giai đoạn trước.

Với V model thì công việc test được tham gia ngay từ đầu, từ lúc lấy yêu cầu là có thể “test” bằng cách review tài liệu yêu cầu, rồi cho tới review đặc tả chi tiết, các bản thiết kế, review code rồi cuối cùng là test ở mức thấp nhất – từng module, chức năng, màn hình, đến test tích hợp rồi kiểm thử hệ thống. So với mô hình khác thì ở mô hình này, công việc test đi sát hơn và ngay từ đầu khi bắt đầu phát triển.

Chắc chắn chất lượng dự án sẽ tốt hơn. Nhưng tại sao người ta vẫn tiếp tục đưa ra mô hình phát triển khác? Vì ở mô hình chữ V này người ta vẫn phát triển cùng lúc cả hệ thống (nhiều yêu cầu, chức năng cùng lúc) mà rủi ro về thay đổi yêu cầu là rất lớn. Nên mô hình này vẫn có thể gặp rắc rối khi khách hàng thường xuyên thay đổi yêu cầu

Mô hình chữ V( V model)
Mô hình chữ V( V model)

Ứng dụng Ứng dụng mô hình V- Model gần giống như mô hình thác nước , vì cả hai mô hình đều thuộc loại tuần tự. Yêu cầu phải rất rõ ràng trước khi dự án bắt đầu, bởi vì nó thường đắt tiền để quay trở lại và thực hiện thay đổi. Mô hình này được sử dụng trong lĩnh vực phát triển y tế, vì nó là một lĩnh vực xử lý kỷ luật nghiêm ngặt. Sau đây là một số kịch bản phù hợp nhất để sử dụng ứng dụng V-Model.

Yêu cầu được xác định rõ ràng, được ghi chép và cố định rõ ràng:

  • Xác định sản phẩm ổn định.
  • Công nghệ không thay đổi và được hiểu rõ bởi nhóm dự án.
  • Không có yêu cầu không rõ ràng hoặc không xác định.
  • Dự án ngắn.

Ưu điểm

  • Đây là một mô hình có tính kỷ luật cao và các giai đoạn được hoàn thành cùng một lúc.
  • Hoạt động tốt cho các dự án nhỏ, khi các yêu cầu được hiểu rất rõ.
  • Đơn giản và dễ hiểu và dễ sử dụng.
  • Dễ quản lý. Mỗi giai đoạn có phân phối cụ thể và quy trình đánh giá.

Nhược điểm

  • Khó quản lý kiểm soát rủi ro, rủi ro cao
  • Không phải là một mô hình tốt cho các dự án phức tạp và hướng đối tượng.
  • Mô hình kém cho các dự án dài và đang diễn ra.
  • Không thích hợp cho các dự án có nguy cơ thay đổi yêu cầu trung bình đến cao.
  • Khi ứng dụng đang ở giai đoạn thử nghiệm, rất khó để quay lại và thay đổi chức năng.

2.3.Mô hình mẫu

Trong mô hình mẫu (prototype), qui trình được bắt đầu bằng việc thu thập yêu cầu với sự có mặt của đại diện của cả phía phát triển lẫn khách hàng nhằm định ra mục tiêu tổng thể của hệ thống phần mềm sau này, đồng thời ghi nhận tất cả những yêu cầu có thể biết được và sơ luợc những nhóm yêu cầu nào cần phải được làm rõ.

Sau đó, thực hiện thiết kế nhanh tập trung chuyển tải những khía cạnh thông qua prototype để khách hàng có thể hình dung, đánh giá giúp hoàn chỉnh yêu cầu cho toàn hệ thống phần mềm. Việc này không những giúp tinh chỉnh yêu cầu, mà đồng thời giúp cho đội ngũ phát triển thông hiểu hơn những gì cần được phát triển. Tiếp theo sau giai đoạn làm prototype này có thể là một chu trình theo mô hình waterfall hay cũng có thể là mô hình khác.

Chú ý, prototype thường được làm thật nhanh trong thời gian ngắn nên không được xây dựng trên cùng môi trường và công cụ phát triển của giai đoạn xây dựng phần mềm thực sự sau này. Prototype không đặt ra mục tiêu tái sử dụng cho giai đoạn phát triển thực sự sau đó.

Ưu điểm

  • Người sử dụng sớm hình dung ra chức năng và đặc điểm của hệ thống.
  • Cải thiện sự liên lạc giữa nhà phát triển và người sử dụng.

Nhược điểm

  • Khi mẫu (prototype) không chuyển tải hết các chức năng, đặc điểm của hệ thống phần mềm thì người sử dụng có thể thất vọng và mất đi sự quan tâm đến hệ thống sẽ được phát triển.
  • Prototype thường được làm nhanh, thậm chí vội vàng, theo kiểu “hiện thực – sửa” và có thể thiếu sự phân tích đánh giá một cách cẩn thận tất cả khía cạnh liên quan đến hệ thống cuối cùng.
  • Nói chung mô hình này vẫn chưa thể cải thiện được việc loại trừ khoảng cách giữa yêu cầu và ứng dụng cuối cùng.

Ứng dụng

  • Hệ thống chủ yếu dựa trên giao diện người dùng (GUI)
  • Khách hàng, nhất là người sử dụng cuối, không thể xác định rõ ràng yêu cầu.

2.4.Mô hình Agile

Agile là một phương pháp phát triển phần mềm linh hoạt để làm sao đưa sản phẩm đến tay người dùng càng nhanh càng tốt và được xem như là sự cải tiến so với những mô hình cũ như mô hình “Thác nước (waterfall)” hay “CMMI”. Phương thức phát triển phần mềm Agile là một tập hợp các phương thức phát triển lặp và tăng dần trong đó các yêu cầu và giải pháp được phát triển thông qua sự liên kết cộng tác giữa các nhóm tự quản và liên chức năng.

Mô hình Agile
Mô hình Agile

Mô tả

  • Dựa trên mô hình iterative and incremental.
  • Các yêu cầu và giải pháp phát triển dựa trên sự kết hợp của các function.
  • Trong Agile, các tác vụ được chia thành các khung thời gian nhỏ để cung cấp các tính năng cụ thể cho bản phát hành cuối.

Ứng dụng

  • Có thể được sử dụng với bất kỳ loại hình dự án nào, nhưng cần sự tham gia và tính tương tác của khách hàng.
  • Sử dụng khi khách hàng yêu cầu chức năng sẵn sàng trong khoảng thời gian ngắn.

Ưu điểm

  • Tăng cường tình thần làm việc nhóm và trao đổi công việc hiệu quả.
  • Các chức năng được xây dựng nhanh chóng và rõ ràng, dế quản lý.
  • Dễ dàng bổ sung, thay đổi yêu cầu.
  • Quy tắc tối thiểu, tài liệu dễ hiểu, dễ sử dụng.

Nhược điểm

Mô hình Agile được sử dụng rộng rãi trên thế giới nhưng cũng không đồng nghĩa với phù hợp với tất cả các dự án phần mềm.

  • Không thích hợp để xử lý các phụ thuộc phức tạp.
  • Có nhiều rủi ro về tính bền vững, khả năng bảo trì và khả năng mở rộng.
  • Cần một team có kinh nghiệm.
  • Phụ thuộc rất nhiều vào sự tương tác rõ ràng của khách hàng.
  • Chuyển giao công nghệ cho các thành viên mới trong nhóm có thể khá khó khăn do thiếu tài liệu.

2.5. Mô hình xoắn ốc

Mô hình xoắn ốc
Mô hình xoắn ốc

Mô tả

  • Là mô hình kết hợp giữa các tính năng của mô hình prototyping và mô hình thác nước.
  • Mô hình xoắn ốc được ưa chuộng cho các dự án lớn, đắt tiền và phức tạp.
  • Mô hình này sử dụng những giai đoạn tương tự như mô hình thác nước, về thứ tự, plan, đánh giá rủi ro, …
  • Phân tích mô hình

Các pha trong quy trình phát triển xoắn ốc bao gồm:

  • Objective identification- Thiết lập mục tiêu: xác định mục tiêu, đối tượng cho từng pha của dự án.
  • Alternate evaluation- Đánh giá và giảm thiểu rủi ro: đánh giá rủi ro và thực hiện các hành động để giảm thiểu rủi ro.
  • Product development- Phát triển sản phẩm: Lựa chọn mô hình phù hợp để phát triển hệ thống.
  • Next phase planning- Lập kế hoạch: đánh giá dự án và lập kế hoạch cho pha tiếp theo.

Ứng dụng

Mô hình này thường được sử dụng cho các ứng dụng lớn và các hệ thống được xây dựng theo các giai đoạn nhỏ hoặc theo các phân đoạn.

Ưu điểm

  • Tốt cho các hệ phần mềm quy mô lớn.
  • Dễ kiểm soát các mạo hiểm ở từng mức tiến hóa.
  • Đánh giá thực tế hơn như là một quy trình làm việc, bởi vì những vấn đề quan trọng đã được phát hiện sớm hơn.

Nhược điểm

  • Manager cần có kỹ năng tốt để quản lý dự án, đánh giá rủi ro kịp thời.
  • Chi phí cao và mất nhiều thời gian để hoàn thành dự án.
  • Phức tạp và không thích hợp với các dự án nhỏ và ít rủi ro.
  • Yêu cầu thay đổi thường xuyên dẫn đến lặp vô hạn.
  • Chưa được dùng rộng rãi.

2.6 Mô hình Scrum

Mô tả

Chia các yêu cầu ra làm theo từng giai đoạn. Mỗi 1 giai đoạn(sprint) chỉ làm 1 số lượng yêu cầu nhất định.

Mỗi một sprint thường kéo dài từ 1 tuần đến 4 tuần ( ko dài hơn 1 tháng).

Đầu sprint sẽ lên kế hoạch làm những yêu cầu nào. Sau đó, sẽ thực hiện code và test. Cuối sprint là 1 sản phẩm hoàn thiện cả code lẫn test có thể demo và chạy được.

Hoàn thành sprint 1, tiếp tục làm sprint 2, sprint… cho đến khi hoàn thành hết các yêu cầu.

Trong mỗi 1 sprint thì sẽ có họp hàng ngày – daily meeting từ 15 – 20 phút. Mỗi thành viên sẽ báo cáo: Hôm qua tôi đã làm gì? Hôm nay tôi sẽ làm gì? Có gặp khó khăn gì không?

Các nhân tố tạo nên quy trình Scrum

Có 3 thành tố quan trọng cấu thành nên SCRUM:

+ Tổ chức (Organization)

  • Tổ chức nhóm dự án và Roles: Vài trò.
  • Product Owner: Người sở hữu sản phẩm.
  • ScrumMaster: Người điều phối.
  • Development Team: Nhóm phát triển.

+ Tài liệu (Atifacts): đó chính là các kết quả đầu ra.

  • Product Backlog: Danh sách các chức năng cần phát triển của sản phẩm.
  • Sprint Backlog: Danh sách các chức năng cần phát triển cho mỗi giai đoạn.
  • Estimation:Kết quả ước lượng của team.

+ Qui trình(Process): Qui định cách thức vận hành của SCRUM.

  • Sprint Planning meeting: Hoạch định cho mỗi giai đoạn.
  • Review: Tổng kết cho mỗi giai đoạn.
  • Daily Scrum Meeting: Review hàng ngày.

Tổ chức dự án

+ Product Owner

Product Owner là người sở hữu sản phẩm, người quyết định sản phẩm có những chức năng nào và là người quyết định Product Backlog.
Thông thường Role này được khách hàng hoặc người đại diện cho khách hàng đảm nhận.

+ ScrumMaster

Scrum Master là người đảm bảo các qui trình của Scrum được thực hiện đúng và thuận lợi.

+ Development Team

Một nhóm từ 4-7 kỹ sư phần mềm chịu trách nhiệm phát triển sản phẩm.
Nhóm dự án phải làm việc với Product Owner để quyết định những gì sẽ làm trong Sprint (giai đoạn )này và kết quả sẽ ra sao. Thảo luận để đưa ra các giải pháp, ước lượng thời gian thực hiện công việc, họp đánh giá kết quả công việc.

+ Product Backlog

Product Backlog là danh sách các chức năng cần được phát triển của sản phẩm.
Danh sách này do Product Owner quyết định.Thường xuyên được cập nhật để đáp ứng được nhu cầu thay đổi của khách hàng và dự án.

Ưu điểm

  • Một người có thể thực hiện nhiều việc ví dụ như dev có thể test.
  • Phát hiện lỗi sớm.
  • Có khả năng áp dụng được cho những dự án mà yêu cầu khách hàng không rõ ràng ngay từ đầu.

Nhược điểm

  • Trình độ của nhóm cần có một kỹ năng nhất định.
  • Phải có sự hiểu biết về mô hình aglie.
  • Khó khăn trong việc xác định ngân sách và thời gian.
  • Luôn nghe ý kiến phản hồi từ khách hàng và thay đổi theo nên thời gian sẽ kéo dài.
  • Vai trò của PO rất quan trọng, PO là người định hướng sản phẩm. Nếu PO làm không tốt sẽ ảnh hưởng đến kết quả chung.

2.7 Mô hình RAD

Mô tả

Mô hình RAD là một phương pháp phát triển phần mềm sử dụng quy hoạch tối thiểu có lợi cho việc tạo mẫu nhanh.
Các mô-đun chức năng được phát triển song song như nguyên mẫu và được tích hợp để tạo ra sản phẩm hoàn chỉnh để phân phối sản phẩm nhanh hơn.
Đảm bảo rằng các nguyên mẫu được phát triển có thể tái sử dụng được.

Ứng dụng

Mô hình RAD có thể được áp dụng thành công cho các dự án:

Module hóa rõ ràng. Nếu dự án không thể được chia thành các mô-đun, RAD có thể không thành công.
RAD nên được sử dụng khi có nhu cầu để tạo ra một hệ thống có yêu cầu khách hàng thay đổi trong khoảng thời gian nhỏ 2-3 tháng.
Nên được sử dụng khi đã có sẵn designer cho model và chi phí cao.

Ưu điểm

  • Giảm thời gian phát triển.
  • Tăng khả năng tái sử dụng của các thành phần.
  • Đưa ra đánh giá ban đầu nhanh chóng.
  • Khuyến khích khách hàng đưa ra phản hồi.

Nhược điểm

Trình độ của nhóm cần có một kỹ năng nhất định.
Chỉ những hệ thống có module mới sử dụng được mô hình này.

2.8 Mô hình tăng trưởng

Mô tả

  • Spec được chia thành nhiều phần.
  • Chu kỳ được chia thành các module nhỏ, dễ quản lý.
  • Mỗi module sẽ đi qua các yêu cầu về thiết kế, thực hiện, … như 1 vòng đời phát triển thông thường.

Ứng dụng

  • Áp dụng cho những dự án có yêu cầu đã được mô tả, định nghĩa và hiểu một cách rõ ràng.
  • Khahcs hàng có nhu cầu về sản phẩm sớm.

Ưu điểm

  • Phát triển nhanh chóng.
  • Mô hình này linh hoạt hơn, ít tốn kém hơn khi thay đổi phạm vi và yêu cầu.
  • Dễ dàng hơn trong việc kiểm tra và sửa lỗi.

Nhược điểm

  • Cần lập plan và thiết kế tốt.
  • Tổng chi phí là cao hơn so với mô hình thác nước.

Trên đây là những mô hình hay được sử dụng nhiều trong các doanh nghiệp hiện nay, các mô hình phát triern phần mềm này đều được giới thiệu trong khóa học Tester – Kiểm thử phần mềm. Mọi chi tiết xin liên hệ theo địa chỉ dưới để được tư vấn.

The post Các Mô Hình Phát Triển Phần Mềm first appeared on Techacademy.

source https://techacademy.edu.vn/cac-mo-hinh-phat-trien-phan-mem/

Hướng Dẫn Cài Đặt Và Cấu Hình XAMPP Mới Nhất Và Nhanh Nhất

XAMPP là một phần mềm miễn phí với mã nguồn mở được phát triển bởi những người bạn Apache. Gói phần mềm XAMPP chứa các bản phân phối Apache được sử dụng để xây dựng và phát triển các webssite và đặc biệt là ứng dụng web chạy bằng PHP. Dưới đây là hướng dẫn cài đặt Xampp đơn giản và mới nhất.

hướng dẫn lập trình web php
hướng dẫn lập trình web php

1. Xampp là gì?

Phần mềm máy chủ XAMPP cung cấp cho bạn môi trường thích hợp để thử nghiệm các dự án MYSQL, PHP, Apache và Perl trên máy tính cục bộ.

Dạng đầy đủ của XAMPP là X là viết tắt của Cross-platform, (A) máy chủ Apache, (M) MariaDB, (P) PHP và (P) Perl. Nền tảng của nó có thể chạy trên bất kỳ máy tính nào với bất kỳ hệ điều hành nào.

Các cài đặt XAMPP rất đơn giản và nhanh chóng, khi XAMPP được cài đặt trên máy tính của bạn, nó hoạt động như một máy chủ cục bộ hoặc localhost. Bạn có thể kiểm tra các trang web trước khi tải nó lên máy chủ web từ xa. Phần mềm XAMPP này cung cấp cho bạn môi trường thích hợp để thử nghiệm các ứng dụng MYSQL, PHP, Apache và Perl trên máy tính, giúp lập trình PHP, lập trình Web…

Tham khảo: Phần mềm máy tính là gì ?

2. Ưu điểm và nhược điểm của Xampp

Ưu điểm:

+ XAMPP có thể chạy được trên tất cả các hệ điều hành: Từ Cross-platform, Window, MacOS và Linux.
+ XAMPP có cấu hình đơn giản cũng như nhiều chức năng hữu ích cho người dùng. Tiêu biểu gồm: giả lập Server, giả lập Mail Server, hỗ trợ SSL trên Localhost.
+ XAMPP tích hợp nhiều thành phần với các tính năng:
+ Apache
+ PHP (tạo môi trường chạy các tập tin script *.php);
+ MySql (hệ quản trị dữ liệu mysql);
+ Thay vì phải cài đặt từng thành phần trên, giờ đây các bạn chỉ cần cài XAMPP là chúng ta có 1 web server hoàn chỉnh.
+ Mã nguồn mở: Không như Appserv, XAMPP có giao diện quản lý khá tiện lợi. Nhờ đó, người dùng có thể chủ động bật tắt hoặc khởi động lại các dịch vụ máy chủ bất kỳ lúc nào.

Nhược điểm:

+ Tuy nhiên do cấu hình đơn giản nên XAMPP không được hỗ trợ cấu hình Module nên cũng không có Version MySQL. Do đó đôi khi sẽ mang đến sự bất tiện cho từng người. Trong khi WAMP có nhiều tùy chọn hơn vì nó có nhiều phiên bản cho từng thành phần của server như PHP, Apache, MySQL.
+ Dung lượng của XAMPP cũng tương đối nặng, dung lượng file cài đặt của XAMPP là 141Mb, nặng hơn nhiều so với WAMP chỉ 41Mb.

3. Hướng dẫn cài đặt và sử dụng XAMPP đơn giản

Dưới đây là các bước cài đặt xampp trên windows đơn giản và nhanh nhất:

Bước 1: Tới trang web Apache Friends và tải XAMPP. ( Link: https://ift.tt/1pKTJlP)

Hướng dẫn lập trình PHP với XAMPP đơn giản (1)
Hướng dẫn lập trình PHP với XAMPP đơn giản (1)

Tệp XAMPP là 109MB. Sau khi tải xuống, khởi chạy trình cài đặt.

Trong quá trình cài đặt, bạn có thể nhận được các cảnh báo như Windows hỏi bạn có chắc chắn bạn muốn cài đặt phần mềm hay không và trình cài đặt nhắc bạn về phần mềm chống vi-rút. Như bạn sẽ làm khi cài đặt bất kỳ phần mềm nào trên Windows, hãy sử dụng bản tốt nhất của bạn và bạn có thể muốn nhấp vào “Yes” để tiếp tục cài đặt.

Bước 2: Trình hướng dẫn cài đặt XAMPP sẽ hướng dẫn bạn cài đặt. Nhấp vào Tiếp theo.

Hướng dẫn lập trình PHP với XAMPP đơn giản (2)
Hướng dẫn lập trình PHP với XAMPP đơn giản (2)

Trong cửa sổ tiếp theo, bạn sẽ được yêu cầu chọn thành phần nào của phần mềm bạn muốn cài đặt và những phần mềm nào bạn không muốn. Một số tùy chọn, chẳng hạn như Apache và PHP là cần thiết để chạy phần mềm và sẽ tự động được cài đặt, vì vậy chúng được chuyển sang màu xám để bạn không thể chọn chúng.

Đó là vào bạn mà các thành phần bạn muốn cài đặt. Vì chúng tôi muốn chạy WordPress trong môi trường localhost của chúng tôi, hãy để MySQL và phpMyAdmin kiểm tra và bỏ chọn các tùy chọn còn lại.

Hướng dẫn lập trình PHP với XAMPP đơn giản (3)
Hướng dẫn lập trình PHP với XAMPP đơn giản (3)

Bước 3: Tiếp theo, chọn thư mục mà bạn muốn cài đặt XAMPP trên máy tính của bạn. Tôi sẽ tạo một thư mục mới trong C: \ Program Files \ XAMPP.

Hướng dẫn lập trình PHP với XAMPP đơn giản (4)
Hướng dẫn lập trình PHP với XAMPP đơn giản (4)

Trong cửa sổ tiếp theo, bạn sẽ được hỏi liệu bạn có muốn cài đặt Bitnami cho XAMPP, trong đó cung cấp các công cụ miễn phí để cài đặt WordPress, Drupal và Joomla! trên đầu trang của XAMPP.

Vì chúng ta sẽ cài đặt WordPress theo cách thủ công sau trong hướng dẫn này và không cần trình cài đặt miễn phí, hãy bỏ chọn “Tìm hiểu thêm về Bitnami cho XAMPP” và nhấn Next .

Hướng dẫn lập trình PHP với XAMPP đơn giản (5)
Hướng dẫn lập trình PHP với XAMPP đơn giản (5)

Bước 4: Sau khi thực hiện tất cả các bước cài đặt ban đầu này, XAMPP giờ đã sẵn sàng để cài đặt. Nhấp vào Next.

Hướng dẫn lập trình PHP với XAMPP đơn giản (6)
Hướng dẫn lập trình PHP với XAMPP đơn giản (6)

Sau khi cài đặt, bạn sẽ được hỏi xem bạn có muốn bắt đầu Bảng điều khiển XAMPP, cung cấp một giao diện để chạy môi trường cục bộ của bạn hay không. Để tùy chọn này được đánh dấu và nhấn Finish

Hướng dẫn lập trình PHP với XAMPP đơn giản (7)
Hướng dẫn lập trình PHP với XAMPP đơn giản (7)

Bảng điều khiển sẽ tự động mở, nhưng nếu bạn bỏ chọn tùy chọn trong cửa sổ trước, bạn có thể vào thư mục XAMPP trên máy tính của bạn và mở bảng điều khiển XAMPP thay thế.

Nếu quá trình cài đặt diễn ra suôn sẻ và mọi thứ đang chạy suôn sẻ, bảng điều khiển sẽ mở ra với các bản cập nhật văn bản màu đen và màu xanh lam ở dưới cùng.

Bước 5: Khởi động localhost

Hướng dẫn lập trình PHP với XAMPP đơn giản (8)
Hướng dẫn lập trình PHP với XAMPP đơn giản (8)

Để khỏi động localhost bạn vào ổ E: Vào xamppxampp-panel.exe hoặc vào Start => chọn All Programs => chọn XAMPP => chọn Xampp Control Pane.

Lúc này nó sẽ hiển thị một hộp thư thoại bạn chọn Actions => trong mục Start chọn Apache và MySQL.

lập trình PHP. Cài đặt XAMPP

Nếu bạn thấy ứng dụng chuyển sang màu xanh thì việc cài đặt đã hoàn tất nhé.

Nhưng nếu có vấn đề…

Hướng dẫn lập trình PHP với XAMPP đơn giản (9)
Hướng dẫn lập trình PHP với XAMPP đơn giản (9)

Dòng chữ màu đỏ cho thấy nó trông giống như một cuộc xung đột cổng.

Bước 6: Sửa lỗi cổng.

Lý do chính tại sao XAMPP ném lên các lỗi như thế này là do một chương trình khác trên máy của bạn sử dụng các cổng 80 hoặc 443 – các cổng Apache và MySQL cần để chạy.

Nếu bạn đang sử dụng Windows 10, World Wide Web Publishing Service rất có thể sử dụng bài 80. Chương trình này dành cho Internet Information Services (IIS) dành cho Windows® Server, được cài sẵn và nếu bạn không sử dụng nó, bạn chỉ có thể dừng dịch vụ đang chạy trên máy của bạn hoặc thậm chí xóa nó.

Để ngừng chạy dịch vụ, hãy làm như sau:

  • Đi tới Bắt đầu , nhập “services.msc” và chọn kết quả phù hợp nhất.
  • Cuộn xuống trong cửa sổ Services để tìm World Wide Web Publishing Service.
  • Nhấp chuột phải vào nó và chọn Stop.
  • Điều này sẽ giải phóng cổng 80. Khi bạn khởi động lại XAMPP nó sẽ chạy mà không có lỗi.

Nếu điều đó không giải quyết được sự cố, bạn có thể thiết lập quy tắc tường lửa mới để buộc phải bỏ chặn các cổng:

  • Mở Windows Firewall trên máy của bạn và> nhấp vào Cài đặt nâng cao ở bên trái.
  • Nhấp vào Inbound ở bên trái, sau đó nhấp chuột phải vào New Rule.
  • Nhấp vào Cổng và sau đó nhấp vào TCP. Trong trường dưới đây cho các loại Cổng cụ thể trong “80, 443” và nhấp Next.
  • Chọn Allow the Connection rồi nhấn Next.
  • Đảm bảo tất cả các tùy chọn được chọn và nhấp Next.
  • Trong trường name, nhập bất cứ thứ gì bạn muốn, nhưng vì mục đích nhất quán, hãy nhập LOCALHOST1. Nhấp vào Finish.
  • Bây giờ lặp lại các bước 1-6, nhưng đặt tên cho quy tắc mới này là LOCALHOST2 và nhấn Finish.
  • Khởi động lại máy tính của bạn.

Cổng 80 và 443 giờ đây sẽ được mở cục bộ trên máy tính của bạn.

Hướng dẫn lập trình PHP với XAMPP đơn giản (10)
Hướng dẫn lập trình PHP với XAMPP đơn giản (10)

Như vậy bạn có thể thấy cài đặt và sử dụng Xampp rất đơn giản dễ dàng. Đồng thời Xampp có nhiều lợi ích giúp công việc lập trình với XAMPP của bạn nhanh và hiệu quả hơn, tiết kiệm một khoản chi phí lớn. Bây giờ hãy bắt đầu thôi nào!

The post Hướng Dẫn Cài Đặt Và Cấu Hình XAMPP Mới Nhất Và Nhanh Nhất first appeared on Techacademy.

source https://techacademy.edu.vn/huong-dan-cai-dat-va-cau-hinh-xampp/

Lập Trình Blockchain Là Gì ?

Với mức tăng trưởng và nhu cầu tuyển dụng cao, lập trình viên blockchain đang được nhiều doanh nghiệp, tập đoàn săn đón với mức lương hấp, và mở ra những cơ hội phát triển tiềm năng cho người làm trong lĩnh vực công nghệ thông tin. Tuy nhiên, không phải ai cũng hiểu, lập trình blockchain là gì ? công nghệ blockchain là gì ? làm gì và ứng dụng của blockchain ?

I. Blockchain Là Gì ?

Blockchain (hay cuốn sổ cái) là hệ thống cơ sở dữ liệu cho phép lưu trữ và truyền tải các khối thông tin (block). Chúng được liên kết với nhau nhờ mã hóa.

Các khối thông tin này hoạt động độc lập và có thể mở rộng theo thời gian. Chúng được quản lý bởi những người tham gia hệ thống chứ không thông qua đơn vị trung gian.

Nghĩa là khi một khối thông tin được ghi vào hệ thống Blockchain thì không có cách nào thay đổi được. Chỉ có thể bổ sung thêm khi đạt được sự đồng thuận của tất cả mọi người.

Khối thông tin mà chúng ta đang nhắc đến là những cuộc trao đổi, giao dịch trong thực tế.

Lập trình blockchain là gì
Lập trình blockchain là gì

II. Ưu và nhược điểm của Blockchain là gì?

Ưu điểm:

Ưu điểm của Blockchain là đảm bảo tính bảo mật cao, loại bỏ tình trạng đánh cắp hoặc sửa đổi thông tin.

Nhờ nền tảng phi tập trung, các thông tin trong Blockchain không bị kiểm soát bởi một một bên duy nhất. Nó còn được biết đến là “cơ chế đồng thuận phân tán đồng đẳng”.

Nhược điểm:

Dễ bị hacker nhòm ngó: dù được bảo vệ bởi thuật toán đồng thuận Proof of Work nhưng các ứng dụng phát triển trên nền tảng Blockchain vẫn là “con mồi” của hơn 50% các cuộc tấn công mạng.

Việc sửa đổi dữ liệu cực kỳ khó khăn: một khi dữ liệu được đưa vào Blockchain thì rất khó để thay đổi. Tính ổn định vừa là lợi thế nhưng cũng đồng thời là nhược điểm của Blockchain.

Sự bất tiện của private key – khóa riêng: mỗi tài khoản Blockchain sẽ được cấp khóa chung (có thể chia sẻ) và khóa riêng (cần giữ bí mật). Người dùng sử dụng khóa riêng để truy cập vào quỹ tiền của mình. Nếu mất khóa riêng, tiền của họ sẽ bị mất mà họ không thể làm gì được.

III. Blockchain hoạt động như thế nào? Ứng dụng của Blockchain là gì?

Để một block – khối thông tin được thêm vào Blockchain, phải có 4 yếu tố:

Phải có giao dịch: nghĩa là phải có hoạt động mua bán, trao đổi diễn ra. Ví dụ: bạn thực hiện mua hàng trên Amazon
Giao dịch đó phải được xác minh: mọi thông tin liên quan đến giao dịch như thời gian, địa điểm, số tiền giao dịch, người tham gia… đều phải được ghi lại. Ví dụ: khi xem tình trạng đơn hàng, bạn sẽ biết được mình đã order những gì, tổng tiền là bao nhiêu, khi nào thì nhận được hàng…
Giao dịch đó phải được lưu trữ trong block: bất cứ lúc nào bạn cũng xem lại được thông tin đơn hàng mà mình đã thực hiện. Chúng được lưu trữ trong mục “Quản lý đơn hàng”.
Block đó phải nhận được hash (hàm chuyển đổi một giá trị sang giá trị khác): chỉ khi nhận được hash thì một block mới có thể được thêm vào blockchain.
Công nghệ Blockchain cho phép trao đổi tài sản/thực hiện giao dịch mà không cần có sự chứng kiến của người thứ ba hoặc không cần dựa trên sự tin tưởng. Hay nói cách khác, Blockchain là nền tảng cho sự ra đời của các hợp đồng thông minh.

IV. Lập trình blockchain bằng ngôn ngữ nào ?

Bạn có bao giờ thắc mắc về sự xuất hiện đột ngột và phổ biến của Blockchain không? Nó là gì? Blockchain đúng nghĩa là một chuỗi các khối đúng như tên gọi! Chỉ là “khối” trong ngữ cảnh này là thông tin kỹ thuật số được kết nối bằng mật mã. Mỗi khối này chứa một hàm băm mật mã liên kết với khối trước đó, dấu thời gian và thông tin kỹ thuật số trong khối. Các khối này được cấu trúc theo cách rất khó sửa đổi dữ liệu và do đó chúng đảm bảo tính minh bạch đồng thời duy trì bảo mật.

Blockchain thực sự đồng nghĩa với bảo mật vì việc giả mạo các khối này là điều không thể! Và điều đó làm cho công nghệ này trở nên rất phổ biến trong các lĩnh vực như ngân hàng, tài chính, v.v. Thực tế, Blockchain lần đầu tiên được phổ biến khi nó được sử dụng trong việc triển khai BitCoin.

Sau tất cả, mọi người muốn tiền của họ được bảo mật hết mức có thể! Và hiện tại, các nhà phát triển Blockchain đang có nhu cầu cao. Học các khóa học lập trình hàng đầu cho Phát triển Blockchain chắc chắn sẽ mang lại cho bạn lợi thế trong công việc và mức lương hấp dẫn.

lập trình blockchain
lập trình blockchain

1. C++

C++ phổ biến trên toàn thế giới công nghệ và điều này đúng ngay cả trong công nghệ Blockchain. C++ rất phổ biến đối với blockchain vì nhiều khả năng của nó như chuyển ngữ nghĩa, kiểm soát ban đầu đối với bộ nhớ, đa luồng nâng cao và các tính năng hướng đối tượng khác như nạp chồng hàm, đa hình thời gian chạy, v.v. Các tính năng OOPS khác nhau này của C++ cho phép các nhà phát triển Blockchain để dễ dàng tạo khuôn dữ liệu và các chức năng với nhau trong một module duy nhất, giống như Blockchain tạo khuôn các khối bằng chuỗi mật mã. Trên thực tế, C++ cũng rất phổ biến với Blockchain như Bitcoin, là một loại tiền điện tử và việc triển khai Blockchain lần đầu tiên được viết bằng C++.

2. Python

Python đang nhanh chóng trở thành ngôn ngữ lập trình phổ biến nhất trên thế giới và nếu bạn là một nhà phát triển mới có kinh nghiệm về Python, thì nó có thể là ngôn ngữ Blockchain tốt nhất cho bạn. Một vấn đề với Python là nó là một ngôn ngữ thông dịch và điều đó tạo ra một số vấn đề cho các hoạt động mật mã phức tạp trong Blockchain. Tuy nhiên, Python là một ngôn ngữ hướng đối tượng giúp quản lý nhiều chi phí liên quan đến hiệu suất của nó. Một lợi ích khác của Python là các nhà phát triển có thể tạo nguyên mẫu cho ý tưởng của họ một cách nhanh chóng với bất kỳ mã hóa dài dòng nào được yêu cầu. Python cũng có hỗ trợ mã nguồn mở rất lớn, điều này làm cho nó trở nên lý tưởng cho Blockchain. Có rất nhiều thư viện Python, plugin và các tài nguyên khác có sẵn trực tuyến cho hầu hết mọi vấn đề bạn có thể gặp phải trong quá trình phát triển Blockchain.

3. Java

Java cung cấp sự cạnh tranh gay gắt với C ++ về mức độ phổ biến và hữu ích. Điều này cũng đúng trong công nghệ Blockchain! Java có một Giao diện lập trình ứng dụng (API) phong phú bao gồm nhiều lớp, gói, giao diện Java, v.v. Điều này hữu ích cho việc xây dựng các ứng dụng mà không nhất thiết phải biết các triển khai bên trong của chúng. Ngoài ra, một thuộc tính của Java đặc biệt hữu ích trong Blockchain là tính di động của nó. Các chương trình Java có thể được chuyển sang các nền tảng khác nhau nhờ chức năng WORA (“write once, run anywhere”, “viết một lần, chạy mọi nơi”) của nó. Các chương trình này không phụ thuộc vào kiến ​​trúc dành riêng cho hệ thống vì chúng sử dụng JVM (Java Virtual Machine – Máy ảo Java) chung để thực thi. Tính di động này cùng với các tính năng phổ biến khác của Java làm cho nó trở nên hoàn hảo cho Blockchain.

4. Solidity

Solidity là một trong những ngôn ngữ lập trình blockchain phát triển nhanh nhất được tạo ra để viết các giao ước thông minh chạy trên Máy ảo Ethereum (Ethereum Virtual Machine – EVM). Nó được phát triển bởi Ethereum, một nền tảng và hệ điều hành máy tính phân tán dựa trên blockchain. Vì Solidity được tạo ra để lưu ý đến Blockchain, nó phù hợp để giải quyết nhiều vấn đề mà các nhà phát triển Blockchain phải đối mặt. Solidity được phát triển tương tự như cú pháp ECMAScript nhưng nó có các tính năng như kiểu trả về khác nhau, nhập tĩnh, v.v. Vì vậy, nó là một ngôn ngữ tuyệt vời để học nếu bạn muốn tập trung chuyên sâu vào phát triển Blockchain.

5. Vyper

Vyper là một ngôn ngữ lập trình Blockchain mới có nguồn gốc từ Python 3. Vì vậy, cú pháp Vyper cũng là cú pháp Python 3 hợp lệ, mặc dù Vyper không có tất cả các tính năng của Python. Vyper được tạo ra để thay thế cho Solidity. Nó thường được sử dụng cho Máy ảo Ethereum (EVM), giống như Solidity. Tuy nhiên, Vyper có cấu trúc điều khiển khác với Solidity và nó cũng xử lý các vấn đề bảo mật theo cách khác. Vyper cũng đã loại bỏ nhiều chức năng OOPS trong Solidity cùng với các tính năng khác như vòng lặp vô hạn, công cụ sửa đổi, gọi đệ quy, v.v. Điều này giúp tránh các vấn đề bảo mật phát sinh do các tính năng này. Vì vậy, nếu bạn muốn có một ngôn ngữ phát triển Blockchain để viết các giao ước thông minh, hãy xem Vyper!

6. Golang

Go là một ngôn ngữ lập trình tuyệt vời để xây dựng hệ thống Blockchain nhanh chóng và hiệu quả. Đây là ngôn ngữ tốt nhất để tạo hyper ledger fabric, là nền tảng để phát triển các ứng dụng cho Blockchain. Vì Go được gõ tĩnh và là một ngôn ngữ lập trình biên dịch, nên nó hoàn hảo cho việc mã hóa Blockchain. Nó cũng có các tính năng khác giúp nâng cao hiệu suất như generics, lớp và kế thừa, hàm tạo, chú thích, ngoại lệ, v.v. Go cũng là một ngôn ngữ không phức tạp có thể học dễ dàng. Điều này là hiển nhiên bởi thực tế là có khoảng 800.000+ nhà phát triển trên mạng ngôn ngữ Go.

7. C#

C# về mặt cú pháp tương tự như Java và C++ nên nó lý tưởng như một ngôn ngữ lập trình Blockchain. Mặc dù ban đầu C# chỉ được tạo ra như một ngôn ngữ của Microsoft, nhưng bây giờ nó đã khá phổ biến và được coi là một trong những ngôn ngữ lập trình tốt nhất cho blockchain. Các nhà phát triển mã nguồn mở có thể dễ dàng tạo mã di động cao bằng C# sẽ chạy trên tất cả các thiết bị và nhiều hệ điều hành như Windows, Linux, Mac, Android, v.v. Ngoài ra, vì C# là ngôn ngữ lập trình hướng đối tượng, các nhà phát triển Blockchain có thể đạt được tối đa hiệu suất khi phát triển blockchain tiếp theo của họ. Các dự án được viết bằng C# bao gồm Stratis, một nhà cung cấp dịch vụ Blockchain cho phép các doanh nghiệp dễ dàng tạo ứng dụng trên nền tảng Blockchain.

8. JavaScript

JavaScript là ngôn ngữ web phổ biến nhất và nhờ NodeJS, một môi trường thời gian chạy JavaScript, JavaScript cũng khá phổ biến với các nhà phát triển Blockchain. Họ có thể xây dựng các ứng dụng Blockchain sáng tạo và có khả năng cao bằng JavaScript vì nó đã được cài đặt trên hầu hết các hệ thống. Đây là một lợi thế lớn của JavaScript so với các ngôn ngữ lập trình khác vì mọi hệ thống web đều sử dụng JavaScript ở một mức độ nào đó. Vì vậy, các nhà phát triển không cần phải lo lắng về việc tích hợp trong khi sử dụng JavaScript và họ có thể chỉ tập trung vào logic ứng dụng cho Blockchain. Một ví dụ về điều này là Bộ phát triển Lisk Sidechain (Sidechain Development Kit – SDK) cho phép các nhà phát triển xây dựng, xuất bản và phân phối các ứng dụng Blockchain của họ được viết bằng JavaScript.

9. Simplicity

Tính đơn giản là một ngôn ngữ phát triển Blockchain cấp cao được tạo ra cho các hợp đồng thông minh. Trên thực tế, nó là một trong những ngôn ngữ lập trình tốt nhất để viết hợp đồng thông minh, cho cả lập trình viên chuyên nghiệp và nhà phát triển mã nguồn mở. Tính đơn giản cũng tập trung vào việc giảm bớt sự hiểu biết phức tạp và mức độ thấp của Bitcoin Script. Vì nó ẩn các thành phần logic cấp thấp khỏi các nhà phát triển Bitcoin, tính đơn giản làm tăng năng lực làm việc của các nhà phát triển, giúp tạo ra một giai đoạn phát triển nhanh hơn nhiều. Tính đơn giản cũng tương thích với nền tảng Elements, là một nền tảng Blockchain mã nguồn mở với các khả năng sidechain. Vì vậy, các nhà phát triển Blockchain xây dựng các sidechains trên Elements cũng có thể sử dụng nhiều chức năng và tính năng đơn giản.

10. Rholang

Rholang là một ngôn ngữ lập trình tuyệt vời để phát triển các giao ước thông minh. Ngôn ngữ này có cách tiếp cận chức năng hơn là cách tiếp cận hướng đối tượng, khá hữu ích trong việc giải quyết nhiều vấn đề blockchain. Đây cũng là một trong những lý do cho sự phổ biến của nó. Các ứng dụng Rholang đánh giá toàn bộ chương trình như một chuỗi các chức năng và giải quyết chúng một cách tuần tự. Điều này khác biệt rõ rệt so với các ngôn ngữ như C hoặc Python sử dụng các biến để lưu trữ dữ liệu và thay đổi giá trị của các biến theo thời gian. Do đó, Rholang có một mô hình lập trình chức năng hơn là một mô hình hướng đối tượng với nó là ngôn ngữ phát triển Blockchain phổ biến nhất trong danh mục này.

Trên đây là bài viết về lập trình blockchain có 10 ngôn ngữ lập trình hay được dùng. Hi vọng với những nội dung trên có thể giúp bạn hiểu biết thêm về Blockchain.

The post Lập Trình Blockchain Là Gì ? first appeared on Techacademy.

source https://techacademy.edu.vn/lap-trinh-blockchain-la-gi/

Các Phương Pháp Kiểm Thử Phần Mềm

Kiểm thử phần mềm là công việc nhằm đảm bảo hoạt động của ứng dụng vừa được phát triển. Để thực hiện công việc này tùy theo khả năng, kinh nghiệm mà kiểm thử viên có thể áp dụng các phương pháp kiểm thử phần mềm cơ bản sau: White box testing, Black box testing, Grey box testing.

I. Các Kỹ Thuật Kiểm Thử Phần Mềm

Trong bài học kiểm thử phần mềm này, Tehcacademy giới thiệu 3 kỹ thuật kiểm thử phần mềm phổ biến và thông dụng nhất hiện nay.

1. Phương pháp kiểm thử phần mềm White box testing

White box testing (Kiểm tra hộp màu trắng) là một kỹ thuật kiểm tra cấu trúc bên trong của phần mềm và lấy dữ liệu thử nghiệm từ logic / mã chương trình. Là phương pháp kiểm thử mà các chuyên gia tester tập trung vào các dữ liệu đầu vào và ra, truy cập thẳng vào bên trong source code. Các tên khác của thử nghiệm hộp trắng là thử nghiệm hộp mở, kiểm tra theo hướng logic hoặc thử nghiệm điều khiển đường dẫn hoặc thử nghiệm cấu trúc.

Phương pháp kiểm thử phần mềm White box testing
Phương pháp kiểm thử phần mềm White box testing

Các loại white box testing:

– API testing (application programming interface) – Kiểm thử ứng dụng bằng cách sử dụng các hàm API public và private.

– Code coverage – Là việc tạo các trường hợp test để thỏa mãn một số điều kiện bao phủ code – code coverage (ví dụ như, người thiết kế test có thể tạo ra các trường hợp test sao cho tất cả các câu lệnh của chương trình đều được thực thi ít nhất 1 lần).

– Fault injection methods – cải tiến bao phủ một trường hợp bằng cách đưa một số lỗi vào để test các đường dẫn code.

– Mutation testing methods.

– Static testing – White box testing bao gồm tất cả các phương pháp kiểm thử tĩnh (ví dụ review code).

Với phương pháp kiểm thử này, kiểm thử viên không cần hiểu biết về mã lệnh để xử lý chức năng đó thế nào. Các kiểm thử viên sẽ căn cứ vào tài liệu đặc tả, bản prototype của phần mềm cũng như dựa trên các testcase đã viết để kiểm tra chức năng. Cả hai hình thức trên đề trả về một cách đo độ bao phủ code, sự đo lường được tính bằng phần trăm %.

Ưu điểm:

  • Dễ dàng tự động hóa
  • Cung cấp các quy tắc dựa trên kỹ thuật rõ ràng cho thời điểm ngừng thử nghiệm.
  • Buộc các chuyên gia thử nghiệm phải suy luận cẩn thận về việc test lỗi vì vậy lỗi sẽ được triệt để.

Nhược điểm:

  • Khá tốn thời gian và công sức.
  • Vẫn sẽ tồn tại lỗi.
  • Để kiểm tra được bằng phương pháp này cần có kinh nghiệm và trình độ chuyên sâu về kiểm thử.

2. Phương pháp kiểm thử phần mềm Black box testing

Black box testing (Kiểm thử hộp đen) là một phương pháp kiểm thử phần mềm kiểm tra chức năng của ứng dụng dựa trên các đặc điểm kỹ thuật của nó. Nó còn được gọi là thử nghiệm dựa trên thông số kỹ thuật.

Phương pháp kiểm thử phần mềm Black box testing
Phương pháp kiểm thử phần mềm Black box testing

Các loại kiểm thử Black box:

  • Equivalence partitioning (phân vùng tương đương)
  • Boundary value analysis (phân tích giá trị biên)
  • All-pairs testing (kiểm thử tất cả các cặp)
  • Fuzz testing (cách test: nhập vào các điều kiện sai hoặc data một cách ngẫu nhiên)
  • Model-based testing (Kiểm thử dựa trên model)
  • Traceability matrix (các chức năng của chương trình được tạo thành một ma trận, các trường hợp test là sự kết hợp các dòng hoặc các cột có liên quan)
  • Exploratory testing (kiểm thử chủ yếu dựa vào kinh nghiệm và khả năng focus vào việc test các chức năng của tester)
  • Specification-based testing (kiểm thử dựa vào chức năng).

Việc kiểm thử được tiến hành dựa vào việc kiểm thử chức năng của phần mềm xem nó có phù hợp với yêu cầu của người dùng hay không. Vì vậy, các tester nhập data vào phần mềm và chỉ cần xem kết quả của phần mềm và các mục tiêu test.

Ưu điểm:

  • Các tester khi dùng phương pháp này sẽ không cần liên quan đến code.
  • Có thể tìm được nhiều bug hơn.
  • Việc kiểm thử được thực hiện bởi một cách độc lập với các Dev, cho phép quan điểm khách quan và tránh sự thiên vị.

Nhược điểm:

  • Chỉ có một số lượng nhỏ các đầu vào có thể được kiểm tra và nhiều đường dẫn chương trình hoặc 1 vài phần cuối sẽ không được kiểm tra.
  • Các thử nghiệm có thể thừa nếu nhà thiết kế / nhà phát triển phần mềm đã chạy thử nghiệm.

Vì vậy, black box testing có ưu điểm là sản phẩm phần mềm được kiểm tra theo một quan điểm độc lập tuy vậy vẫn còn khá nhiều nhược điểm đáng lưu ý.

3. Grey box testing

Phương pháp Gray box testing là một trong các phương pháp test phần mềm phổ biến nhất hiện nay. Có thể nói phương pháp Gray Box testing là phương pháp của sự kết hợp giữa White box testing và Black box testing. Kiểm tra hộp màu xám cho khả năng kiểm tra cả hai mặt của một ứng dụng, lớp trình bày cũng như phần mã. Nó chủ yếu là hữu ích trong kiểm thử tích hợp và kiểm tra thâm nhập. Trong Kiểm thử Hộp xám, cấu trúc bên trong sản phẩm chỉ được biết một phần, Tester có thể truy cập vào cấu trúc dữ liệu bên trong và thuật toán của chương trình với mục đích là để thiết kế test case, nhưng khi test thì test như là người dùng cuối hoặc là ở mức hộp đen.

Grey box testing
Grey box testing

Kỹ thuật kiểm tra hộp xám:

– Kiểm tra ma trận: báo cáo trạng thái của dự án.

– Kiểm tra hồi quy : nó ngụ ý chạy lại các trường hợp thử nghiệm nếu các thay đổi mới được thực hiện.

– Kiểm tra mẫu: xác minh ứng dụng tốt cho thiết kế hoặc kiến ​​trúc và các mẫu của nó.

– Kiểm tra mảng trực giao : được sử dụng làm tập hợp con của tất cả các kết hợp có thể.

Ưu điểm:

– Là sự kết hợp của kiểm thử hộp đen và hộp trắng nên sẽ tối ưu hơn.

– Kiểm tra bằng phương pháp hộp màu xám có thể thiết kế kịch bản thử nghiệm phức tạp một cách thông minh hơn.

Nhược điểm:

– Rất khó để liên kết lỗi khi thực hiện kiểm tra hộp xám cho một ứng dụng có hệ thống phân tán.

Trên đây là 3 phương pháp kiểm thử phần mềm cơ bản nhất mà bất cứ một lập trình viên nào cũng cần nắm được. Việc lựa chọn phương pháp nào phụ thuộc vào khả năng cũng như dự án mà bạn thực hiện.

2. Nguyên lý kiểm thử phần mềm

Để đạt được kết quả kiểm thử tối ưu trong khi tiến hành kiểm thử phần mềm mà không đi lệch khỏi mục tiêu là điều cực kì quan trọng, làm thế nào để xác định rằng bạn đang theo đúng chiến lược kiểm thử? Để làm được điều đó, bạn cần tuân thủ một số nguyên lý kiểm thử cơ bản. Dưới đây là bảy nguyên lý kiểm thử phổ biến được áp dụng rộng rãi trong ngành công nghiệp phần mềm.

+ Kiểm thử đưa ra lỗi
+ Kiểm thử cạn kiệt là không thể
+ Kiểm thử càng sớm càng tốt
+ Sự tập trung của lỗi
+ Nghịch lý thuốc trừ sâu
+ Kiểm thử phụ thuộc vào ngữ cảnh
+ Không có lỗi – Sai lầm

7 Nguyên Lý Kiểm Thử Phần Mềm
7 Nguyên Lý Kiểm Thử Phần Mềm

2.1 Kiểm thử đưa ra lỗi

Kiểm thử có thể cho thấy rằng phần mềm đang có lỗi, nhưng không thể chứng minh rằng phần mềm không có lỗi. Kiểm thử được thực hiện bằng những kĩ thuật khác nhau. Kiểm thử làm giảm xác suất lỗi chưa tìm thấy vẫn còn trong phần mềm, ngay cả khi đã kiểm thử nghiêm ngặt phần mềm vẫn có thể còn lỗi. Vì vậy chúng ta phải tìm được càng nhiều lỗi càng tốt.

2.2 Kiểm thử cạn kiệt là không thể

Nguyên lý này nói rằng, kiểm tra mọi thứ trong phần mềm một cách trọn vẹn là không thể. Kiểm thử với tất cả các kết hợp đầu vào và đầu ra, với tất cả các kịch bản là không thể trừ phi nó chỉ bao gồm ít trường hợp thì có thể kiểm thử toàn bộ. Thay vì kiểm thử toàn bộ, việc phân tích rủi ro và dựa trên sự mức độ ưu tiên chúng ta có thể tập trung việc kiểm thử vào một số điểm cần thiết, có nguy cơ lỗi cao hơn.

2.3 Kiểm thử càng sớm càng tốt

Nguyên lý này yêu cầu bắt đầu thử nghiệm phần mềm trong giai đoạn đầu của vòng đời phát triển phần mềm. Các hoạt động kiểm thử phần mềm từ giai đoạn đầu sẽ giúp phát hiện bug sớm hơn. Nó cho phép chuyển giao phần mềm theo yêu cầu đúng thời gian với chất lượng dự kiến.

2.4 Sự tập trung của lỗi

Thông thường, lỗi tập trung vào những module, thành phần chức năng chính của hệ thống. Nếu xác định được điều này bạn sẽ tập trung vào tìm kiếm lỗi quanh khu vực được xác định. Nó được coi là một trong những cách hiệu quả nhất để thực hiện kiểm tra hiệu quả.

2.5 Nghịch lý thuốc trừ sâu

Nếu bạn sử dụng cùng một tập hợp các trường hợp kiểm thử liên tục, sau đó một thời gian các trường hợp kiểm thử không tìm thấy lỗi nào mới. Hiệu quả của các trường hợp kiểm thử bắt đầu giảm xuống sau một số lần thực hiện, vì vậy luôn luôn chúng ta phải luôn xem xét và sửa đổi các trường hợp kiểm thử trên một khoảng thời gian thường xuyên.

2.6 Kiểm thử phụ thuộc vào ngữ cảnh

Theo nguyên tắc này thì việc kiểm thử phụ thuộc vào ngữ cảnh và chúng ta phải tiếp cận kiểm thử theo nhiều ngữ cảnh khác nhau.

Nếu bạn đang kiểm thử ứng dụng web và ứng dụng di động bằng cách sử dụng chiến lược kiểm thử giống nhau, thì đó là sai. Chiến lược để kiểm thử ứng dụng web sẽ khác với kiểm thử ứng dụng cho thiết bị di động của Android.

2.7 Không có lỗi – Sai lầm

Việc không tìm thấy lỗi trên sản phẩm không đồng nghĩa với việc sản phẩm đã sẵn sàng để tung ra thị trường. Việc không tìm thấy lỗi cũng có thể là do bộ trường hợp kiểm thử được tạo ra chỉ nhằm kiểm tra những tính năng được làm đúng theo yêu cầu thay vì nhằm tìm kiếm lỗi mới.

Bài viết này chỉ hy vọng giúp các bạn hiểu cơ bản về “Phương pháp kiểm thử phần mềm” và “Nguyên lý kiểm thử phần mềm” .Bạn cần tìm hiểu thêm để có thể hiểu sâu hơn về các phương pháp cũng như những nguyên lý này cũng như áp dụng hiệu quả nó vào công việc của bạn.

The post Các Phương Pháp Kiểm Thử Phần Mềm first appeared on Techacademy.

source https://techacademy.edu.vn/cac-phuong-phap-kiem-thu-phan-mem/