Tại sao trong xây dựng cơ sở dữ liệu phải có bước kiểm thử

Bạn đã bao giờ tự hỏi làm thế nào các công ty phát triển phần mềm thiết lập môi trường thử nghiệm của họ? Hơn nữa, làm thế nào họ quản lý tất cả những môi trường khác nhau này?Việc thiết lập môi trường thử nghiệm mang lại nhiều cuộc đấu tranh mới, như cách quản lý tất cả các môi trường này. Thường rất khó để tạo một bản sao chính xác cho môi trường sản xuất của bạn. Bên cạnh đó, việc tạo ra các môi trường đó theo cách thủ công đòi hỏi rất nhiều thời gian và công sức của kỹ sư kiểm thử. Điều này nghe có vẻ quen thuộc?Trong bài viết này, trước tiên chúng ta sẽ khám phá sự khác biệt giữa môi trường thử nghiệm và môi trường dàn dựng. Tiếp theo, chúng ta sẽ đi sâu hơn vào các giải pháp để tạo các môi trường.

Môi trường kiểm thử là một thiết lập phần mềm và phần cứng cho các nhóm kiểm thử để thực hiện các trường hợp kiểm thử. Nói cách khác, nó hỗ trợ thực hiện kiểm tra với phần cứng, phần mềm và cấu hình mạng. Môi trường kiểm thử được cấu hình theo nhu cầu của Ứng dụng đang thử nghiệm. Trong một số trường hợp, môi trường kiểm thử có thể là sự kết hợp của môi trường kiểm thử và dữ liệu kiểm thử mà nó vận hành.

Thiết lập một môi trường kiểm thử đúng đảm bảo kiểm thử phần mềm thành công. Bất kỳ sai sót trong quá trình này có thể dẫn đến việc tăng chi phí và thời gian sử dụng.

Test Bed là gì?

Test Bed là một môi trường thử nghiệm đã được chuẩn bị với dữ liệu thử nghiệm. Dữ liệu thử nghiệm giúp bạn xác minh các trường hợp thử nghiệm yêu cầu thiết lập dữ liệu nhất định.Ví dụ: giả sử bạn muốn kiểm tra xem một chức năng cụ thể có tạo hóa đơn cho dữ liệu bán hàng có trong một cơ sở dữ liệu cụ thể hay không. Vì chúng ta cần chuẩn bị cơ sở dữ liệu với dữ liệu, môi trường thử nghiệm này được coi là giường thử nghiệm. Trên thực tế, sự khác biệt giữa môi trường thử nghiệm và giường thử nghiệm là khá nhỏ, nhưng điều quan trọng là phải biết sắc thái giữa cả hai thuật ngữ.

Bây giờ, hãy cùng tìm hiểu lý do tại sao chúng ta thực sự cần môi trường thử nghiệm.

Tầm quan trọng của môi trường kiểm thử

Tầm quan trọng của môi trường thử nghiệm là gì? Bạn có thể có một định nghĩa trường hợp thử nghiệm tuyệt vời và là một kỹ sư thử nghiệm có tay nghề cao. Nhưng để thực sự khai thác sức mạnh của các trường hợp thử nghiệm và kỹ sư thử nghiệm của bạn, việc có một môi trường thử nghiệm được thiết kế tốt là rất quan trọng.Môi trường thử nghiệm cung cấp phản hồi chính xác về chất lượng và hành vi của ứng dụng đang được thử nghiệm. Nói cách khác, môi trường thử nghiệm cung cấp cho bạn thiết lập cần thiết để chạy các trường hợp thử nghiệm của bạn.Môi trường thử nghiệm giúp bạn nhiều hơn nữa bằng cách cung cấp một môi trường chuyên dụng để bạn tách biệt mã và xác minh hành vi của ứng dụng. Điều này đảm bảo rằng không có hoạt động nào khác có thể ảnh hưởng đến kết quả của các bài kiểm tra đang chạy trên máy chủ.

Hơn nữa, một môi trường thử nghiệm có thể hoạt động như một bản sao chính xác của môi trường sản xuất. Đây là yếu tố quan trọng nhất để bạn tự tin về kết quả xét nghiệm. Kỹ sư thử nghiệm cần chắc chắn 100% rằng ứng dụng hoạt động theo cùng một cách trong môi trường thử nghiệm cũng như trong môi trường sản xuất.

Sự khác biệt giữa môi trường kiểm thử và môi trường dàn dựng là gì?

Một thực tế phổ biến là có cả môi trường thử nghiệm và môi trường dàn dựng. Hãy cùng tìm hiểu lý do tại sao chúng ta cần cả môi trường thử nghiệm và môi trường dàn dựng. Và chúng khác nhau như thế nào.

* Môi trường kiểm thử

Kỹ sư kiểm thử sử dụng môi trường kiểm thử để kiểm tra một phần rất cụ thể của ứng dụng. Nó thường liên quan đến một cấu hình và thiết lập dữ liệu khác. Do đó, không có cái gọi là thiết lập một kích thước phù hợp với tất cả.Đây chính là lý do tại sao các môi trường thử nghiệm không giống nhau. Họ thường cần một thiết lập khác để thử nghiệm các phần khác nhau của mã. Ngoài ra, điều quan trọng là phải hiểu rằng kỹ sư thử nghiệm tạo ra hàng tá môi trường thử nghiệm khi mã phát triển.

Nói tóm lại, khi sử dụng môi trường thử nghiệm, mã sẽ quyết định thiết lập của môi trường.

* Môi trường dàn dựng

Môi trường dàn dựng sẽ sao chép môi trường sản xuất và lưu trữ phiên bản trực tiếp của ứng dụng của bạn. Điều quan trọng là môi trường dàn dựng của bạn phải là bản sao chính xác của môi trường sản xuất của bạn. Thông thường, điều này có thể đạt được bằng cách có tài liệu rất chi tiết. Nó phải mô tả tất cả các nhu cầu và cấu hình chính xác cho môi trường sản xuất của bạn.Trong khi môi trường thử nghiệm tập trung vào việc thử nghiệm các thành phần riêng lẻ, thì môi trường dàn dựng tập trung vào việc thử nghiệm toàn bộ ứng dụng. Về cơ bản, môi trường dàn dựng là một sân chơi an toàn, trong đó bạn có thể kiểm tra toàn bộ ứng dụng.Điều này làm cho một môi trường tổ chức lý tưởng để chạy các bài kiểm tra đầu cuối hoặc kiểm tra hiệu suất. Kiểm tra từ đầu đến cuối xác nhận rằng toàn bộ ứng dụng hoạt động như mong đợi bằng cách kiểm tra tất cả các tích hợp.Bên cạnh đó, vì môi trường dàn dựng tái tạo môi trường sản xuất. Đó là một khu vực an toàn để kiểm tra các giới hạn của môi trường và ứng dụng của bạn bằng cách sử dụng kiểm tra hiệu suất.

Nói tóm lại, trong môi trường dàn dựng, bạn kiểm tra toàn bộ ứng dụng trong các điều kiện thực tế mà nó sẽ trải qua trong môi trường sản xuất.

Các khóa then chốt để thiết lập trong môi trường kiểm thử

Đối với môi trường kiểm thử, các khóa then chốt cần thiết lập bao gồm:

  • Hệ thống và ứng dụng (System and Application): là phần quan trọng nhất cho việc kiểm thử, chính là máy chủ với các thiết lập để khởi động được ứng dụng cần kiểm thử.
  • Dữ liệu kiểm tra (Test data): các bộ dữ liệu được xây dựng sẵn theo các yêu cầu nghiệp vụ, các test case, checklist, bao gồm cả dữ liệu đầu vào và các dữ liệu đầu ra mong muốn.
  • Máy chủ cơ sở dữ liệu (Database server): máy chủ dùng để lưu trữ dữ liệu của ứng dụng
  • Môi trường chạy Front-end (Front-end running environment): là nơi lưu trữ máy chủ và các thiết lập cho môi trường giao diện của ứng dụng.
  • Hệ điều hành máy khách (Client operating system): phần lớn các ứng dụng sẽ cần phải hỗ trợ đa nền tảng, chẳng hạn nhiều trình duyệt, nhiều hệ điều hành được hỗ trợ.
  • Trình duyệt (Browser): trình duyệt được sử dụng bởi kiểm thử viên, hiện nay thì sẽ có các trình duyệt hay được sử dụng là Google Chrome hay Mozilla Firefox, đôi khi có thể là trình duyệt cho di động.
  • Phần cứng bao gồm hệ điều hành máy chủ (Hardware includes Server Operating system): môi trường để cài đặt các ứng dụng lên sẵn sàng cho việc kiểm thử.
  • Mạng (Network): hệ thống mạng là cần thiết cho việc kết nối tới các máy chủ
  • Tài liệu cần có như tài liệu tham khảo / hướng dẫn cấu hình / hướng dẫn cài đặt / hướng dẫn sử dụng: các tài liệu hướng dẫn sử dụng cũng là một phần không thể thiếu để các thành viên kiểm thử dễ dàng nắm bắt hơn.

Quy trình thiết lập môi trường kiểm thử phần mềm

Việc kiểm thử được giới hạn trong những gì có thể được kiểm tra và những gì không nên được kiểm tra.

Những người sau đây là những thành viên cần thiết có liên quan đến thiết lập cho môi trường kiểm thử:

  • Quản trị viên hệ thống: là người quản lý và điều hành các thiết lập chung của các máy chủ
  • Nhà phát triển: là người chịu trách nhiệm cho việc xây dựng ứng dụng.
  • Người kiểm thử: là người chịu trách nhiệm cho việc kiểm thử ứng dụng

Môi trường kiểm thử sẽ cần phải làm các bước như sau:

1. Thiết lập máy chủ kiểm thử

Việc kiểm thử không nên thiết lập trên một máy cục bộ, mà nên thiết lập trên một máy chủ phân tán để đảm bảo mọi quá trình vận hành và sử dụng sẽ được tương thích với mọi user.
Chẳng hạn, thiết lập một máy chủ Fedora cho ứng dụng PHP, hay một máy chủ Ubuntu cho ứng dụng Java Spring ....

2. Hệ thống kết nối mạng

Hệ thống mạng sẽ được thiết lập theo yêu cầu thử nghiệm. Nó bao gồm:

  • Thiết lập Internet
  • Thiết lập mạng LAN
  • Thiết lập mạng dùng riêng (private)

Điều này đảm bảo sự tắc nghẽn xảy ra trong quá trình thử nghiệm không ảnh hưởng đến các thành viên khác. (Nhà phát triển, nhà thiết kế, người chuẩn bị nội dung, v.v.)

3. Thiết lập máy tính cho việc kiểm thử

Để kiểm thử ứng dụng web, chúng ta có thể cần thiết lập các trình duyệt khác nhau trên cùng 1 thiết bị hoặc các thiết bị khác nhau (Chrome, Firefox hoặc Safari cho macOS, Edge cho Windows).
Đối với các ứng dụng máy tính để bàn, ta cần nhiều loại Hệ Điều Hành khác nhau cho việc kiểm thử đa nền tảng (Windows, macOS, Linux).

Ví dụ: thử nghiệm ứng dụng Windows phone có thể yêu cầu:

  • Cài đặt Visual Studio
  • Trình giả lập điện thoại Windows
  • Ngoài ra, sẽ cần cấp một máy điện thoại Windows cho người kiểm thử.

4. Báo cáo lỗi

Kiểm thử viên sẽ cần các công cụ chuyên dùng cho việc ghi lại các báo cáo lỗi

5. Tạo dữ liệu cho môi trường kiểm thử

Nhiều công ty sử dụng một môi trường kiểm thử riêng biệt để kiểm tra các phần mềm hay ứng dụng. Phương pháp phổ biến được sử dụng là sao chép lại các dữ liệu của môi trường production để kiểm tra. Điều này giúp người kiểm thử phát hiện các vấn đề tương tự như một máy chủ thực tế, mà không làm hỏng dữ liệu đó.

Phương pháp sao chép dữ liệu production để kiểm thử dữ liệu bao gồm:

  • Thiết lập một chương trình tự động để sao chép dữ liệu vào môi trường thử nghiệm chung
  • Tất cả Personal Identifiable Information (PII - Thông tin nhận dạng cá nhân) được sửa đổi cùng với các dữ liệu bí mật khác. PII được thay thế bằng dữ liệu chính xác, nhưng không phải dữ liệu cá nhân.
  • Xóa các dữ liệu không liên quan đến việc kiểm thử.

Người kiểm thử hoặc nhà phát triển có thể sao chép các dữ liệu này vào môi trường thử nghiệm cá nhân của họ. Đồng thời, họ có thể sửa đổi nó theo yêu cầu nếu muốn.

Quyền riêng tư là vấn đề chính cần xem xét khi sao chép dữ liệu production. Để khắc phục các vấn đề quyền riêng tư, chúng ta cần xem xét các dữ liệu kiểm thử bị ẩn giấu.

Đối với các dữ liệu này, chúng ta có thể xem xét 2 cách tiếp cận như sau:

  • Black List: Trong phương pháp này, tất cả các trường dữ liệu được giữ nguyên. Ngoại trừ những trường được chỉ định bởi người dùng.
  • White List: Theo mặc định, tất cả các trường dữ liệu sẽ bị giấu đi. Ngoại trừ một danh sách các phần được phép sao chép. Một trường trong được đánh dấu trong White List có ý rằng việc sao chép dữ liệu là ổn và không cần phải ẩn giấu đi.

Ngoài ra, nếu như chúng ta sử dụng dữ liệu của môi trường production, ta cần phải biết cách để lấy được dữ liệu nguồn. Truy vấn cơ sở dữ liệu bằng tập lệnh SQL là một cách tiếp cận khá hiệu quả cho việc này.

Quản lý môi trường kiểm thử

Quản lý môi trường kiểm thử liên quan đến việc bảo trì và theo dõi những thiết lập và chức năng của môi trường.

Danh sách các hoạt động của chức năng quản lý môi trường thử nghiệm thường sẽ bao gồm như sau:

  1. Bảo trì một kho lưu trữ trung tâm với tất cả các phiên bản cập nhật của môi trường kiểm thử.
  2. Kiểm tra quản lý môi trường theo yêu cầu của nhóm kiểm thử.
  3. Tạo ra môi trường mới dựa vào các yêu cầu bổ sung.
  4. Giám sát môi trường kiểm thử.
  5. Cập nhật / xóa môi trường kiểm thử đã lỗi thời.
  6. Điều tra các vấn đề về môi trường kiểm thử.
  7. Phối hợp cho đến khi các vấn đề được giải quyết.

Danh sách kiểm tra cho môi trường kiểm thử

Ta có một danh sách kiểm tra như sau cho môi trường kiểm thử

* Thiết bị phần cứng

  1. Kiểm tra xem thiết bị cần thiết cho môi trường kiểm thử có sẵn có không? Nếu không, cần phân tích chi phí thời gian bỏ ra để cung cấp.
  2. Kiểm tra xem các thiết bị ngoại vi có sẵn không? Chẳng hạn như máy quét, máy in, các thiết bị cầm tay ...

* Phần mềm/ kết nối

  1. Kiểm tra xem có cần các phần mềm đặc thù không? Chẳng hạn như phần mềm soạn thảo văn bản MS Word, phần mềm bảng tính MS Excel ...
  2. Đối với phần mềm mới, môi trường kiểm thử nghiệm có sẵn cho tổ chức không? Cần người có kinh nghiệm sử dụng và bảo trì cho các phần mềm này.

* Dữ liệu môi trường

  1. Kiểm tra xem các bộ dữ liệu kiểm thử tiêu chuẩn có sẵn không? Nếu không cần tiến hành thu gom dữ liệu cần thiết.
  2. Có được phép sử dụng hoặc có thỏa thuận sử dụng dữ liệu với chủ sở hữu để tiến hành kiểm thử không?

* Công cụ hoặc quy trình bảo trì

  1. Kiểm tra xem có tối thiểu một đầu mối liên hệ cho việc bảo trì môi trường kiểm thử không? Nếu không có ai, cần xem xét trong các thành viên hiện tại những ai có khả năng để bảo trì môi trường, cần giữ liên lạc với họ.
  2. Kiểm tra xem chất lượng của môi trường kiểm thử hiện tại đã được kiểm chứng hoặc được chấp thuận chưa
  3. Kiểm tra xem có phải tất cả các thành viên tham gia bảo trì môi trường đều được biết đến hay chưa.

