0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Khám Phá TDD với API Quản Lý Umbraco cho Kiểm Thử Chấp Nhận

Đăng vào 5 ngày trước

• 6 phút đọc

Khám Phá TDD với API Quản Lý Umbraco cho Kiểm Thử Chấp Nhận

🔴 Đỏ, 🟢 Xanh, ♻️ Tái cấu trúc

Trong một khoảng thời gian, tôi đã suy nghĩ về cách tiếp cận kiểm thử chấp nhận trong ứng dụng Umbraco. Đây là một chủ đề mà tôi đã gặp khó khăn, bởi vì tôi không thể tìm ra cách thiết lập các kịch bản kiểm thử trên một trang web thực tế. Bài viết này sẽ giải thích những khó khăn và cách mà API quản lý có thể giúp đỡ. Mặc dù nội dung này mang tính suy đoán, nhưng tôi sẽ chia sẻ thêm khi đã thử nghiệm một cách nghiêm túc.

Giới thiệu về kiểm thử chấp nhận

Kiểm thử chấp nhận nhằm mục đích tương tác với hệ thống từ góc nhìn của người dùng. Khi người dùng truy cập vào trang web của bạn bằng trình duyệt, bạn sẽ muốn kiểm tra hệ thống với một trình duyệt thực tế, khi hệ thống đã được triển khai vào môi trường thực. Một bài kiểm thử chấp nhận xác minh rằng người dùng có thể thực hiện những điều bạn muốn họ làm bằng cách mô phỏng các kịch bản và tương tác của người dùng.

Những khó khăn trong kiểm thử chấp nhận

Điều quan trọng nhất của một bài kiểm thử tốt là nó bắt đầu từ một trạng thái có thể dự đoán. Nếu không kiểm soát được toàn bộ hệ thống, các bài kiểm thử của bạn có thể trở nên không ổn định. Ví dụ: Một bài kiểm thử xác minh rằng khối nội dung "liên quan" hiển thị một tập hợp các trang nội dung liên quan cụ thể, yêu cầu một tập hợp các trang nội dung liên quan có thể dự đoán. Một bài kiểm thử chạy trước hoặc song song với bài kiểm thử này có thể thay đổi nội dung trang web của bạn và do đó ảnh hưởng đến kết quả. Điều này là điều không mong muốn.

Trong một trang web Umbraco, trạng thái của bạn là nội dung, phương tiện, các miền đã cấu hình và ngôn ngữ, và đôi khi cả thành viên. Nếu bạn muốn thực hiện kiểm thử chấp nhận, bạn cần có khả năng tạo ra một cây nội dung nhất quán.

Có nhiều cách để tiếp cận thử thách này:

  • Tạo một cơ sở dữ liệu và trang web mới cho mỗi bộ kiểm thử. Điều này tuyệt vời cho kiểm thử song song, miễn là bạn có khả năng tạo ra các trang web và cơ sở dữ liệu theo yêu cầu và có thể dọn dẹp sau đó.
  • Sử dụng một trang web và cơ sở dữ liệu duy nhất và đặt lại cây nội dung trước mỗi bộ kiểm thử. Tùy chọn này yêu cầu mỗi bộ kiểm thử phải chạy theo tuần tự, nhưng cấu hình lưu trữ ít phức tạp hơn. Bạn cũng không cần lo lắng về việc dọn dẹp sau đó, vì dọn dẹp là một phần của thiết lập cho mỗi bộ kiểm thử. Bạn có thể gặp phải sự không ổn định nếu không dọn dẹp đúng cách.

Cả hai tùy chọn này đều không dễ thiết lập. Đối với tôi, việc tạo ra các trang web và cơ sở dữ liệu theo yêu cầu là không khả thi, vì vậy tùy chọn đó không thể thực hiện được. Vậy làm thế nào để thiết lập các kịch bản nội dung khác nhau trong một trang web Umbraco duy nhất?

API Quản Lý Umbraco cho việc thiết lập kịch bản

