Làm thế nào nhân viên QA có thể kiểm tra logic bộ nhớ đệm mà họ không thể thấy?


33

Tôi vừa mới triển khai một lớp bộ đệm trong ứng dụng web của mình và bây giờ tôi đang tự hỏi làm thế nào QA có nghĩa vụ kiểm tra nó, vì bộ nhớ đệm trong suốt đối với người dùng.

Một ý tưởng tôi có là đặt đăng nhập vào các phương thức gọi mã tạo bộ đệm và ghi lại khi một đối tượng được kéo từ bộ đệm và khi nó yêu cầu giải trí từ cơ sở dữ liệu, sau đó người kiểm tra có thể xem nhật ký để xem, ví dụ, một đối tượng nhất định được tải lại từ db cứ sau 10 phút, thay vì mỗi lần xem trang.

Nhưng bất cứ ai có thể đề nghị một số thực hành tốt hơn cho tình huống này?




5
Tôi làm việc về hiệu suất cả ngày và "làm thế nào QA có thể kiểm tra sự thay đổi của bạn?" là một câu hỏi tôi được hỏi liên tục.
Brandon

1
Nói chung, bộ đệm có nghĩa là tăng tốc hoạt động bằng cách lưu trữ kết quả vào bộ nhớ mà đến từ một nguồn khác (db, máy chủ từ xa, phương pháp tính toán đắt tiền, v.v.). Do đó, việc đo thời gian mọi thứ sẽ phải mất khi nhấn bộ đệm có vẻ là cách đơn giản nhất. Đồng thời kiểm tra các sự cố bộ đệm cũ (cập nhật dữ liệu thực tế không xuất hiện vì phiên bản trước vẫn được lưu trong bộ nhớ cache)
GordonM 18/03/2015

Câu trả lời:


37

Một câu hỏi là liệu bộ nhớ cache có thực sự là một yêu cầu cần được kiểm tra bởi QA hay không. Bộ nhớ đệm cải thiện hiệu suất, vì vậy họ có thể kiểm tra sự khác biệt về hiệu suất để đảm bảo đáp ứng một số yêu cầu.

Nhưng ý tưởng tốt để có một số thử nghiệm xung quanh bộ nhớ đệm, bất cứ ai chịu trách nhiệm về nó. Chúng tôi sử dụng quầy hiệu suất. Nếu hệ thống bộ nhớ cache của bạn tận dụng những điều này, chúng rất đơn giản. Nếu có bất kỳ cách nào để có được số đếm từ chính bộ đệm, đó là một tùy chọn khác.

Sử dụng phương pháp của bạn là tốt đẹp quá. Nếu bất kỳ trong số này được bọc trong các bài kiểm tra tự động kiểm tra kết quả, thì không ai phải xem qua nhật ký để tìm câu trả lời.


+1 để kiểm tra hiệu suất thay vì bộ nhớ đệm. Giá trị kinh doanh là bộ nhớ đệm của riêng mình? (Không có.) Chắc chắn bạn đang làm việc hướng tới một số tác động đáng chú ý đối với một cái gì đó - tại sao bạn lại dành thời gian để thực hiện nó? Kiểm tra tác động đó.
alexanderbird

74

Bạn đã triển khai bộ đệm (tôi giả sử) vì hệ thống không hoạt động đủ tốt. Đó là một cái gì đó có liên quan cho người dùng. Dưới đây là những điều mà QA có thể kiểm tra:

  • Hệ thống, sau khi bộ nhớ cache được giới thiệu, vẫn đúng. Điều này có nghĩa là họ nên cố gắng lừa bộ đệm để cung cấp dữ liệu cũ, đây là điều mà QA có thể xác minh và đảm bảo không có gì khác bị hỏng.
  • Rằng hệ thống hiện đáp ứng các ngưỡng hiệu suất mà nó không đáp ứng khi bạn quyết định cải thiện hiệu suất. Họ có thể so sánh các phép đo cũ và so sánh chúng với các phép đo mới.

Hãy nhớ rằng, người dùng (và, bằng phần mở rộng, QA) không quan tâm đến cách bạn giải quyết vấn đề. Họ chỉ quan tâm rằng vấn đề đã được giải quyết và không tạo ra vấn đề mới. Điều này đúng cho dù bạn đã triển khai bộ nhớ đệm, phân tích chuỗi được cải tiến, đã nâng cấp phần cứng hay rắc bụi thần tiên trên máy chủ.


1
Nói rằng QA không quan tâm đến cách bạn giải quyết vấn đề là một quan điểm rất đơn giản về những gì QA quan tâm. Họ quan tâm đến việc bạn có thực sự cải thiện hiệu suất hay không, giới thiệu thêm nợ kỹ thuật, rủi ro hoặc khiếm khuyết, v.v.
Eric

4
@Eric Trong phát triển phần mềm, "QA" với tư cách là một nhóm thường không đề cập đến các nhà phát triển / kỹ sư. Nợ kỹ thuật là mối quan tâm của nhà phát triển / kỹ sư (và mối quan tâm của quản lý vì nó có thể ảnh hưởng đến các mốc thời gian, chi phí, v.v.). Điều tương tự cũng đúng với rủi ro. Công việc của QA là đảm bảo rằng phần mềm đáp ứng các yêu cầu (và có thể giúp đỡ một cách tình cờ trong quá trình loại bỏ các yêu cầu không rõ ràng). Nếu họ quan tâm đến việc thực hiện, thì đó chỉ là một phương tiện để tìm ra những cách sáng tạo để phá vỡ hệ thống.
jpmc26

3
@Eric Tôi khó hiểu không có gì. "QA" không đề cập đến người kiểm tra trong phần mềm. Bạn đang diễn giải thuật ngữ này một cách rộng rãi đến mức nó phải bao gồm toàn bộ công ty đang phát triển phần mềm và thậm chí cả máy khách nếu đó là một hệ thống được xây dựng tùy chỉnh cho họ, vì mọi người đều có chất lượng.
jpmc26

1
@Eric Xin đừng bắt tôi tranh luận về cách ngôn ngữ và ngữ nghĩa làm việc với bạn. Tôi thách bạn tìm 5 trường hợp trên StackExchange này trong đó thuật ngữ được sử dụng theo cách đó trong vòng chưa đầy 30 phút. Bên cạnh đó, ngay cả theo định nghĩa đó, một nhóm QA riêng biệt tốt nhất có thể làm để giải quyết các vấn đề ngoài chính sản phẩm là áp đặt các chính sách cho các nhà phát triển, và khi chính sách và quy trình được nâng lên trên các sản phẩm tốt, bạn thường kết thúc với các sản phẩm xấu. Ngoài ra, tôi có thể đảm bảo với bạn rằng những người "QA" mà tôi làm việc cùng chắc chắn là những người thử nghiệm và ít nói về quá trình phát triển của tôi.
jpmc26

4
@Eric: không có gì ngăn cản một công ty hoặc một nhóm người định nghĩa "QA" là về quan điểm toàn diện hơn. Tuy nhiên, theo kinh nghiệm của tôi (trên 5 công ty rất khác nhau), giai đoạn QA như được đặt tên - và những người chuyên về nó - trong phát triển phần mềm thường tập trung vào thử nghiệm hộp đen về hành vi hệ thống. Trong khi chúng ta cũng có thể có "Kiểm soát chất lượng", "Kwalitee" và các tên được phát minh nhiều hơn để bao quát các góc độ chuyên gia về các vấn đề chất lượng rộng hơn.
Neil Slater

3

Chôn logic kinh doanh quan trọng hoặc trạng thái hệ thống sâu trong một hộp đen làm cho việc xác minh hành vi hệ thống chính xác trở nên khó khăn. Dễ dàng kiểm tra toàn diện hoạt động của một thành phần trong hệ thống hơn toàn bộ hệ thống. Tôi ủng hộ việc phơi bày những thứ như vậy một cách rõ ràng thông qua một số cơ chế để nó có thể là đơn vị / hồi quy / tích hợp / QA được thử nghiệm theo một số cách có ý nghĩa.

Một tùy chọn với bộ đệm sẽ là hiển thị một trang đặc biệt cung cấp một số chi tiết về bộ đệm (nội dung, trạng thái, v.v.). Điều này có thể hỗ trợ gỡ lỗi trong phát triển và có khả năng trong sản xuất. QA cũng có thể sử dụng trang này để tạo các trường hợp thử nghiệm cho bộ đệm nếu chúng được cung cấp chi tiết về hành vi dự kiến ​​của bộ đệm. Sử dụng bộ đếm hiệu suất và / hoặc tệp nhật ký để ghi lại rõ ràng hành vi bộ đệm là một cách tiếp cận ít nhìn thấy nhưng khả thi hơn.

Lưu ý rằng phương pháp này không thay thế cho thử nghiệm hiệu năng từ đầu đến cuối. Đây là một cơ chế để đảm bảo bộ đệm hoạt động chính xác. Kiểm tra hiệu năng nên được sử dụng để xác định xem bộ nhớ đệm có ảnh hưởng đến hiệu suất không.

Cũng lưu ý rằng việc hoán đổi các thành phần của hệ thống với các thành phần mới thực hiện cùng giao diện như giới thiệu bộ đệm có thể là một sự thay đổi phức tạp và mất ổn định. Với ví dụ về bộ đệm, bạn đang đưa ra trạng thái ở trạng thái không trạng thái trước đây, điều này có thể tạo ra các lỗi khó tìm hoặc sao chép hơn. Thay đổi như vậy phải luôn đi kèm với kiểm tra hồi quy đầy đủ để xác minh hành vi hệ thống dự kiến.


3

Hiệu suất thử nghiệm, như được chỉ ra trong câu trả lời của Andy.

Tôi đã thấy rằng trở ngại lớn nhất trong việc thực hiện bộ nhớ đệm (và hiệu suất) tại nhiều tổ chức là thực sự có một môi trường nơi bạn có thể thực hiện kiểm tra hiệu năng tốt và chạy thử nghiệm cho các thử nghiệm hiệu suất và tải thế giới thực khác nhau.

Để có được điều này, bạn nên thiết lập một môi trường thử nghiệm hiệu suất , càng gần càng tốt, và cho phép chi phí, sản xuất gương. Đây có lẽ sẽ KHÔNG phải là môi trường phát triển hiện tại của bạn, nên nhỏ hơn và khép kín hơn để cho phép phát triển ứng dụng nhanh chóng. Các môi trường phát triển cũng có xu hướng sử dụng bộ nhớ đệm ít hơn và do đó không thể hiện sản xuất tốt để kiểm tra hiệu suất.

Trong môi trường thử nghiệm hiệu năng, ứng dụng sẽ chạy ở chế độ 'chế độ'. Bạn nên có nhiều máy chủ nếu sản xuất, nhóm kết nối cơ sở dữ liệu và bộ đệm ẩn nên được đặt cho môi trường sản xuất, v.v.

Bạn cũng sẽ muốn xem xét một công cụ để giúp kiểm tra tải.
jmeter là rất phổ biến mặc dù tôi thấy nó khá không thân thiện và nguyên thủy để sử dụng.
Một cách khác tôi đã sử dụng là chỉ url curlcủa một tập lệnh ruby.

Để rõ ràng

  • kiểm tra hiệu suất dòng cơ sở là để kiểm tra thời gian MỘT yêu cầu thực hiện.
  • kiểm tra tải tương tự như kiểm tra hiệu năng nhưng xem xét phản hồi khi hệ thống cũng đang tải từ các yêu cầu khác.

Bạn cũng có thể tìm thấy các liên kết sau hữu ích:


2

Hãy nhớ để người kiểm tra khởi động lại máy chủ và kiểm tra xem dữ liệu họ đã nhập có còn ở đó không. Tôi thấy một hệ thống có nhiều tháng thử nghiệm, thất bại khi nó được thực hiện!

Phần khó nhất để kiểm tra là tuy nhiên dữ liệu được cập nhật, không bao giờ có có bất kỳ kết quả lỗi thời nào được trả về từ bộ đệm.

Điều này có thể được giúp đỡ một phần bằng cách luôn luôn sử dụng dữ liệu trong bộ đệm để điền vào trang xác nhận mà người dùng nhìn thấy sau khi họ đã thực hiện thay đổi. Ví dụ: không sử dụng đối tượng bạn đã sử dụng để cập nhật cơ sở dữ liệu, nhưng yêu cầu dữ liệu từ bộ đệm, sau đó yêu cầu nó từ cơ sở dữ liệu. Chậm hơn một chút, nhưng nhiều khả năng xuất hiện lỗi nhanh hơn.


1

Điều này thực sự có một câu trả lời rất đơn giản và nó có liên quan đến mức độ của bộ nhớ đệm. Những gì bạn sẽ quan sát khi bộ nhớ đệm là chính xác là sự vắng mặt của các yêu cầu tại mục tiêu của các yêu cầu. Vì vậy, nó đi xuống cụm từ QA bị hack là "kết quả mong đợi."

Nếu triển khai bộ đệm ở tầng web, thì tôi hy vọng rằng các mục theo bộ đệm sẽ chỉ hiển thị một lần cho mỗi phiên người dùng được kiểm tra (nếu triển khai bộ đệm của máy khách) hoặc một lần cho nhiều người dùng (nếu triển khai bộ đệm kiểu CDN). Nếu bạn đang triển khai bộ đệm ở tầng dữ liệu để có kết quả chung, thì tôi sẽ thấy tỷ lệ nhấn bộ đệm cao trong tầng bộ đệm của bạn cùng với việc không có truy vấn trong nhật ký hồ sơ cho tầng dữ liệu.

v.v ...


0

Một số thứ được kiểm tra tốt hơn bởi một lập trình viên, có lẽ là người đã viết mã, sử dụng các bài kiểm tra đơn vị. Kiểm tra tính chính xác của mã bộ nhớ đệm của bạn là một trong những điều đó. (Từ cách bạn đặt câu hỏi này, tôi cho rằng người QA của bạn coi ứng dụng là "hộp đen" và kiểm tra nó thông qua giao diện bên ngoài.)


0

Bộ nhớ đệm logic là thứ nên được nhà phát triển kiểm tra đơn vị vì QA chủ yếu thực hiện kiểm thử hộp đen.

QA sẽ chỉ quan tâm đến các khía cạnh hiệu suất hoặc bất kỳ sửa chữa nào bạn đã thực hiện, do đó, bạn có thể cung cấp cho QA một cơ chế để bật / tắt bộ đệm ẩn hoặc bất kỳ cơ chế nào bạn đã sử dụng để cải thiện hiệu suất và sau đó họ có thể xác minh sự khác biệt về hiệu suất. Tất nhiên, QA cũng có thể xác minh một bản phát hành cũ chống lại hiệu suất của bạn - cũng được cải thiện.


-4

Khi tôi đang thử nghiệm giải pháp bộ nhớ đệm, chúng tôi đã thực hiện sau đó những gì chúng tôi đã kiểm tra về cơ bản hiệu năng. Chúng tôi đã thực hiện giải pháp bộ đệm cho kết quả XML và sau bộ đệm, cần rất ít thời gian để đưa ra phản hồi. Ngoài ra, chúng tôi đã kiểm tra nó với nhật ký máy chủ bằng cách kiểm tra các mục nhật ký.


3
Tôi không chắc chắn tôi hiểu những gì bạn đang nói, hoặc những gì câu trả lời của bạn nói rằng không có trong bảy câu trả lời trước đó.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.