* Các câu hỏi khác

  • Có nên phát triển Môi trường kiểm thử trong nội bộ tổ chức hay thuê một máy chủ bên ngoài?
  • Liệu có tuân theo tiêu chuẩn nội bộ của tổ chức hay tuân theo bất kỳ tiêu chuẩn quốc tế nào khác không (IEE, ISO, ....)?
  • Môi trường kiểm thử được yêu cầu sử dụng trong bao lâu?
  • Sự khác biệt giữa các hệ thống kiểm thử và thực tế (production), tác động của chúng đến hiệu quả kiểm thử phải được xác định.
  • Có thể sử dụng lại một thiết lập môi trường kiểm thử hiện có cho các dự án khác trong công ty không?

Cách tổ chức nhiều môi trường để kiểm thử

Cách dễ nhất để quản lý môi trường thử nghiệm của bạn là thông qua tự động hóa. Bằng cách áp dụng tự động hóa xây dựng và triển khai, bạn có thể quản lý môi trường thành công.Các công cụ tích hợp liên tục (CI) như Jenkins rất phù hợp cho mục đích này. Jenkins là một máy chủ tự động mã nguồn mở miễn phí được viết bằng Java và là một trong những công cụ CI phổ biến nhất trong ngành phần mềm. Công cụ này không chỉ giúp tự động hóa quá trình triển khai này mà còn hỗ trợ chạy các bộ thử nghiệm.

Một cách tiếp cận khác để quản lý môi trường thử nghiệm của bạn là có tài liệu chi tiết mô tả, ví dụ, cách tạo bản sao chính xác của môi trường sản xuất của bạn. Tuy nhiên, cách tiếp cận thủ công hơn này dễ mắc phải sai lầm của con người.

Các thử thách khi thiết lập quản lý môi trường kiểm thử

+ Lập kế hoạch phù hợp về sử dụng tài nguyên

Lập kế hoạch không hiệu quả cho việc sử dụng tài nguyên có thể ảnh hưởng đến đầu ra thực tế. Ngoài ra, nó có thể dẫn đến xung đột giữa các đội trong dự án.

+ Môi trường từ xa

Có thể môi trường kiểm thử nằm cách xa nhau về mặt địa lý so với môi trường phát triển. Trong trường hợp như vậy, nhóm kiểm thử phải dựa vào các nhóm hỗ trợ cho các tài sản, thiết bị thử nghiệm khác nhau (Phần mềm, phần cứng và các vấn đề khác).

+ Xây dựng thời gian thiết lập

Đôi khi, môi trường kiểm thử được thiết lập trở nên quá phức tạp trong các trường hợp Kiểm thử tích hợp (Integration testing)

+ Chia sẻ thiết lập chung theo nhóm

Nếu môi trường kiểm thử được sử dụng bởi nhóm phát triển và nhóm kiểm thử một cách đồng thời, kết quả kiểm thử sẽ bị hỏng do khó có thể xác định được đầu ra mong muốn so với thực tế.

+ Cấu hình kiểm thử phức tạp

Một số quá trình kiểm thử yêu cầu cấu hình môi trường kiểm thử phức tạp. Nó có thể đặt ra một thách thức cho nhóm kiểm thử (về thời gian, chi phí...).

+ Các Best Practices cho người quản lý môi trường kiểm thử

  • Hiểu các yêu cầu kiểm tra kỹ lưỡng và truyền đạt lại cho các thành viên trong nhóm kiểm thử.
  • Các kết nối phải được kiểm tra trước khi bắt đầu kiểm thử.
  • Kiểm tra thiết bị phần cứng và phần mềm cần thiết, các giấy phép sử dụng đi kèm.
  • Trình duyệt web và các phiên bản sử dụng.
  • Lập kế hoạch sử dụng theo lịch trình của môi trường kiểm thử.
  • Các công cụ tự động hóa và cấu hình của chúng.

Kết luận

Chúng ta đã tìm hiểu được thế nào là môi trường kiểm thử, các thiết lập của môi trường kiểm thử cũng như các vấn đề khó khăn đặt ra cho một người quản lý môi trường kiểm thử. Cảm ơn mọi người đã đọc bài. Hi vọng mọi người đóng góp giúp mình để bài viết được hoàn thiện hơn.

Tài liệu tham khảo