Việc thiết lập nội dung một cách có lập trình trên một môi trường thực tế yêu cầu hai điều:

  1. Xác thực máy với máy an toàn
  2. Một API HTTP để tác động vào backoffice

Trong Umbraco 13, bạn sẽ phải tự xây dựng cả hai điều này. Tôi có thể nói rằng nó không đáng công sức. Tuy nhiên, trong Umbraco 16, điều này không chỉ khả thi mà còn khá dễ dàng.

Nếu bạn truy cập vào backoffice và vào phần Người dùng, bạn sẽ thấy rằng, ngoài người dùng thông thường, bạn có thể tạo Người dùng API. Một Người dùng API tuân theo cùng một mô hình quyền như người dùng thông thường, nhưng cho phép bạn tạo thông tin xác thực máy. Điều này đã giải quyết điểm đầu tiên.

Thông tin xác thực máy cho phép bạn kết nối với backoffice. Cụ thể là với API quản lý của Umbraco. API quản lý là giao diện của Umbraco để quản lý trạng thái của backoffice. Bạn có thể tạo và chỉnh sửa nội dung, phương tiện và mọi thứ khác, giống như một người dùng thông thường. Bằng cách tận dụng API quản lý, bạn nên có khả năng tạo ra một cây nội dung nhất quán.

Vì Umbraco triển khai OpenAPI, bạn có thể tận dụng điều đó để tạo ra client API riêng của mình. Tôi rất quan tâm đến hiệu suất của điều này với NSwagStudio: công cụ tạo client C# ưa thích của tôi. Với một client API quản lý, bạn nên có khả năng tạo ra các bài kiểm thử chấp nhận đáng tin cậy.

Ví dụ về một bài kiểm thử

Trong một bài kiểm thử chấp nhận, bạn sử dụng ngôn ngữ miền để chỉ định các yêu cầu mà không sử dụng thuật ngữ kỹ thuật. Bạn có thể sử dụng một công cụ cho việc đó, nhưng bạn cũng có thể thực hiện điều này trong C# (hoặc bất kỳ ngôn ngữ lập trình thông thường nào). Dưới đây là cách mà tôi tưởng tượng một bài kiểm thử có thể trông như thế nào:

csharp Copy
[Fact]
public async Task ShouldUseSEOTitleAsPageTitle()
{
    // given
    await Scenario
        .HasBaseContent()
        .Has<DetailPage>().WithSEO(title: "Tiêu đề bị ghi đè bởi SEO")
        .BuildAsync();

    // when
    await User.VisitAsync(Scenario.DetailPages[0]);

    // then
    Assert.Equal("Tiêu đề bị ghi đè bởi SEO", Page.Title);
}

Ý tưởng ở đây là Scenario là một builder xác định điều kiện bắt đầu. Lời gọi .BuildAsync() sẽ giao tiếp với Umbraco thông qua API quản lý và thiết lập nội dung. User có thể là một web driver selenium và bài kiểm thử kết thúc với một assertion cổ điển trong xUnit.

Hiển nhiên, đây chỉ là phần nổi của tảng băng chìm: Làm thế nào để tôi thiết lập "nội dung cơ bản" này? Cách chính xác mà builder kịch bản hoạt động? Người dùng được triển khai như thế nào? Có rất nhiều vấn đề chưa được giải quyết, nhưng tôi tin rằng tất cả đều có thể được làm sáng tỏ.

Kết luận

Mặc dù tất cả những điều này vẫn mang tính suy đoán, API quản lý Umbraco có vẻ là một công cụ phù hợp cho việc kiểm thử chấp nhận trong môi trường thực. Kết hợp với người dùng API, nó cung cấp một điểm tích hợp qua đó các kịch bản kiểm thử có thể được cấu hình.

Tôi rất mong muốn tìm hiểu sâu hơn về vấn đề này và chắc chắn sẽ chia sẻ cập nhật khi tôi thực hiện. Thật thú vị!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào