1. Tích hợp dọc

Trái ngược với “tích hợp ngang”, tích hợp dọc là quá trình tích hợp các hệ thống con theo chức năng của chúng bằng cách tạo ra các thực thể chức năng còn được gọi là silo. Lợi ích của phương pháp này là việc tích hợp được thực hiện nhanh chóng và chỉ liên quan đến các nhà cung cấp cần thiết, do đó, phương pháp này rẻ hơn trong ngắn hạn. Mặt khác, chi phí sở hữu có thể cao hơn đáng kể so với các phương pháp khác, vì trong trường hợp có chức năng mới hoặc nâng cao, cách duy nhất có thể để triển khai (mở rộng hệ thống) là triển khai một silo khác. Không thể sử dụng lại các hệ thống con để tạo ra một chức năng khác.

2. Tích hợp sao

Tích hợp sao còn được gọi là tích hợp spaghetti, là một quá trình tích hợp hệ thống trong đó mỗi hệ thống được kết nối với nhau với mỗi hệ thống con còn lại. Khi quan sát từ góc độ của hệ thống con đang được tích hợp, các kết nối gợi nhớ đến một ngôi sao, nhưng khi sơ đồ tổng thể của hệ thống được trình bày, các kết nối trông giống như mì chính, do đó có tên là phương pháp này. Chi phí thay đổi do các giao diện mà hệ thống con đang xuất. Trong trường hợp các hệ thống con đang xuất giao diện không đồng nhất hoặc độc quyền, chi phí tích hợp có thể tăng lên đáng kể. Thời gian và chi phí cần thiết để tích hợp các hệ thống tăng lên theo cấp số nhân khi thêm các hệ thống con bổ sung. Từ quan điểm tính năng, phương pháp này thường có vẻ thích hợp hơn, do tính linh hoạt cao của việc tái sử dụng chức năng.

3. Tích hợp ngang

Hay còn được gọi là Bus dịch vụ doanh nghiệp (ESB) là một phương pháp tích hợp trong đó một hệ thống con chuyên biệt được dành riêng để giao tiếp giữa các hệ thống con khác. Điều này cho phép cắt giảm số lượng kết nối (giao diện) chỉ còn một kết nối cho mỗi hệ thống con sẽ kết nối trực tiếp với ESB. ESB có khả năng dịch giao diện này sang một giao diện khác. Điều này cho phép cắt giảm chi phí tích hợp và cung cấp tính linh hoạt cao. Với các hệ thống được tích hợp bằng phương pháp này, có thể thay thế hoàn toàn một hệ thống con bằng một hệ thống con khác cung cấp chức năng tương tự nhưng xuất ra các giao diện khác nhau, tất cả điều này hoàn toàn trong suốt đối với phần còn lại của hệ thống con. Hành động duy nhất được yêu cầu là triển khai giao diện mới giữa ESB và hệ thống con mới.

Tuy nhiên, sơ đồ ngang có thể gây hiểu lầm, nếu người ta cho rằng có thể tránh được chi phí chuyển đổi dữ liệu trung gian hoặc chi phí chuyển trách nhiệm theo logic nghiệp vụ.

4. Định dạng dữ liệu chung

Phương pháp tích hợp để tránh mọi bộ điều hợp phải chuyển đổi dữ liệu sang / từ mọi định dạng của ứng dụng khác, các hệ thống tích hợp ứng dụng doanh nghiệp (EAI) thường quy định một định dạng dữ liệu độc lập với ứng dụng (hoặc chung). Hệ thống EAI thường cung cấp dịch vụ chuyển đổi dữ liệu cũng như giúp chuyển đổi giữa các định dạng dành riêng cho ứng dụng và các định dạng phổ biến. Điều này được thực hiện theo hai bước: bộ điều hợp chuyển đổi thông tin từ định dạng của ứng dụng sang định dạng chung của xe buýt. Sau đó, các phép biến đổi ngữ nghĩa được áp dụng cho việc này (chuyển đổi mã zip thành tên thành phố, tách / hợp nhất các đối tượng từ một ứng dụng thành các đối tượng trong các ứng dụng khác, v.v.).

5. Thử thách chung trong các dự án tích hợp

Tích hợp hệ thống có thể là thách thức đối với các tổ chức và những thách thức này có thể làm giảm lợi tức đầu tư tổng thể của họ sau khi triển khai các giải pháp phần mềm mới. Một số thách thức trong số này bao gồm thiếu sự tin tưởng và sẵn sàng chia sẻ dữ liệu với các công ty khác, không sẵn sàng thuê ngoài các hoạt động khác nhau cho bên thứ ba, thiếu thông tin liên lạc và trách nhiệm rõ ràng, bất đồng từ các đối tác về nơi có chức năng, chi phí tích hợp cao, khó tìm tài năng tốt và các tiêu chuẩn API chung. Những thách thức này dẫn đến việc tạo ra các rào cản “ngăn cản hoặc làm chậm quá trình tích hợp hệ thống kinh doanh trong và giữa các công ty”. Giao tiếp rõ ràng và trao đổi thông tin đơn giản là những yếu tố quan trọng trong việc xây dựng tích hợp hệ thống lâu dài có thể hỗ trợ các yêu cầu kinh doanh.

1. Khái niệm

Tích hợp hệ thống tiếng Anh là System Integration – SI. Trong kỹ thuật, nó được hiểu đơn giản là kết nối một chuỗi các hệ thống con với những tính năng khác nhau vào một hệ thống lớn. Những kết nối này đảm bảo các hệ thống con được gắn kết chặt chẽ với nhau như một thể thống nhất. Mỗi hệ thống được vận hành theo mục đích riêng của từng doanh nghiệp. Tích hợp hệ thống là giải pháp đáp ứng mọi yêu cầu phức tạp nhất của doanh nghiệp. Đặc trong trong các vấn đề về công nghệ với yêu cầu tùy biến cao.

Trong công nghệ thông tin, SI giúp tích hợp các hệ thống con rời rạc, các phần mềm ứng dụng lại với nhau. Điều này được thực hiện bằng cách sử dụng các kỹ thuật kết nối. Ví dụ như mạng máy tính, tích hợp ứng dụng, quản lý quy trình, lập trình… Tích hợp hệ thống là quy trình giúp gia tăng giá trị và năng lực của hệ thống mẹ nhờ hợp lực tương tác giữa các hệ thống con.

2. Những lợi ích của việc tích hợp hệ thống

Tích hợp hệ thống giúp doanh nghiệp tối ưu chi phí. Sở dĩ như vậy là nhờ khả năng tích hợp linh hoạt khi được lựa chọn công nghệ, thiết bị, dịch vụ phù hợp. Hơn nữa, tích hợp hệ thống còn giúp tối ưu hóa nhu cầu sử dụng. Nó giúp doanh nghiệp hoạch định và đầu tư theo từng giai đoạn cụ thể. Tất nhiên điều này còn tùy vào khả năng và mức nhu cầu của họ trong giai đoạn đó. Đồng thời nó ngăn chặn các rủi ro từ những môi trường kinh doanh độc hại. Tích hợp hệ thống còn góp phần làm tăng sức cạnh tranh của doanh nghiệp trên thị trường.

Cốt lõi để tích hợp hệ thống thành công nằm ở năng lực của nhà tích hợp hệ thống. Năng lực triển khai của kỹ sư tích hợp là nghệ thuật kết nối hệ thống rời rạc này thành khối sức mạnh hợp nhất. Điều này càng đúng khi các yếu tố phần mềm, phần cứng là như nhau.

3. Giải pháp kết nối tích hợp hệ thống

3.1 Giải pháp xây dựng hạ tầng truyền dẫn IT

Các giải pháp xây dựng hạ tầng IT bao gồm:

  • Mạng LAN/WAN cho các doanh nghiệp.
  • Giải pháp kết nối cho Trung tâm dữ liệu (Data Center)

3.2 Giải pháp cho các doanh nghiệp

Là gói giải pháp cung cấp khả năng kết nối cho các doanh nghiệp từ SME đến lớn. Các giải pháp loại này bao gồm cả phần hệ thống mạng (LAN/WAN), hệ thống tính toán, lưu trữ. Đồng thời chúng còn là các phần mềm hệ thống, các phương án bảo mật theo đúng yêu cầu của khách hàng.

3.2 Giải pháp lưu trữ máy chủ

Thế kỷ XXI được coi là thế kỷ bùng nổ thông tin. Cùng với đó là sự phát triển khái niệm “cloud computing” (điện toán đám mây). Giải pháp này mang lại cho con người nhiều tiện ích hơn nữa. Những lợi ích này thuộc về hệ thống mạng, hệ thống máy chủ và lưu trữ. Khi đó không cần phải phải đầu tư một máy tính đủ mạnh, có dung lượng lưu trữ lớn. Với chiếc máy tính hiện có, chúng ta có thể sử dụng những phần mềm mới nhất, chứa được nhiều dữ liệu hơn. Điện toán đám mây mang lại những tiện ích tuyệt vời. Chúng đến từ những hệ thống máy chủ của nhà cung cấp. Dữ liệu sẽ được chứa tại nhà cung cấp thay vì trên chiếc máy tính của mình. Khi đó, chỉ cần một máy tính có kết nối Internet, bạn hoàn toàn có thể truy xuất dữ liệu của mình mọi lúc mọi nơi.

Điện toán đám mây

Điện toán đám mây

3.4 Giải pháp kết nối cho Data Center (trung tâm dữ liệu)

Ngày nay nhu cầu tập hợp dữ liệu ngày càng cao. Giải pháp này giúp các doanh nghiệp xây dựng cơ sở hạ tầng cho các trung tâm dữ liệu an toàn. Chúng dễ dàng triển khai, mở rộng, quản lý cũng như tiêu hao năng lượng tối thiểu. Các trung tâm dự liệu theo tiêu chuẩn quốc tế đảm bảo an toàn và tối ưu hóa năng lượng và chi phí. Không những vậy, chúng còn giúp khách hàng tập trung hóa cơ sở dữ liệu, quản lý từ xa dễ dàng. Hơn nữa đó còn làm nâng cao hiệu quả sản xuất kinh doanh.

Trung tâm dữ liệu

Trung tâm dữ liệu

1.1 Khái niệm

Kiểm thử tự động: Là xử lý một cách tự động các bước thực hiện các testcase, kiểm thử tự động bằng một công cụ nhằm rút ngắn thời gian kiểm thử.

Kiểm thử tự động: là một kỹ thuật tự động trong đó người kiểm thử tự viết các tập lệnh và sử dụng phần mềm phù hợp để kiểm thử phần mềm. Nó về cơ bản là một quá trình tự động hóa của một quy trình kiểm thử thủ công. Giống như kiểm thử hồi quy, kiểm thử tự động cũng được sử dụng để kiểm thử ứng dụng theo quan điểm tải, hiệu năng và ứng suất.

1.2 Quy trình kiểm thử tự động

Quy trình kiểm thử tự động bao gồm: tester sử dụng các kịch bản tự động (automation scripts) và thực thi các script để chạy ứng dụng với sự giúp sức của các automation tool. Một khi script đã sẵn sàng thì việc thực thi kiểm thử có thể diễn ra nhanh chóng và hiệu quả.

Các hoạt động của kiểm thử tự đông:

  • Phân tích yêu cầu/Xác định môi trường/công cụ
  • Xác định tiêu chí đầu ra
  • Lên kế hoạch và kiểm soát
  • Thiết lập môi trường kiểm thử
  • Triển khai thiết kế kiểm thử
  • Thực thi kiểm thử
  • Phân tích, báo cáo

1.3 Mục đích của kiểm thử tự động

Kiểm thử tự động với các mục đích:

  • Giảm bớt công sức và thời gian thực hiện quá trình kiểm thử
  • Tăng độ tin cậy.
  • Giảm sự nhàm chán cho con người
  • Rèn luyện kỹ năng lập trình cho kiểm thử viên
  • Giảm chi phí cho tổng quá trình kiểm thử

1.4 Kiểm thử tự động khi nào?

Khi nào cần kiểm thử tự động:

  • Không đủ tài nguyên: Khi số lượng TestCase quá nhiều mà kiểm thử viên không thể hoàn tất trong thời gian cụ thể.
  • Kiểm tra hồi quy: Nâng cấp phần mềm, kiểm tra lại các tính năng đã chạy tốt và những tính năng đã sửa. Tuy nhiên, việc này khó đảm bảo về mặt thời gian.
  • Kiểm tra khả năng vận hành phần mềm trong môi trường đặc biệt (Đo tốc độ trung bình xử lý một yêu cầu của Web server, xác định cấu hình máy thấp nhất mà phần mềm vẫn có thể hoạt động tốt).

2. Một số công cụ kiểm thử tự động

Một số công cụ giúp ích trong việc kiểm thử tự động:

  • HP Quick Test Professional
  • Selenium
  • Visual Studio Test Professional
  • WATIR
  • IBM Rational Functional Tester
  • TestComplete
  • Testing Anywhere
  • WinRunner
  • LaodRunner
  • SilkTest

3. Tổng quan về công cụ kiểm thử Selenium

3.1 Giới thiệu về Selenium

Selenium (thường được viết tắt là SE ) là một công cụ kiểm thử phần mềm tự động, được phát triển bởi ThoughtWorks từ năm 2004với tên ban đầu là JavaScriptTestRunner. Đến năm 2007, tác giả Jason Huggins rời ThoughtWorks và gia nhập Selenium team, một phần của Google và phát triển thành Selenium như hiện nay.

Selenium là một công cụ hỗ trợ kiểm tra tự động cho các ứng dụng chạy trên nền web. Selenium hỗ trợ kiểm tra hầu hết trên các trình duyệt phổ biến hiện nay như Firefox, Internet Explorer, Safari,…cũng như các hệ điều hành chủ yếu như Windows, Linux, Mac,…

Selenium hỗ trợ một số lớn các ngôn ngữ lập trình như C#, Java, Perl, PHP, Python, Ruby,…

Selenium có thể kết hợp thêm một số công cụ khác như Bromien, Junit nhưng với người dùng thông thường chỉ cần chạy tự động mà không cần cài thêm các công cụ hỗ trợ.

3.2 Các thành phần của Selenium

Selenium bao gồm một bộ các công cụ hỗ trợ kiểm tra tự động tính năng của ứng dụng web bao gồm: Selenium IDE, Selenium Remote Control (RC), Selenium Web Driver và Selenium Grid.

Hình 3.2 Cấu trúc Selenium

Selenium Integrated Development Environment – Selenium IDE: Đây là công cụ tích hợp trên trình duyệt và khá đơn giản với người dùng, hỗ trợ Record các thao tác để tạo thành các kịch bản kiểm thử và Playback trên các trình duyệt khác.

Selenium Remote Control – Selenium RC: Đối với các kịch bản thực tiễn, cần phải thực hiện các công việc kiểm tra phức tạp với các câu lệnh, Selenium RC hỗ trợ tối đa các công việc này.

Selenium Grid: Hỗ trợ thực hiện kiểm thử trên các trình duyệt song song mà không cần chỉnh sửa kịch bản.

Selenium WebDriver: Là bộ thư viện API nhằm giúp xây dựng ca kiểm thử trên nền tảng của ngôn ngữ lập trình

3.3 Một số ưu điểm và hạn chế của Selenium

Ưu điểm :

  • Mã nguồn mở: Đây là điểm mạnh nhất của Selenium khi so sánh với các test tool khác. Selenium không mất phí bản quyền hay thời hạn sử dụng.
  • Cộng đồng hỗ trợ khá mạnh mẽ, đặc biệt là nhà phát triển là Google. Đơn giản, dễ cài đặt, dễ làm việc
  • Selenium hỗ trợ nhiều ngôn ngữ lập trình và hỗ trợ chạy trên nhiều OS khác nhau. Dễ dàng điều chỉnh thông qua các plugin.
  • Hỗ trợ các tệp tin selenium user-extensions.js.
  • Tự động hoàn chỉnh cho tất cả các lệnh Selenium thường gặp.

Hạn chế :

  • Selenium chỉ hỗ trợ những ứng dụng web
  • Các ứng dụng trên moblie không thể sử dụng Selenium
  • Selenium là một tool miễn phí, do đó không có hỗ trợ từ nhà cung cấp mặc dù có thể tìm thấy giúp đỡ từ đông đảo cộng đồng sử dụng Selenium
  • Người sử dụng cần có kiến thức về ngôn ngữ lập trình

Quản lý dự án phần mềm là tập hợp các công việc được thực hiện bởi một tập thể (có thể có chuyên môn khác nhau, thực hiện công việc khác nhau, thời gian tham gia dự án khác nhau) nhằm đạt được một kết quả như dự kiến, trong thời gian dự kiến, với một kinh phí dự kiến. Trong thuật ngữ của chuyên ngành Công nghệ phần mềm, Quản lý dự án phần mềm là các hoạt động trong lập kế hoạch, giám sát và điều khiển tài nguyên dự án (ví dụ như kinh phí, con người), thời gian thực hiện, các rủi ro và quy trình thực hiện dự án nhằm đảm bảo thành công cho dự án. Quản lý dự án phần mềm cần đảm bảo cân bằng giữa ba yếu tố: thời gian, tài nguyên và chất lượng. Ba yếu tố này được gọi là tam giác dự án.

Quy trình quản lý dự án trong phần mềm

Quy trình quản lý dự án phần mềm là quy trình vận dụng những kiến thức, kỹ năng và kỹ thuật công nghệ vào hoạt động của dự án để đạt được mục tiêu của dự án đặt ra. Những ứng dụng này được đưa vào phần mềm theo một tiêu chuẩn hóa của quản lý dự án theo tiêu chuẩn PMI.

Để đảm bảo dự án thành công, các thành viên dự án phải đảm bảo:

  • Lựa chọn quy trình phù hợp để đạt được mục tiêu của dự án
  • Tuân theo các yêu cầu để đáp ứng được nhu cầu và mong đợi của các bên liên quan.
  • Cân bằng được các yêu cầu (nhân tố) cạnh tranh trong dự án như: phạm vi công việc, ngân sách, tiến độ, chất lượng, rủi ro, thay đổi. Tùy theo quy mô của từng dự án mà các mỗi giai đoạn lại có thể gồm những quy trình nhỏ hơn.

Ngoài các lợi ích chiến lược nêu trên phần mềm còn cung cấp đầy đủ các tính năng hệ thống. Việc bảo mật được tiến hành một cách tuyệt đối nghiêm ngặt. Việc phân quyền được cụ thể đến từng vai trò của người sử dụng.Quy trình kiểm tra và giám sát dự án quản lý phần mềm bao gồm 5 giai đoạn.

1. Khởi tạo dự án (Initiating): Giai đoạn này thực hiện việc định nghĩa một dự án mới hoặc một phát sinh (hoặc trộn lẫn) mới của một dự án có sẵn như: Xác định yêu cầu của dự án, mức độ ưu tiên của dự án, phân tích các yêu cầu đầu tư, phân công trách nhiệm cho các bộ phận triển khai.

2. Lập kế hoạch dự án (Planning): Giai đoạn này yêu cầu thiết lập phạm vi công viêc của dự án, điều chỉnh lại mục tiêu và xác định đường đi tới mục tiêu đó.

3. Triển khai (Executing): Giai đoạn này thực hiện hoàn thành các công việc được xác định trong phần lập kế hoạch để đảm bảo các yêu cầu của dự án.

4. Giám sát và kiểm soát (Monitoring & Control): Giai đoạn này yêu cầu việc theo dõi, rà soát và điều chỉnh lại tiến độ và khả năng thực hiện của dự án. Theo dõi các rủi ro, thay đổi, phát sinh trong quá trình thực hiện và có những đề xuất điều chỉnh kịp thời.

5. Kết thúc (Closing): Giai đoạn này thực hiện để kết thúc tất cả các hoạt động của dự án để chính thức đóng lại dự án.

Các hoạt động chính trong quản lý dự án phần mềm

1. Xác định các bước thực hiện dự án phần mềm

Xác định yêu cầu chung

Trước tiên, cần xác định các yêu cầu chức năng (công việc phần mềm thực hiện) cũng như phi chức năng (công nghệ dùng để phát triển phần mềm, sử dụng trong hệ điều hành) của phần mềm. Tiếp theo cần xác định rõ tài nguyên cần thiết để xây dựng phần mềm. Tài nguyên ở đây có thể gồm có nhân tố con người, các thành phần, phần mềm có thể sử dụng lại, các phần cứng hoặc công cụ có sẵn cần dùng đến; trong đó nhân tố con người là quan trọng nhất. Điều cuối cùng là xác định thời gian cần thiết để thực hiện dự án. Trong quá trình này cần phải nắm bắt được bài toán thực tế cần giải quyết cũng như các hoạt động mang tính nghiệp vụ của khách hàng để có thể xác định rõ ràng yêu cầu chung của đề án, xem xét dự án có khả thi hay không.

Viết đề án

Viết đề án là quá trình xây dựng tài liệu mô tả đề án để xác định phạm vi của dự án, trách nhiệm của những người tham gia dự án; là cam kết giữa người quản lý dự án, người tài trợ dự án và khách hàng. Nội dung của tài liệu mô tả đề án thường có những nội dung sau:

  • Bối cảnh thực hiện dự án: Căn cứ pháp lý để thực hiện dự án, hiện trạng công nghệ thông tin của khách hàng trước khi có dự án, nhu cầu ứng dụng phần mềm của khách hàng, đặc điểm và phạm vi của phần mềm sẽ xây dựng.
  • Mục đích và mục tiêu của dự án: xác định mục đích tổng thể, tin học hóa hoạt động nào trong quy trình nghiệp vụ của khách hành, xác định mục tiêu của phần mềm gồm lượng dữ liệu xử lý, lợi ích phần mềm đem lại.
  • Phạm vi dự án: Những người liên quan tới dự án, các hoạt động nghiệp vụ cần tin học hóa.
  • Nguồn nhân lực tham gia dự án: Cán bộ nghiệp vụ, người phân tích, người thiết kế, người lập trình, người kiểm thử, người cài đặt triển khai dự án cho khách hàng, người hướng dẫn khách hàng sử dụng phần mềm, người bảo trì dự án phần mềm.
  • Ràng buộc thời gian thực hiện dự án: Ngày nghiệm thu dự án, ngày bàn giao dự án.
  • Ràng buộc kinh phí: Kinh phí trong từng giai đoạn thực hiện dự án.
  • Ràng buộc công nghệ phát triển: Công nghệ nào được phép sử dụng để thực hiện dự án.
  • Chữ ký các bên liên quan tới dự án.

2. Lập kế hoạch thực hiện dự án

Lập kế hoạch thực hiện dự án là hoạt động diễn ra trong suốt quá trình từ khi bắt đầu thực hiện dự án đến khi bàn giao sản phẩm với nhiều loại kế hoạch khác nhau nhằm hỗ trợ kế hoạch chính của dự án phần mềm về lịch trình và ngân sách.

Các loại kế hoạch thực hiện dự án

  • Kế hoạch đảm bảo chất lượng: Mô tả các chuẩn, các quy trình được sử dụng trong dự án.
  • Kế hoạch thẩm định: Mô tả các phương pháp, nguồn lực, lịch trình thẩm định hệ thống.
  • Kế hoạch quản lý cấu hình: Mô tả các thủ tục, cấu trúc quản lý cấu hình được sử dụng.
  • Kế hoạch bảo trì: Dự tính các yêu cầu về hệ thống, chi phí, nỗ lực cần thiết cho bảo trì.
  • Kế hoạch phát triển đội ngũ: Mô tả kĩ năng và kinh nghiệm của các thành viên trong nhóm dự án sẽ phát triển như thế nào.

Quy trình lập kế hoạch thực hiện dự án

  • Thiết lập các ràng buộc của dự án: thời gian, nhân lực, ngân sách
  • Đánh giá bước đầu về các “tham số” của dự án: quy mô, độ phức tạp, nguồn lực
  • Xác định các mốc thời gian trong thực hiện dự án và sản phẩm thu được ứng với mỗi mốc thời gian
  • Trong khi dự án chưa hoàn thành hoặc chưa bị hủy bỏ thì thực hiện lặp đi lặp lại các công việc sau:
  1. Lập lịch thực hiện dự án
  2. Thực hiện các hoạt động theo lịch trình
  3. Theo dõi sự tiến triển của dự án, so sánh với lịch trình
  4. Đánh giá lại các tham số của dự án
  5. Lập lại lịch thực hiện dự án cho các tham số mới
  6. Thỏa thuận lại các ràng buộc và sản phẩm bàn giao của mỗi mốc thời gian
  7. Nếu có vấn đề nảy sinh thì xem xét lại các kĩ thuật khởi đầu đưa ra các biện pháp cần thiết

Cấu trúc kế hoạch thực hiện dự án

  • Tổ chức dự án
  • Phân tích các rủi ro
  • Yêu cầu về tài nguyên phần cứng, phần mềm
  • Phân công công việc
  • Lập lịch dự án
  • Cơ chế kiểm soát và báo cáo.

Là một quy trình phát triển phần mềm theo mô hình linh hoạt (agile). Với nguyên tắc chủ đạo là chia nhỏ phần mềm cần sản xuất ra thành các phần nhỏ để phát triển (các phần nhỏ này phải đọc lập và Release được), lấy ý kiến khách hàng và thay đổi cho phù hợp ngay trong quá trình phát triển để đảm bảo sản phẩm release đáp ứng những gì khách hàng mong muốn. Scrum chia dự án thành các vòng lặp phát triển gọi là các sprint. Mỗi sprint thường mất 2- 4 tuần (30 ngày) để hoàn thành. Nó rất phù hợp cho những dự án có nhiều sự thay đổi và yêu cầu tốc độ cao.

1. Đặc điểm của Quy trình phát triển phần mềm SCRUM

  • Scrum (hay agile nói chung) được xếp vào nhóm “Feature-driven development”. Sản phầm được phát triển theo tính năng, chứ không phát triển sản phẩm theo kiến trúc hệ thống.
  • Scrum giảm thiểu tài nguyên dành cho việc quản lý mà tập trung nhiều hơn cho những công việc liên quan trực tiếp đến việc làm ra sản phẩm. Bằng cách giảm vai trò quản lý (PM) bằng cách đẩy việc quản lý tới từng người.
  • Giảm thời gian dành cho việc viết tài liệu bằng cách tăng thời gian trao đổi trực tiếp. Thông thường khi estimate công việc, thì team estimate cả thời gian dành cho communication để hoàn thành task đó nữa.
  • Tập trung vào sản phẩm, sản phẩm mới là đích cuối cùng chứ không phải qui trình.

2. Ưu điểm, nhược điểm của mô hình Scrum

ƯU ĐIỂM:

  • Một người có thể làm nhiều việc ví dụ như dev có thể test
  • Phát hiện lỗi sớm hơn rất nhiều so với các phương pháp truyền thống
  • Khách hàng nhanh chóng thấy được sản phẩm qua đó đưa ra phản hồ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 là 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 khi có quá nhiều yêu cầu thay đổi từ khách hàng.
  • Vai trò của PO (Product Owner) 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.

3. Các nhân tố cấu tạo nên quy trình phát triển phần mềm theo mô hình Scrum

Một cách đơn giản có 03 thành tố quan trọng cấu thành nên SCRUM: Tổ chức (Organization), Qui trình (Process),  Tài liệu (Atifacts). Trong mỗi thành tố có 03 thành tố con. Như vậy, chúng ta chỉ cần hiểu và áp dụng được 9 thành tố này là có thể áp dụng 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):  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 (Họp để hoạch định cho mỗi giai đoạn)
    • Sprint Review (Họp để tổng kết cho mỗi giai đoạn)
    • Daily Scrum Meeting (Họp review hàng ngày)

3.1 Tổ chức của dự án(Organization)

Quy trình phát triển phần mềm
  • 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, họ sẽ tham gia 1 phần vào quy trình phát triển phần mềm. 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, giúp đỡ cho Team thực hiện công việc phát triển sản phẩm một cách tốt nhất.

  • Development Team (Nhóm phát triển)

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. Đồng thời nhóm cũng 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. Nếu dự án lớn chúng ta cần chia ra thành các dự án nhỏ.

3.2 Tài liệu (Atifacts)

  • 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 trong quy trình phát triển phần mềm. Danh sách này do Product Owner quyết định. Nó thường xuyên được cập nhật để đáp ứng được nhu cầu thay đổi của khách hàng cũng như các điều kiện của dự án.

Quy trình phát triển phần mềm
  • Sprint Backlog

Sprint là một giai đoạn phát triển trong quá trình phát triển sản phẩm, nó được khuyến khích có chiều dài từ 2 – 4 tuần. Mỗi Sprint được xác định bằng thời gian phát triển, danh sách các chức năng phát triển (Sprint Backlog).

Sprint Backlog là danh sách chức năng phát triển trong Sprint, nó được quyết định bởi cuộc họp Sprint Planning. Sprint Backlog là các chức năng được chọn từ Product Backlog dựa trên mức độ ưu tiên và khả năng của team phát triển.

Quy trình phát triển phần mềm
  • Estimation (ước lượng)

Trong SCRUM thì các thành viên của Team sẽ tự lựa chọn Task cho mình và ước lượng thời gian phát triển dự  kiến và chịu trách nhiệm với ước lượng này. Sau khi hoàn thành sẽ cập nhật vào bảng Sprint Backlog.

Quy trình phát triển phần mềm

3.3 Quy trình(Process)

Quy trình phát triển phần mềm
  • Sprint Planning meeting  (Họp lập kế hoạch cho mỗi Sprint)

Như  chúng ta đã biết ở trên Sprint là một giai đoạn phát triển có thời gian từ 2-4 tuần. Để chuẩn bị cho mỗi Sprint team cần phải họp để xác định những chức năng nào (story) sẽ phát triển trong giai đoạn này (sprint backlog), kết quả đầu ra dự kiến (Goal, kết quả Release), Estimate (ước lượng ai làm việc gì) và thảo luận các giải pháp. Tất cả được ghi thành biên bản để có cơ sở thực hiện và Review sau này.

  • Sprint Review

Là cuộc họp để đánh giá lại kết quả thực hiện của Sprint vừa qua, xác định những chức năng được Release, những chức năng tiếp tục sửa hoặc phát triển thêm, xác định những vấn đề phát sinh và bàn phương án giải quyết, bổ sung Product Backlog v….

  • Daily Scrum Meeting (hay còn gọi là Standup Meeting)
    • Daily Scrum Meeting là cuộc họp hàng ngày và được đề nghị không quá 15 phút và họp đứng để đảm bảo thời gian họp không bị kéo dài vào đầu mỗi ngày, mỗi thành viên chỉ trả lời 3 câu hỏi:
    • Phát sinh vấn đề gì trong quy trình phát triển phần mềm?
    • Hôm nay bạn sẽ làm gì
    • Hôm qua bạn làm được gì?
    • Nếu thành viên gặp vấn đề thì nên làm việc riêng để giải quyết để không mất nhiều thời gian của các thành viên.  Scrum Master phải đảm bảo cuộc họp này được thực hiện đúng qui định.
    • Các Sprint sẽ được lặp đi lặp lại cho tới khi nào các hạng mục trong Product Backlog đều được hoàn tất hoặc khi Product Owner quyết định có thể dừng dự án căn cứ tình hình thực tế. Do sử dụng chiến thuật “có giá trị hơn làm trước” nên các hạng mục mang lại nhiều giá trị hơn cho chủ dự án luôn được hoàn tất trước. Do đó Scrum luôn mang lại giá trị cao nhất cho người đầu tư cho dự án. Do quy trình luôn luôn được cải tiến, nhóm Scrum thường có năng suất lao động rất cao. Đây là hai lợi ích to lớn mà quy trình phát triển phần mềm Scrum mang lại cho tổ chức.

4. So sánh mô hình Scrum và mô hình waterfall, Sprial

Đặc điểmWaterfallSpiralScrum
Xác định các giai đoạn phát triểnBắt buộcBắt buộcChỉ có giai đoạn lập kế hoạch và kết thúc
Sản phẩm cuối cùngĐược xác định trong quá trình lập kế hoạchĐược xác định trong quá trình lập kế hoạchXác định trong suốt quá trình dự án
Chi phí sản xuấtĐược xác định trong quá trình lập kế hoạchThay đổi cục bộXác định trong quá trình xây dựng dự án
Ngày hoàn thành sản phẫmĐược xác định trong quá trình lập kế hoạchThay đổi cục bộXác định trong quá trình xây dựng dự án

(Thao khao: topdev.vn)

1. Waterfall model – Mô hình thác nước

Quy trình phát triển phần mềm
  • Mô tả
    • Mô hình thác nước là mô hình áp dụng theo tính tuần tự của các giai đoạn phát triển phần mềm
    • Có nghĩa là: giai đoạn sau chỉ được thực hiện tiếp khi giai đoạn trước đã kết thúc
    • Không được quay lại giai đoạn trước để xử lí các thay đổi trong yêu cầu
    • Đây được coi là mô hình phát triển phần mềm đầu tiên.
  • Áp dụng
    • Thường được áp dụng cho các dự án không thường xuyên bị thay đổi về yêu cầu.
  • Đặc điểm
    • Ưu điểm:
      • Dễ sử dụng, dễ tiếp cận
      • Các giai đoạn và hoạt động đượ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:
      • Rất khó để quay lại giai đoạn nào khi nó đã kết thúc
      • Ít tính linh hoạt và phạm vi điều chỉnh của nó khá là khó khăn, tốn kém.

2. V- Shaped Model- Mô hình chữ V

Quy trình phát triển phần mềm
  • Mô tả
    • Đây là mô hình mở rộng từ mô hình thác nước
    • Thay vì di chuyển xuống theo tuần tự các bước thì quy trình sẽ đi theo hình chữ V
  • Áp dụng
    • Yêu cầu phần mềm phải xác định rõ ràng
    • Công nghệ phần mềm và các công cụ phải được tìm hiểu kĩ
  • Đặc điểm
    • Ưu điểm:
      • Đơn giản dễ sử dụng
      • Phấn phối cụ thể theo mỗi giai đoạn
      • Thực hiện verification và validation sớm trong mỗi giai đoạn phát triển
    • Nhược điểm:
      • Phạm vi điều chỉnh khá là khó khăn và tốn kém.

3. Spiral Model – Mô hình xoắn ốc

Quy trình phát triển phần mềm
  • 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 nhiều 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, …
  • Áp dụng
    • 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
  • Đặc điểm
    • Ưu điểm:
      • Estimates (i.e. budget, schedule, etc.) trở nên 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.
      • Có sự tham gia sớm của deverlopers
      • Quản lý rủi ro và phát triển hệ thống theo phase
    • Nhược điểm:
      • Chi phí cao và thời gian dài để có sản phẩm cuối cùng
      • Phải có kỹ năng tốt để đánh giá rủi ro và giả định.

4. Iterative Model- Mô hình tiếp cận lặp

Quy trình phát triển phần mềm

Example: 

Quy trình phát triển phần mềm

Diagram:

  • Mô tả
    • Một mô hình được lặp đi lặp lại từ khi start cho đến khi làm đầy đủ spec
    • Thay vì phát triển phần mềm từ spec đặc tả rồi mới bắt đầu thực thi thì mô hình này có thể review dần dần để đi đến yêu cầu cuối cùng.
    • Quy trình phát triển được lặp đi lặp lại cho mỗi một version của sản phẩm trong mỗi chu kỳ.
  • Áp dụng
    • Yêu cầu của hề thống đã hoàn chỉnh, được xác định rõ ràng và dễ hiểu
    • Yêu cầu chính cần được xác định, và một số chi tiết có thể được đổi mới theo thời gian
  • Đặc điểm
    • Ưu điểm:
      • Xây dựng và hoàn thiện các bước sản phẩm theo từng bước
      • Nhận được phản hồi của người sử dụng từ những bản phác thảo
      • Thời gian làm tài liệu sẽ ít hơn so với thời gian thiết kế
    • Nhược điểm:
      • Mỗi giai đoạn lặp lại thì cứng nhắc
      • Tốn kiến trúc hệ thống hoặc thiết kế các vấn đề có thể phát sinh nhưng không phải tất cả đều xảy ra trong toàn bộ vòng đời.

5. Incremental Model – Mô hình tăng trưởng

Quy trình phát triển phần mềm

Example:

Quy trình phát triển phần mềm

Diagram:

  • Mô tả
    • Trong mô hình này thì 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.
  • Áp 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
    • Có nhu cầu về sản phẩm sớm
  • Đặc điểm
    • Ưu điềm:
      • Phần mềm làm việc một cách nhanh chóng trong suốt vòng đời phát triền
      • Mô hình này linh hoạt hơn, ít tốn kém hơn để 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 với sự lặp lại nhỏ hơn
    • Nhược điểm:
      • Cần lập plan và thiết kế tốt
      • Cần một định nghĩa rõ ràng và đầy đủ của toàn bộ hệ thống trước khi nó có thể được chia nhỏ và được xây dựng từng bước
      • Tổng chi phí là cao hơn so với thác nước.

6. RAD Model (Rapid Application Development)

Quy trình phát triển phần mềm
  • Mô tả
    • Là một dạng của incremental model
    • Trong mô hình RAD các thành phần hoặc chức năng được phát triển song song như thể chúng là các dự án nhỏ
    • Việc phát triển này theo thời gian nhất định, cung cấp và lắp ráp thành một nguyên mẫu làm việc
    • Điều này có thể nhanh chóng đưa ra một cái gì đó cho khách hàng để xem và sử dụng và cung cấp thông tin phản hồi liên quan đến việc cung cấp và yêu cầu của họ.
  • Áp dụng
    • RAD nên được sử dụng khi có nhu cầu để tạo ra một hệ thống có Modularized trong khoảng thời gian 2-3 tháng.
    • Nên được sử dụng khi đã có sẵn designer cho model và chi phí cao
    • Đặc điểm:
    • Ư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:
      • Cần có một team giỏi để xác định yêu cầu phần mềm
      • Chỉ những hệ thống có module mới sứ dụng được mô hình này
      • Yêu cầu về dev/ design phải có nhiều kinh nghiệm
      • Phụ thuộc rất nhiều vào kỹ năng model

7. Agile Model

Quy trình phát triển phần mềm
  • 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
  • Áp dụng
    • Nó có thể được sử dụng với bất kỳ loại hình dự án nào, nhưng nó cần sự tham gia và tính tương tác của khách hàng. Ngoài ra, nó có thể được 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 ( 3 tuần )
  • Đặc điểm
    • Ưu điểm:
      • Giảm thời gian cần thiết để tận dụng một số tính năng của hệ thống
      • Kết quả cuối cùng là phần mềm chất lượng cao trong thời gian ít nhất có thể và sự hài lòng của khách hàng
    • Nhược điểm:
      • Phụ thuộc vào kỹ năng của người phát triển phần mềm Scalability
      • Tài liệu được thực hiện ở giai đoạn sau
      • Cần một team có kinh nghiệm Needs special skills for the team.

8. Scrum (Scrum là một quy trình phát triển phần mềm thuộc họ agile)

Quy trình phát triển phần mềm

1. Quy trình phát triển phần mềm là gì ?

Quy trình phát triển phần mềm là một cấu trúc bao gồm tập hợp các thao tác và các kết quả tương quan sử dụng trong việc phát triển để sản xuất ra một sản phẩm phần mềm. Các thuật ngữ tương tự là vòng đời phần mềm và quy trình phần mềm. Đây được coi là một thành phần tập con của vòng đời phát triển hệ thống. Có một số mô hình cho việc xây dựng các quy trình này, mỗi mô hình mô tả các phương thức cũng như các nhiệm vụ hoặc thao tác cần được thực hiện trong cả quá trình. Nhiều người coi mô hình vòng đời là một thuật ngữ phạm vi rộng và quy trình phát triển phần mềm là một thuật ngữ ở mức chi tiết cụ thể hơn. Ví dụ, có rất nhiều quy trình phát triển phần mềm tuân theo mô hình vòng đời xoắn ốc. ISO/IEC 12207 là một tiêu chuẩn quốc tế cho các quy trình vòng đời phần mềm, mục đích là trở thành một tiêu chuẩn định nghĩa tất cả các công việc cần thực hiện để xây dựng và bảo trì sản phẩm phần mềm.

1.1. Giải pháp, yêu cầu

Nhiệm vụ: Thực hiện khảo sát chi tiết yêu cầu của khách hàng để từ đó tổng hợp vào tài liệu giải pháp. Tài liệu này phải mô tả đầy đủ các yêu cầu về chức năng, phi chức năng và giao diện.

Kết quả: Đầu ra của giai đoạn này là Tài liệu đặc tả yêu cầu

1.2. Thiết kế:

Nhiệm vụ: Thực hiện thiết kế và tổng hợp vào tài liệu thiết kế.

Kết quả: Tài liệu thiết kế tổng thể, thiết kế module, thiết kế CSDL

1.3. Lập trình

Nhiệm vụ: Lập trình viên thực hiện lập trình dựa trên tài liệu Giải pháp và Thiết kế đã được phê duyệt.

Kết quả: Source code.

1.4. Kiểm thử

Nhiệm vụ: Tester tạo kịch bản kiểm thử (test case) theo tài liệu đặc tả yêu cầu, thực hiện kiểm thử và cập nhật kết quả vào kịch bản kiểm thử, log lỗi trên các tool quản lý lỗi.

Kết quả: Test case , lỗi trên hệ thống quản lý lỗi.

1.5. Triển khai

Nhiệm vụ: Triển khai sản phẩm cho khách hàng.

Kết quả: Biên bản triển khai với khách hàng.

2. Giới thiệu mô hình thác nước

Mô hình này gồm các giai đoạn xử lý nối tiếp nhau như sau:

  • Thu thập yêu cầu (Requirement gathering): Đây là giai đoạn xác định các yêu cầu chức năng và phi chức năng mà hệ thống phần mềm cần có. Kết quả của giai đoạn này là bản tài liệu đặc tả yêu cầu. Tài liệu này sẽ là nền tảng cho những giai đoạn tiếp theo cho đến cuối dự án.
  • Phân tích hệ thống ( System Analysis): Là giai đoạn định ra làm thế nào để hệ thống phần mềm đáp ứng đúng yêu cầu của khách hàng. Giai đoạn này thực hiện phân tích, thiết kế hệ thống phần mềm.
  • Coding: Là giai đoạn thực hiện sản phẩm dựa trên đặc tả yêu cầu và tài liệu thiết kế module.
  • Testing: Tester sẽ nhận sản phẩm từ developer và thực hiện kiểm thử cho nhóm các thành phần và kiểm thử hệ thống. Khâu kiểm thử cuối cùng sẽ là Kiểm thử chấp nhận, giai đoạn này còn có sự tham gia của khách hàng.
  • Implementation: Triển khai hệ thống ra môi trường của khách hàng.
  • Operations & Maintenance: Đây là giai đoạn cài đặt, cấu hình và đào tạo cho khách hàng. Giai đoạn này sửa chữa những lỗi của sản phẩm (nếu có) và phát triển những thay đổi mới được khách hàng yêu cầu.

1. Khái niệm Test Cases (TCs) là gì?

  • Test Cases là 1 tập hợp các trường hợp điều kiện theo đó mà Tester có thể dựa vào nó để xác định liệu 1 ứng dụng, hệ thống phần mềm hoặc là 1 trong các tính năng của nó có hoạt động như mong muốn cần làm hay không?
  • Các cơ chế để xác định liệu một chương trình phần mềm hoặc hệ thống đã được thông qua hay không, một trường hợp kiểm thử (1 case) được biết đến như một định hướng kiểm thử ( nghĩa là bạn cần phải xác định được trường các trường hợp có thể xảy ra).

2. Các bước xác định TCs

B1: Xác định mục đích test.

Trước tiên, bạn cần hiểu rõ đặc tả yêu cầu của khách hàng. Khi bắt đầu viết TCs cho các tính năng của 1 hệ thống phần mềm, việc đầu tiên cần xác định đó là cần hiểu và xác định được yêu cầu của hệ thống.

B2: Xác định hiệu suất testing. ( Dựa trên sự hiểu biết về hệ thống phần mềm)

Để viết kịch bản thử nghiệm tốt, bạn nên được cần với quen thuộc với các yêu cầu chức năng. Bạn cần phải biết làm thế nào phần mềm được sử dụng bao gồm các hoạt động , tổ chức chức năng khác nhau.

B3: Xác định các yêu cầu phi chức năng.

Bước thứ ba là để hiểu những khía cạnh khác của phần mềm liên quan đến các yêu cầu phi chức năng (non-function) như yêu cầu phần cứng, hệ điều hành, các khía cạnh an ninh phải được xem xét và điều kiện tiên quyết khác như các tập tin dữ liệu hoặc chuẩn bị dữ liệu thử nghiệm.

Thử nghiệm các yêu cầu phi chức năng là rất quan trọng. Ví dụ, nếu các phần mềm đòi hỏi người dùng phải điền vào các form, hợp lý thời gian cần được xác định bởi các nhà phát triển để đảm bảo rằng nó sẽ không time-out khi chờ submit form. Đồng thời, cũng cần check thời gian log-in hệ thống để đả bảo rằng phiên làm viêc đó của người dùng (session) không bị hết hạn, đây được gọi là trường hợp kiểm thử security.

B4: Xác định biểu mẫu cho TCs

Các mẫu , các trường hợp thử nghiệm nên bao gồm giao diện UI, chức năng, khả năng chịu lỗi, khả năng tương thích và hiệu suất của một số chức năng. Mỗi thể loại nên được xác định phù hợp với logic của ứng dụng phần mềm.

B5: Xác định tính ảnh hưởng giữa các nguyên tắc mô-đun.

Trước tiên cần hiểu rõ chức năng thực hiện của 1 mô-đun và sự tương tác của mô-đun đó với các mô-đun khác để xác định được follow, sự khớp nối của hệ thống

TCs nên được thiết kế để có thể che phủ được sự ảnh hưởng của các mô-đun với nhau ở mức độ cao nhất. Muốn biết được vấn đề đó, bận cần xác định rõ được tính năng của từng mô-đun riêng biệt, cách thức nó hoạt động tương tác với mô-đun khác như thế nào? Ví dụ: Khi test chức năng giỏ hàng của 1 website thương mại điện tử để kiểm tra bạn cũng cần phải xem xét quản lý hàng tồn kho và xác nhận nếu cùng số lượng của sản phẩm mua được khấu trừ từ các cửa hàng. Tương tự như vậy, trong khi thử nghiệm trở lại, chúng ta cần phải kiểm tra ảnh hưởng của nó trên một phần tài chính của ứng dụng cùng với cửa hàng tồn kho.

3. Cấu trúc của TCs

Format của 1 TCs thông thường bao gồm:

Test Case ID : Giá trị cần để xác định số lượng trường hợp cần để kiểm thử.

Chức năng (Function): Dựa theo chức năng của hệ thống có thể chia nhở các functions ra để tạo TCs rõ ràng hơn. Ví dụ: Check form đăng nhập gmail được coi là 2 function lớn.

Test Data : Những dữ liệu cần chuẩn bị để test

Test Steps : Mô tả các bước thực hiện test

Expected results: Kết quả mong đợi từ các bước thực hiện trên

A result: Thông thường sẽ là pass, fail, và pending. Đây là kết quả thực tế khi thực hiện test theo test case trên môi trường của hệ thống

Comments : Cột này dùng để note lại screen shot, thông tin liên quan khi thực hiện test case.

**Ngoài ra, có thể thêm 1 số cột như: ** Tester ( người thực hiện test), Execute Date ( ngày thực hiện test),…

4. Xác định trường hợp kiểm tra.

Với 1 giá trị cần kiểm tra luôn luôn có 3 trường hợp lớn cần kiểm tra có thể xảy ra.

  • Normal case: Các trường hợp kiểm thử thông thường
  • Abnormal case: Các trường hợp kiểm thử bất bình thường
  • Boundary case: Các trường hợp kiểm tra boundary.

Từ các trường hợp lớn trên tùy theo từng giá trị cần kiểm tra sẽ xác định và chia ra thành các case nhỏ hơn tương ứng.

5. Ví dụ : Thực hiện viết TCs cho chức năng đăng nhập facebook trên máy tính.

B1: Xác định yêu cầu.

Yêu cầu là test form login của facebook theo đường link: https://www.facebook.com/

Picture1.png
  • Mục đích test: Kiểm tra việc đăng nhập thành công vào hệ thống facebook, không test chức năng đăng ký ở cùng trên form, chỉ test trên môi trường web ,ko test trên môi trường điện thoại, browser trên điện thoại.
  • Xác định hiệu suất testing: Chức năng form login của facebook cũng thực hiện tương tự như hầu hết chức năng của các hệ thống khác. Form login bao gồm: 2 text box email/điện thoại và mật khẩu, 1 button đăng nhập, 1 link quên mật khẩu.
  • Xác định non-function yêu cầu: Cần check tính bảo mật với những trường hợp email chưa đăng ký vào hệ thống trước đó, lưu mật khẩu vào trình duyệt, loại trình duyệt: firefox, chrome, safari, IE, …, Ngoài ra, cần kiểm tra hệ thống mạng, phần cứng máy tính,
  • Xác định biểu mẫu cho TCs: Yêu cầu sẽ bao gồm test các phần: UI, chức năng đăng nhập, tốc độ đăng nhâp.
  • Xác định tính ảnh hưởng giữa các nguyên tắc mô-đun: Có thể check account đăng nhập của người dùng có là 1 account thực hay không so với DB của hệ thống (giả sử ta có DB đó). Sau khi đăng nhập thành công sẽ chuyển hướng tới trang chủ của người dùng.

B2: Xây dựng TCs.

  • Xác định các case UI: Bao gồm UI chung của cả form: màu sắc, font, size, color của label, chiều dài, rộng, cao, loại của các textbox, button, vị trí của form, textbox, button, link trên trang… Nếu mỗi một UI tách ra thành 1 case thì TCs sẽ quá dài vì vậy chúng ta có thể gộp lại thành 1 case test UI chung hoặc tách nhỏ ra theo phân nhóm UI.
  • Xác định case test chức năng: Ở đây chức năng là đăng nhập gồm 2 text box email/điện thoại và mật khẩu, 1 button đăng nhập, 1 link quên mật khẩu. Cho nên sẽ có những case như sau

Đối với email/ điện thoại textbox:

  • Normal case sẽ gồm: đăng nhập với đúng sdt, địa chỉ email đã đăng ký với hệ thống facebook trước đó và đăng nhập với blank, sai sdt, địa chỉ email đã đăng ký với hệ thống facebook trước đó.
  • Abnormal case sẽ gồm: Đăng nhập với số điện thoại mà thêm mã vùng, mã nước vào trước đó (ví dụ: +849….) hoặc email mà không nhập tố email cho nó ( email đúng là: nguyen.thi.hong.nhung). Ngoài ra, còn có các cases: ngắt mạng, mạng yếu, sử dụng 3G, wi-fi, mạng lan, ăn cắp cookie, session, đăng nhập trên nhiều trình duyệt …
  • Boundary case sẽ gồm: Text số lương ký tự tối thiểu và tối đa mà ô text cho nhập. Có thể tạo ra 1 email với nhiều ký tự để test, hoặc 1 email ngắn nhất có thể để test.( Với trường hợp này tôi ko kiểm tra tính đúng đắn của follow đăng nhập mà chỉ kiểm tra khả năng cho nhập tối thiểu và tối đa của ô text.)

Tương tự với ô mật khẩu: nhưng thêm vào nữa ở ô mật khẩu cần kiểm tra thêm tính mã hóa password nữa.

Đối với button đăng nhập:

  • Normal case sẽ gồm: Nhập giá trị vào text, click button đăng nhập, bấm phím enter từ bàn phím.
  • Abnormal case sẽ gồm: Click liên tục or enter liên tục vào button
  • Boundary case sẽ gồm: không cần check trường hợp này
  • Testcase mẫu:
TC_ex.JPG

1.Tổng quát

1.1 Định nghĩa

Một kế hoạch kiểm thử dự án phần mềm (test plan) là một tài liệu mô tả các mục tiêu, phạm vi, phương pháp tiếp cận, và tập trung vào nỗ lực kiểm thử phần mềm. Quá trình chuẩn bị test plan là một cách hữu ích để suy nghĩ tới những nỗ lực cần thiết để xác nhận khả năng chấp nhận một sản phẩm phần mềm. Các tài liệu đã hoàn thành sẽ giúp mọi người bên ngoài nhóm test hiểu được ‘tại sao’ và ‘như thế nào’ chấp nhận sản phẩm. Nó cần phải hoàn hảo đủ để dùng được nhưng không đủ hoàn hảo vì không ai bên ngoài nhóm test sẽ đọc nó.

Nói một cách khác cho dễ hiểu thì Test Plan là tài liệu tổng quan về việc test 1 project. Scope của project, hướng tiếp cận, STLC(Software Testing Life Cycle), resource và nhân lực cần có, các features cần được test và không phải test, các tool test và môi trường test cần có. Có thể ví test plan là 1 cái xương sống của 1 testing project và là cái được chuẩn bị đầu tiên khi có 1 project. alt tex

1.2 Các hạng mục phổ biến của một kế hoạch kiểm thử

Tiêu đề
Định nghĩa version của phần mềm (version release)
Lưu lại quá trình hiệu chỉnh tài liệu như tác giả, ngày cập nhật, duyệt
Mục lục
Mục đích của tài liệu, ý kiến chung
Mục tiêu của chi phí kiểm thử (test)
Giới thiệu tổng quan về sản phẩm
Danh sách tài liệu liên quan như spec, tài liệu thiết kế, các kế hoạch test khác,…
Các tiêu chuẩn thích hợp, các yêu cầu hợp lệ
Nguồn gốc của các sự thay đổi
Relevant naming conventions and identifier conventions
Overall software project organization and personnel/contact-info/responsibilties
Test organization and personnel/contact-info/responsibilities
Assumptions and dependencies
Phân tích rủi ro của dự án
Các vấn đề ưu tiên và tập trung test
Phạm vi và giới hạn test
-Test outline – a decomposition of the test approach by test type, feature, functionality, process, system, module, etc. as applicable

Outline of data input equivalence classes, boundary value analysis, error classes
Test environment – hardware, operating systems, other required software, data configurations, interfaces to other systems
Test environment validity analysis – differences between the test and production systems and their impact on test validity.
Test environment setup and configuration issues
Software migration processes
Software CM processes
Test data setup requirements
Database setup requirements
Outline of system-logging/error-logging/other capabilities, and tools such as screen capture software, that will be used to help describe and report bugs
Discussion of any specialized software or hardware tools that will be used by testers to help track the cause or source of bugs
Test tự động – giải thích và tổng quan
Các công cụ test được sử sụng, bao gồm các version, bản vá lỗi,…v.v
Các qui trình bảo trì và quản lý version của test script/test code
Theo dõi và giải quyết vấn đề – Các công cụ và qui trình
Các thước đo về test sản phẩm được sử dụng
Báo cáo các yêu cầu và khả năng giao test
Điều kiện đầu vào và đầu ra của phần mềm
Giai đoạn và điều kiện test ban đầu
Điều kiện dừng test và test lại
Sự bố trí nhân sự
Những người cần training trước khi tham gia
Nơi test
Các tổ chức test bên ngoài sẽ sử dụng và mục đích, trách nhiệm, khả năng hoàn thành, người liên hệ và các vấn đề hợp tác của họ
Các vấn đề độc quyền thích hợp, phân loại, bảo mật và bản quyền.
Các vấn đề mở
Phụ lục – bảng chú giải, các từ viết tắt, …v.v… ###2. Các bước cơ bản để lập test plan
Xác định yêu cầu kiểm tra.
Khảo sát rủi ro.
Xác định chiến lược kiểm tra.
Xác định nhân lực, vật lực cần thiết.
Lập kế hoạch chi tiết.
Tổng hợp và đưa ra kế hoạch kiểm tra.
Xem xét các kế hoạch kiểm tra.


2. Bố cục nội dung cơ bản của một test plan


2.1. Chiến lược kiểm tra

  • Chiến lược kiểm tra đưa ra phương pháp tiếp cận để kiểm tra mục tiêu.
  • Chiến lược kiểm tra bao gồm các kỹ thuật được áp dụng và điều kiện để biết khi nào việc kiểm tra hoàn thành.
  • Mô tả các kiểu kiểm tra dùng trong dự án.
  • Có thể liệt kê với mỗi kiểu kiểm tra tương ứng kiểm tra cho chức năng nào.
  • Việc kiểm có thể dừng khi nào.

2.2. Các kỹ thuật kiểm tra

  • Mỗi kiểu kiểm tra phải bao gồm các đìều kiện:
  • Kỹ thuật: Mô tả việc kiểm tra như thế nào, những gì sẽ được kiểm tra, các hoạt động chính được thực hiện trong quá trình kiểm tra và các phương pháp đánh giá kết quả.
  • Điều kiện hoàn thành: Xác định chất lượng chương trình được chấp nhận và Thời điểm kiểm tra hoàn tất.
  • Các vấn đề đặc biệt:
  • Các vấn đề gây ảnh hưởng đến việc kiểm tra

2.2.1. Functional testing – kiểm tra chức năng

  • Function testing – kiểm tra chức năng
  • User interface testing – kiểm tra giao diện người sử dụng
  • Data & database integrity testing – kiểm tra DL & tích hợp DL
  • Business cycle testing – kiểm tra chu trình nghiệp vụ

2.2.2. Performance testing – kiểm tra hiệu xuất

  • Performance profiling
  • Load testing
  • Stress testing
  • Volume testing

2.2.3. Security & Access control testing – kiểm tra bảo mật & kiểm soát truy cập

2.2.4. Regression testing – kiểm tra hồi quy


3. Môi trường kiểm tra

Tuỳ vào mỗi giai đoạn Unit test, Intergration test, System test, acceptance test sẽ ứng với môi trường kiểm tra nhất định. Từ đó xác định các yếu tố để xây dựng môi trường kiểm tra, sử dụng như môi trường thật hay tạo môi trường giả lập gần giống với môi trường chạy thật của chương trình.

Khi test chạy chương trình bằng bản dịch hay chạy trên code. Thông thường, các giai đoạn System test, Acceptance test phải chạy trên bản dịch

Với CSDL thì thông thường, từ Intergration test, ta phải thiết lập CSDL riêng và thiết lập các thông số cho CSDL gần giống hoặc giống hệt như khi chương trình sẽ chạy thật.

Điều kiện về mạng: sẽ sử dụng mạng LAN hay Dial up… Thông thường, khi Unit test, có thể sử dụng mạng LAN nhưng khi System test trở đi thì nên sử dụng hệ thống đường truyền giống như hoặc gần giống như môi trường chạy thật.

Mô hình sẽ cài đặt chương trình test: số lượng máy chủ, máy trạm; việc chia tách các server, các máy trạm, việc cài đặt các domain … Thông thường, trong Unit test có thể sử dụng viếc thiết lập như khi lập trình, nhưng khi System test trở đi, phải chú ý thiết lập sao cho gần giống mô hình sẽ chạy trong thực tế nhất.

Mô hình truyền thống CMMI và mô hình phát triển thác nước

Một thực tế phổ biến trong kiểm thử phần mềm đó là các kiểm thử được thực hiện bởi một nhóm các Tester độc lập sau khi các chức năng được phát triển và trước khi nó được chuyển tới khách hàng. Thực hành này thường là kết quả trong giai đoạn kiểm thử đang được sử dụng như một bộ đệm tham chiếu để bù đắp cho độ trễ tham chiếu do đó ảnh hưởng đến thời gian dành cho việc kiểm thử.

Một thực tế khác là khởi động kiểm thử phần mềm tại cùng một thời điểm bắt đầu dự án và nó là một quá trình liên tục cho đến khi dự án kết thúc.

Mô hình phát triển Agile / Extreme

Ngược lại, một số quy tắc phần mềm đang nổi lên như lập trình cực đoan và sự chuyển động phát triển phần mềm AGILE, tuân thủ mô hình “Test – Driven Development ” (TDD). Trong quy trình này, kiểm thử đơn vị được viết đầu tiên do các kỹ sư phần mềm (thường là lập trình song song trong các phương pháp lập trình Extreme). Tất nhiên những kiểm thử bước đầu thất bại như dự kiến, nhưng sau đó Code được viết xong thì phần lớn các Test Suite sẽ từng bước tăng lên. Nó được cập nhật như là các lỗi điều kiện mới và các trường hợp tiềm ẩn vừa được phát hiện ra, chúng được tích hợp với bất kỳ kiểm thử hồi quy nào được phát triển. Kiểm thử đơn vị được duy trì cùng với phần còn lại của các mã nguồn phần mềm và được tích hợp chung vào quá trình xây dựng (với những kiểm thử tương tác vốn đã bị loại bỏ quá trình xây dựng mức chấp nhận thông thường). Mục tiêu cuối cùng của quá trình kiểm thử này là để đạt được việc triển khai liên tục mà ở đó những cập nhật phần mềm có thể được công bố cho công chúng thường xuyên.

Phương pháp này làm tăng các nỗ lực kiểm thử trước khi động đến bất kỳ nhóm kiểm thử chính thức. Trong một số mô hình phát triển khác, hầu hết việc thực hành các kiểm thử xảy ra sau khi các yêu cầu đã được xác định và quá trình mã hóa đã được hoàn thành.

Mô hình từ trên xuống và mô hình từ dưới lên

Kiểm thử từ dưới lên là một cách tiếp cận để kiểm thử tích hợp nơi các thành phần tồn tại ở cấp độ thấp nhất (Các Module, các biện pháp và các chức năng) được kiểm thử đầu tiên, sau đó tích hợp và sử dụng để tạo thuận lợi cho việc kiểm thử các thành phần cấp cao hơn. Sau khi kiểm thử tích hợp các Module ở cấp độ thấp hơn sẽ tiến hành kiểm thử ở các cấp độ tiếp theo. Quá trình này được lặp đi lặp lại cho đến khi các thành phần ở trật tự trên cùng của hệ thống được kiểm tra. Cách tiếp cận này là chỉ hữu ích khi tất cả hoặc hầu hết các Module có cấp độ phát triển tương đương sẵn sàng được kiểm thử. Phương pháp này cũng giúp xác định các cấp độ phát triển phần mềm và làm cho nó dễ dàng hơn để báo cáo tiến độ kiểm thử theo tỷ lệ phần trăm.

Kiểm thử từ trên xuống là một cách tiếp cận để kiểm thử tích hợp các Module trên đầu với các Module nhánh được kiểm tra từng bước cho đến khi kết thúc Module liên quan.

trong cả hai phương pháp và các trình điều khiển được sử dụng để cố định các thành phần bị thiếu sót và được hoàn thiện ở các cấp độ thay thế.

Một chu kỳ kiểm thử mẫu

Dẫu cho các biến thể tồn tại giữa các tổ chức lập trình thì vẫn có một quy trình điển hình để kiểm thử. Mẫu dưới đây là phổ biến trong các tổ chức sử dụng mô hình phát triển Waterfall (thác nước). Các hoạt động tương tự thường được tìm thấy trong các mô hình phát triển khác, nhưng có thể có hoặc không rõ ràng.

  • Phân tích yêu cầu: Kiểm thử thường sẽ bắt đầu lấy các yêu cầu trong các giai đoạn của vòng đời phát triển phần mềm. Trong giai đoạn thiết kế, các Tester làm việc với các nhà phát triển để xác định những khía cạnh của một thiết kế được kiểm chứng và những thông số được kiểm tra.
  • Lập kế hoạch kiểm thử: Chiến lược kiểm thử, kế hoạch kiểm thử, kiểm thử sáng tạo… Và có một kế hoạch là cần thiết vì nhiều hoạt động sẽ được thực hiện trong thời gian kiểm thử.
  • Kiểm thử phát triển: Các quy trình kiểm thử, các kịch bản, Test Case, các dữ liệu được sử dụng trong kiểm thử phần mềm.
  • Kiểm thử thực hiện: Dựa trên các kế hoạch, các văn bản kiểm thử và các báo cáo bất kỳ lỗi nào tìm thấy cho nhóm phát triển.
  • Kiểm thử báo cáo: Sau khi hoàn tất kiểm thử, các Tester tạo ra các số liệu và báo cáo cuối cùng về nỗ lực kiểm thử của họ và có sẵn sàng phát hành phần mềm hay không.
  • Phân tích kết quả kiểm thử hoặc phân tích thiếu sót được thực hiện bởi đội ngũ phát triển kết hợp với khách hàng để đưa ra quyết định xem những thiếu sót gì cần phải được chuyển giao, cố định và từ bỏ (tức là tìm ra được phần mềm hoạt động chính xác) hoặc giải quyết sau.
  • Test lại khiếm khuyết: Khi một khiếm khuyết đã được xử lý bởi đội ngũ phát triển, nó phải được kiểm tra lại bởi nhóm kiểm thử.
  • Kiểm thử hồi quy: Người ta thường xây dựng một chương trình kiểm thử nhỏ là tập hợp của các bài kiểm tra cho mỗi tích hợp mới, sửa chữa hoặc cố định phần mềm, để đảm bảo rằng những cung cấp mới nhất đã không phá hủy bất cứ điều gì và toàn bộ phần mềm vẫn còn hoạt động một cách chính xác.

Kiểm thử đóng gói: Mỗi phép thử thỏa mãn các chỉ tiêu truy xuất và thu được những kết quả quan trong như: bài học kinh nghiệm, kết quả, các bản ghi, tài liệu liên quan được lưu trữ và sử dụng như một tài liệu tham khảo cho các dự án trong tương lai.

(Tham khảo: wikipedia.org)