Công nghệ phần mềm ôn tập cuối kỳ | Công nghệ phần mềm | Trường Đại học Công nghiệp TP.HCM

Công nghệ phần mềm ôn tập cuối kỳ môn Công nghệ phần mềm của Trường Đại học Công nghiệp Thành phố Hồ Chí Minh. Hi vọng tài liệu này sẽ giúp các bạn học tốt, ôn tập hiệu quả, đạt kết quả cao trong các bài thi, bài kiểm tra sắp tới. Mời các bạn cùng tham khảo chi tiết bài viết dưới đây nhé.

Thông tin:
19 trang 3 tháng trước

Bình luận

Vui lòng đăng nhập hoặc đăng ký để gửi bình luận.

Công nghệ phần mềm ôn tập cuối kỳ | Công nghệ phần mềm | Trường Đại học Công nghiệp TP.HCM

Công nghệ phần mềm ôn tập cuối kỳ môn Công nghệ phần mềm của Trường Đại học Công nghiệp Thành phố Hồ Chí Minh. Hi vọng tài liệu này sẽ giúp các bạn học tốt, ôn tập hiệu quả, đạt kết quả cao trong các bài thi, bài kiểm tra sắp tới. Mời các bạn cùng tham khảo chi tiết bài viết dưới đây nhé.

43 22 lượt tải Tải xuống
lOMoARcPSD|40651217
lOMoARcPSD|40651217
Phần lý thuyết
Chủng: 1, 2
Tuyền: 3, 5
Kiệt: 4
Hạn trước 20h T3
Nội dung thi cuối kỳ
Môn: Công nghệ phần mềm
Thời gian: 60 phút
Tham khảo tài liệu là 4 trang A4, viết bằng chữ viết tay của chính mình
Nội dung thi:
Phần 1: Lý thuyết
Thiết kế kiến trúc
Thiết kế giao diện
Kiểm thử phần mềm
Quản lý dự án phần mềm
Quản lý chất lượng phần mềm
Phần 2: Bài tập
Thiết kế một giao diện đáp ứng được đặc tả cho trướckhông vi phạm 10 kinh nghiệp thiết
kế của Nielsen
Thiết kế các trường hợp test (test case), dữ liệu test (test data) cho một giao diện (kiểm thử
hộp đen) theo đặc tả cho trước.
Thiết kế các trường hợp test (test case), dữ liệu test (test data) cho một thuật toán cho trước
(kiểm thử hộp trắng)
Tính các độ đo sản phẩm phần mềm từ đặc tả cho trước (cắt bỏ)
Gựi ý ôn tập
Phần 1: Lý thuyết – một số câu hỏi tham khảo
1. Thiết kế kiến trúc
Kiến trúc phần mềm là gì?
lOMoARcPSD|40651217
- một sự tổ chức tính căn bản của một hệ thống chứa những thành phần, những
mối quan hệ lẫn nhau của các thành phần này của các thành phần này với môi
trường. Nó cũng chứa đựng những nguyên lý định hướng cho việc thiết kế và tiến hóa
kiến trúc. Ngoài ra nó còn có tính tổng thể.
Tại sao phải một phần mềm nên có một kiến trúc tường minh?
- Giao tiếp với các stakeholder: Kiến trúc biểu diễn mức cao của hệ thống, được sử
dụng để thảo luận với các stakeholder.
- Phân tích hệ thống: cách để phân tích xem liệu hệ thống đáp ứng được các yêu
cầu phi chức năng hay không.
- Tái sử dụng: Kiến trúc có thể được tái sử dụng cho nhiều hệ thống khác
Liệt kê ba mẫu kiến trúc (Architectural Pattern) mà bạn biết. Mô tả sơ lược một mẫu kiến
trúc bạn thích (mô tả, khi nào dùng, ưu điểm, nhược điểm) - Kiến trúc MVC(Model
– View - Controller):
- Kiến trúc phân tầng(Layered)
- Kiến trúc Repository (Repository Architecture)
lOMoARcPSD|40651217
- Kiến trúc Client – Server
- Kiến trúc Pipe and Filter
Mẫu kiến trúc MVC (Model-View-Controller) phù hợp cho những ứng dụng dạng nào?
Tại sao?
- hình kiến trúc MVC (Model-View-Controller) thích hợp cho nhiều loại ứng dụng
web và desktop. Đặc biệt, phù hợp với các ứng dụngquy mô lớn hoặc có nhiều
tính năng phức tạp.
- Giải thích(nêu 3 - 4):
+ Phân chia ràng các phần của ứng dụng: MVC tách biệt ứng dụng thành ba phần
chính: Model, View và Controller. Model đại diện cho dữ liệu và logic xử lý,
lOMoARcPSD|40651217
View là giao diện người dùng và Controller là thành phần điều khiển. Việc này
giúp dễ dàng quản phát triển từng phần một không làm ảnh hưởng đến các
phần khác.
+ Tính tái sử dụng cao: Do mỗi phần trong MVC trách nhiệm riêng biệt, tạo
điều kiện cho việc tái sử dụng code một cách hiệu quả. Model thể được sử
dụng lại ở nhiều nơi mà không cần thay đổi, View có thể được thay đổi mà không ảnh
hưởng đến Controller và ngược lại.
+ Dễ dàng bảo trì mở rộng: Với cấu trúc ràng sphân chia ràng giữa các
phần, việc bảo trì mở rộng ứng dụng trở nên dễ dàng hơn. Khi cần thêm tính năng
mới, bạn chỉ cần tập trung vào việc mở rộng một trong ba phần không làm ảnh
hưởng đến các phần khác.
+ Tính linh hoạt trong thiết kế giao diện: Với phần View riêng biệt, bạn thể dễ
dàng thay đổi giao diện không ảnh hưởng đến logic xử hay dữ liệu. Điều này
cho phép bạn thích ứng với các yêu cầu thiết kế mới mà không cần phải thay đổi toàn
bộ ứng dụng.
+ Quản dữ liệu hiệu quả: MVC giúp quản dữ liệu một cách hiệu quả bằng cách
đưa logic xử dữ liệu vào phần Model. Điều này giúp tránh việc trùng lặp code
và đảm bảo tính nhất quán của dữ liệu trong toàn bộ ứng dụng.
Mẫu kiến trúc phân tầng (Layered) phù hợp cho những ứng dụng dạng nào? Tại sao?
- hình kiến trúc phân tầng (Layered Architecture) thích hợp cho nhiều loại ứng
dụng, đặc biệt những ứng dụng quy lớn, yêu cầu tính bảo mật cao cần
sự phân chia rõ ràng giữa các lớp chức năng.
- Giải thích(nêu 3 - 4):
+ Phân chia rõ ràng chức năng: Kiến trúc phân tầng chia ứng dụng thành các lớp hoặc
tầng với mỗi lớp trách nhiệm cụ thể. Thông thường, các lớp bao gồm Presentation
Layer (tầng trình bày), Business Logic Layer (tầng logic kinh doanh),
Data Access Layer (tầng truy cập dữ liệu) thể nhiều lớp khác như Service
Layer, Utility Layer, Persistence Layer. Việc này giúp ràng hóa tổ chức
nguồn một cách có hệ thống.
+ Dễ dàng bảo trì mở rộng: Mỗi lớp trong kiến trúc phân tầng trách nhiệm cụ
thể, giúp dễ dàng trong việc bảo trì mở rộng ứng dụng. Khi cần thay đổi một tính
năng cụ thể, bạn chỉ cần can thiệp vào lớp tương ứng không làm ảnh hưởng đến
các phần khác của ứng dụng.
+ Tính tái sử dụng code: Mỗi lớp thể được tái sử dụng trong các phần khác
nhau của ứng dụng hoặc trong các dự án khác, giúp giảm thiểu việc viết lại code
và tăng hiệu suất phát triển.
+ Tính linh hoạt mở rộng: Với cấu trúc phân tầng, bạn thể dễ dàng mở rộng
hoặc thay đổi một lớp mà không ảnh hưởng đến các lớp khác. Điều này cho phép ứng
dụng thích ứng với các yêu cầu mới một cách linh hoạt.
+ Tính bảo mật: Kiến trúc phân tầng cung cấp một môi trường bảo mật tốt bằng cách
phân chia dữ liệu logic xử thành các lớp khác nhau. Điều này giúp kiểm soát
quyền truy cập vào dữ liệu và đảm bảo tính bảo mật của hệ thống.
lOMoARcPSD|40651217
Mẫu kiến trúc Repository phù hợp cho những ứng dụng dạng nào? Tại sao?
- hình kiến trúc Repository thích hợp cho nhiều loại ứng dụng, đặc biệt các ứng
dụng có yêu cầu về quản lý và truy cập dữ liệu một cách hiệu quả.
- Giải thích(nêu 3 - 4):
+ Ứng dụng yêu cầu truy cập dữ liệu phức tạp: hình Repository giúp tạo ra
một lớp trung gian (Repository) giữa lớp Logic (hoặc Service) và lớp truy cập dữ liệu
(Data Access Layer). Điều này giúp che giấu chi tiết về cách dữ liệu được lấy lưu
trữ, giúp đơn giản hóa việc truy cập dữ liệu phức tạp như truy vấn phức tạp, kết hợp
dữ liệu từ nhiều nguồn, hoặc thao tác với nhiều bảng trong sở dữ liệu. + Tính linh
hoạt trong việc thay đổi sở dữ liệu: Với hình Repository, lớp Logic hoặc
Service chỉ giao tiếp thông qua các phương thức của Repository không cần biết
chi tiết về cơ sở dữ liệu đằng sau. Điều này giúp dễ dàng thay đổi hoặc chuyển đổi
sở dữ liệu mà không ảnh hưởng đến các phần khác của ứng dụng.
+ Tính tái sử dụng code: Repository cung cấp một cách tiếp cận thống nhất cho
việc truy cập dữ liệu trong toàn bộ ứng dụng. Điều này giúp tăng tính tái sử dụng của
code, logic truy cập dữ liệu thể được sử dụng lại nhiều nơi trong ứng
dụng.
+ Tách biệt logic kinh doanh logic truy cập dữ liệu: hình Repository giúp tách
biệt logic kinh doanh (trong lớp Logic hoặc Service) logic truy cập dữ liệu (trong
Repository). Điều này tạo điều kiện cho việc quản code một cách hiệu quả
dễ dàng duy trì ứng dụng.
+ Tính kiểm soát bảo mật: Repository cung cấp một cách tiếp cận kiểm soát được
quyền truy cập vào dữ liệu. Các phương thức của Repository thể được kiểm soát
quyền truy cập, giúp đảm bảo tính bảo mật của hệ thống.
Mẫu kiến trúc Client - Server phù hợp cho những ứng dụng dạng nào? Tại sao?
- Mô hình kiến trúc Client-Server phù hợp cho nhiều loại ứng dụng, đặc biệt là các ứng
dụng mạng nhu cầu tương tác giữa client server để yêu cầu chia sẻ dữ liệu giữa
nhiều người dùng như ứng dụng web, ứng dụng di động, ứng dụng game trực
tuyến.
- Giải thích:
+ Tăng khả năng chia sẻ dữ liệu: Mẫu Client-Server giúp dễ dàng chia sẻ dữ liệu giữa
nhiều người dùng đồng thời truy cập ứng dụng.
+ Tăng tính bảo mật: Mẫu Client-Server giúp dễ dàng kiểm soát quyền truy cập vào
dữ liệu và bảo vệ dữ liệu khỏi các hành vi truy cập trái phép.
+ Tăng khả năng mở rộng: Mẫu Client-Server thể dễ dàng mở rộng bằng cách
thêm máy chủ mới để đáp ứng nhu cầu tăng trưởng của lượng người dùng. + Tăng
tính sẵn sàng cao: Mẫu Client-Server thể được cấu hình để đảm bảo tính sẵn sàng
cao, giúp ứng dụng luôn hoạt động ngay cả khi một số máy chủ gặp sự cố. + Giảm tải
cho máy client: Máy client chỉ cần chịu trách nhiệm hiển thị giao diện người dùng
thu thập dữ liệu từ người dùng, do đó giảm tải cho máy client.
2. Thiết kế giao diện
Ba luật vàng của thiết kế giao diện là gì? Tại sao phải tuân thủ từ luật vàng đó
lOMoARcPSD|40651217
- 1. Đặt người dùng vào quyền kiểm soát(Place the User in Control)
“Để điều khiển máy tính, không có điều khiển máy tính”,
“Hệ thống đọc được suy nghĩ của họ, nó biết những gì người dùng muốn làm trước khi
người dùng cần làm”
+ Xác định các phương thức tương tác theo cách không buộc người dùng làm những
việc không cần thiết hoặc không mong muốn hành động.
+ Cung cấp sự tương tác linh hoạt.
+ Cho phép tương tác của người dùng không bị gián đoạn không thể hoàn tác
được.
+ Hợp hóa sự tương tác khi trình độ kỹ năng nâng cao cho phép sự tương tác
được tùy chỉnh.
+ Ẩn nội dung kỹ thuật đối với người dùng thông thường.
+ Thiết kế để tương tác trực tiếp với các đối tượng xuất hiện trên màn hình.
- 2. Giảm tải bộ nhớ của người dùng
+ Giảm nhu cầu về trí nhớ ngắn hạn.
+ Thiết lập các giá trị mặc định có ý nghĩa.
+ Xác định các phím tắt trực quan.
+ Bố cục trực quan của giao diện phải dựa trên một phép ẩn dụ trong thế giới thực.
+ Công bố thông tin một cách tiến bộ.
- 3. Làm cho giao diện nhất quán
+ Cho phép người dùng đặt tác vụ hiện tại vào một bối cảnh có ý nghĩa.
+ Duy trì sự nhất quán trong một gia đình các ứng dụng.
+ Nếu các hình tương tác trước đây đã tạo ra người dùng mong đợi, đừng thực
hiện thay đổi trừ khi có một lý do thuyết phục để làm như vậy.
Trình bày quy trình thiết kế giao diện người
dùng
Xác thực giao diện
Phân tích giao diện và mô hình hóa
Xây dựng giao diện
Thiết kê giao diê}
lOMoARcPSD|40651217
1. Phân ch người dùng và nhu cầu
của họ:
Các nguồn thông n: Phỏng vấn người dùng, ý kiến từ bộ phận bán hàng, markeng, hỗ trợ.
Người dùng là chuyên viên được đào tạo, kỹ thuật viên, nhân viên
văn phòng, hay công nhân sản xuất? Trình độ học vấn chính thức trung bình của người dùng là
gì? Người dùng có khả năng tự học từ tài liệu viết không, hay họ đã bày tỏ mong muốn được
đào tạo trong lớp học? Người dùng là người gõ máy nh nhanh hay sợ hãi bàn phím? Phạm vi
tuổi của cộng đồng người dùng là từ bao nhiêu đến bao nhiêu?
Người dùng chủ yếu sẽ thuộc về một giới nh nào?
o 2. Phác thảo các bước ếp cận ban đầu hoặc wireframes. o3. Prototype giao diện người
dùng. o 4. Thực hiện các bài kiểm thử người dùng và thu thập phản hồi.
o 5. Lặp lại từ các bước trước, dựa trên feedback và kết quả kiểm thử để cải ến thiết kế.
o Phân ch giao diện: 1. những người (người dùng cuối) sẽ tương tác với hệ thống thông
qua giao diện; 2. những công việc mà người dùng cuối cần thực hiện để làm việc của họ,
3. nội dung được trình bày như một phần của giao diện 4. môi trường mà những công
việc này sẽ được ến hành.:
Tại sao trong thiết kế giao diện, chúng ta phải phân tích người dùng? Nếu không phân tích
thì điều gì xảy ra?
Phân tích người dùngmột phần quan trọng của quy trình thiết kế giao diện người dùng
giúp đảm bảo rằng giao diện được tối ưu hóa để đáp ứng nhu cầu, mong muốn
khả năng của người dùng.
- Lý do phải phân tích:
+ Hiểu rõ đối tượng sử dụng: Phân tích người dùng giúp thiết kế giao diện dựa trên sự
hiểu biết về người sử dụng cuối cùng của sản phẩm hoặc ứng dụng. Điều này giúp
tăng khả năng hiểu được nhu cầu, mong muốn môi trường sử dụng của họ. + Tối
ưu hóa trải nghiệm người dùng: Bằng cách phân tích người dùng, bạn thể tạo ra
một giao diện dễ sử dụng, thân thiện phản ánh đúng những yêu cầu của người
dùng. Điều này tạo ra một trải nghiệm người dùng tốt hơn, từ đó tăng hội sử dụng
sản phẩm hoặc ứng dụng.
+ Xác định nhu cầu mong muốn của người dùng: Phân tích người dùng giúp xác
định những gì người dùng thực sự cần và muốn từ giao diện. Điều này giúp tạo ra các
tính năng và chức năng có ý nghĩa và hữu ích cho người dùng.
+ Giảm rủi ro và chi phí: Bằng cách hiểu rõ người dùng, bạn có thể tránh được những
sai sót trong thiết kế phát triển, giảm thiểu rủi ro chi phí phát sinh do việc phải
sửa đổi hoặc cải thiện giao diện sau này.
+ Tăng khả năng chấp nhận sử dụng: Khi giao diện được thiết kế dựa trên nhu cầu
mong muốn của người dùng, khả năng chấp nhận sử dụng của họ sẽ tăng lên.
Điều này làm tăng giá trị của sản phẩm hoặc ứng dụng trong mắt người dùng.
lOMoARcPSD|40651217
- Nếu không phân tích thì sẽ xảy ra:
+ Không đáp ứng nhu cầu của người dùng: Giao diện thể khó sử dụng, không trực
quan hoặc không phù hợp với mục tiêu của người dùng.
+ Gây khó khăn cho người dùng: Người dùng thể gặp khó khăn trong việc tìm
kiếm thông tin, hoàn thành nhiệm vụ hoặc sử dụng phần mềm.
Hãy cho ví dụ một thiết kế giao diện phù hợp với người dùng.
Một ứng dụng đọc sách điện tử chế độ ban đêm tự động điều chỉnh độ sáng màn
hình dựa trên môi trường xung quanh, rất phù hợp với người dùng thường xuyên đọc
sách vào buổi tối.
Tại sao trong thiết kế giao diện, chúng ta phải phân tích tác vụ? Nếu không phân tích thì
điều gì xảy ra?
Phân tích tác vụ (Task Analysis) trong thiết kế giao diện quan trọng giúp hiểu
các công việc mà người dùng sẽ thực hiện trên giao diệncách họ sẽ thực hiện chúng -
Lý do phải phân tích:
+ Hiểu rõ quy trình làm việc của người dùng: Phân tích tác vụ giúp xác định các bước
quy trình người dùng sẽ thực hiện khi sử dụng giao diện. Điều này giúp thiết
kế giao diện sao cho phản ánh đúng quy trình làm việc của người dùng. + Xác định
tính năng và chức năng cần thiết: Bằng cách hiểu rõ các tác vụ mà người dùng sẽ thực
hiện, bạn thể xác định những tính năng chức năng cần thiết để hỗ trợ tối ưu
hóa quy trình làm việc của họ trên giao diện.
+ Tối ưu hóa luồng làm việc: Phân tích tác vụ giúp bạn xác định tối ưu hóa luồng
làm việc của người dùng trên giao diện. Điều này giúp giảm thiểu số lượng bước cần
thực hiện và tăng tính hiệu quả của quy trình làm việc.
+ Đảm bảo dễ sử dụng hiệu quả: Bằng cách hiểu các tác vụ quy trình làm
việc của người dùng, bạn thể thiết kế giao diện sao cho dễ sử dụng hiệu quả
nhất. Điều này giúp tăng trải nghiệm người dùng giảm bớt khả năng gặp phải lỗi
và trục trặc trong quá trình sử dụng.
- Nếu không phân tích thì sẽ xảy ra:
+ Giao diện thể không phản ánh đúng quy trình làm việc của người dùng, dẫn đến
sự không hài lòng và khó chịu khi sử dụng.
+ Có thể thiết kế các tính năng chức năng không cần thiết hoặc không hữu ích cho
người dùng, làm phức tạp hóa quy trình làm việc.
+ Giao diện thể không tối ưu hóa được luồng làm việc của người dùng, dẫn đến
việc tăng thời gian và công sức cần thiết để hoàn thành tác vụ.
Hãy cho dụ một thiết kế giao diện phù hợp với tác
vụ.
Một ứng dụng thanh toán trực tuyến cho phép thực hiện giao dịch chỉ với một vài thao tác
đơn giản, nhấn mạnh tính năng quét mã QR để chuyển tiền.
Tại sao trong thiết kế giao diện, chúng ta phải phân tích môi trường làm việc? Nếu không phân
tích thì điều gì xảy ra?
lOMoARcPSD|40651217
Phân tích môi trường làm việc (Environment Analysis) trong thiết kế giao diện quan
trọng giúp đảm bảo rằng giao diện được thiết kế để phản ánh phù hợp với môi
trường sử dụng của người dùng.
- Lý do phải phân tích:
+ Hiểu rõ ngữ cảnh sử dụng: Phân tích môi trường làm việc giúp hiểu rõ ngữ cảnh sử
dụng của người dùng, bao gồm các điều kiện vật điều kiện công việc họ sẽ
sử dụng giao diện trong đó. Điều này giúp đảm bảo rằng giao diện được thiết kế phù
hợp với môi trường sử dụng cụ thể đó.
+ Tối ưu hóa trải nghiệm người dùng: Bằng cách hiểu môi trường làm việc của
người dùng, bạn thể tối ưu hóa giao diện để đảm bảo rằng hoạt động tốt
cung cấp trải nghiệm người dùng tốt nhất trong mọi điều kiện.
+ Xác định yêu cầu kỹ thuật: Phân tích môi trường làm việc giúp xác định các yêu
cầu kỹ thuật cụ thể cho giao diện, bao gồm yêu cầu về kích thước màn hình, độ phân
giải, môi trường ánh sáng âm thanh, yêu cầu về khả năng tương thích với các
thiết bị và hệ điều hành khác nhau.
+ Tăng khả năng sử dụng và chấp nhận: Bằng cách thiết kế giao diện sao cho phù hợp
với môi trường làm việc của người dùng, bạn tăng cơ hội để họ chấp nhận và sử dụng
giao diện một cách dễ dàng và thoải mái hơn.
- Nếu không phân tích thì sẽ xảy ra:
+ Giao diện thể không phản ánh đúng môi trường sử dụng của người dùng, dẫn
đến sự không hài lòng và khó chịu khi sử dụng.
+ thể thiết kế giao diện không phù hợp với các yêu cầu kỹ thuật của môi trường
làm việc, làm giảm hiệu suất hoặc gây ra các vấn đề kỹ thuật khác.
+ Người dùng thể gặp khó khăn trong việc sử dụng giao diện do không phù hợp
với điều kiện môi trường sử dụng của họ.
Hãy cho dụ một thiết kế giao diện phù hợp với môi trường làm
việc.
Giao diện của một phần mềm CAD được thiết kế để sử dụng trên các máy trạm mạnh mẽ
với nhiều màn hình cỡ lớn, tối ưu hóa không gian làm việc và hiển thị thông tin cần thiết một
cách rõ ràng.
Hãy kể ra 10 kinh nghiệm thiết kế tiện dụng của Nielsen áp dụng cho thiết kế giao diện
H1: Visibility of system status(cho thấy trạng thái của hệ thống)
H2: Match between system & real world (phù hợp với thế giới thực)
H3: User control & freedom (Người dùng – kiểm soát và tự do)
H4: Consistency & standards (Toàn vẹn và tiêu chuẩn)
H5: Error prevention (ngăn ngừa lỗi)
H6: Recognition rather than recall (Nhận thức hơn là nhớ)
H7: Flexibility and efficiency of use (mềm dẽo và hiệu quả)
H8: Aesthetic & minimalist design (thiết kế mỹ thuật và tối thiểu)
H9: Help users recognize, diagnose, & recover from errors (giúp nhận thức, phân tích
phục hồi lỗi)
H10: Help and documentation (trợ giúp và tài liệu)
lOMoARcPSD|40651217
Hãy cho dụ một thiết kế giao diện thỏa kinh nghiệm thứ 6 của
Nielsen
Một ứng dụng quản email hiển thị icon nhận biết ngay lập tức như "đã gửi", "chưa
đọc", "lưu nháp"; giúp người dùng nhận dạng nhanh chóng trạng thái của email
không cần phải nhớ
Hãy cho dụ một thiết kế giao diện thỏa kinh nghiệm thứ 1 của
Nielsen
Một trang web thương mại điện tử cung cấp thanh trạng thái đơn hàng, nơi người dùng có
thể theo dõi quá trình xử đơn hàng của mình từ lúc đặt hàng, đóng gói, vận chuyểnđến khi
giao hàng
3. Kiểm thử phần mềm
Mục tiêu của kiểm thử phần mềm là gì?
- Xác định lỗi, lỗ hổng: Xác định lỗi trong phần mềm càng sớm càng tốt, trước khi sản
phẩm được tung ra thị trường. Việc phát hiện lỗi sớm giúp tiết kiệm chi phí sửa chữa,
đồng thời giảm thiểu rủi ro cho người dùng.
- Tìm ra yêu cầu còn thiếu so với yêu cầu thực tế: đảm bảo rằng phần mềm đáp ứng tất
cả các yêu cầu đã được đề ra, bao gồm yêu cầu chức năng, yêu cầu phi chức năng
yêu cầu kinh doanh.
- Đánh giá chất lượng: Kiểm thử cung cấp thông tin về chất lượng của phần mềm, giúp
các bên liên quan đưa ra quyết định sáng suốt về việc phát triển, triển khai và sử dụng
sản phẩm.
Ai là người thực hiện việc kiểm thử phần mềm
- Kỹ sư kiểm thử phần mềm (Tester): người trực tiếp thực hiện các công việc kiểm
thử, bao gồm thiết kế, thực thi và báo cáo kết quả kiểm thử.
- Lập trình viên: Tham gia vào một số hoạt động kiểm thử, đặc biệt kiểm thử đơn vị
(unit testing).
lOMoARcPSD|40651217
- Chuyên gia kiểm thử: người trình độ chuyên môn cao về kiểm thử phần mềm,
thường đóng vai trò quản lý hoặc tư vấn cho các hoạt động kiểm thử. Có thể tham gia
vào việc thiết kế chiến lược kiểm thử, đánh giá quy trình kiểm thử và đào tạo tester.
- Người dùng: Đóng góp vào việc kiểm thử phần mềm thông qua việc phản hồi báo
cáo lỗi.
Hãy nói về mối quan hệ giữa việc kiểm thử phần mềm và chi phí
Hiệu quả về chi phí: Đây là một trong những lợi thế quan trọng của kiểm thử phần
mềm. Kiểm tra bất kỳ dự án CNTT nào đúng thời hạn sẽ giúp bạn tiết kiệm tiền của mình
trong thời gian dài. Trong trường hợp nếu các lỗi được phát hiện giai đoạn kiểm thử
phần mềm trước đó thì chi phí sửa chữa sẽ ít hơn.
+ Phát hiện lỗi sớm: Việc phát hiện lỗi càng sớm càng tốt sẽ giúp tiết kiệm chi phí sửa
chữa, vì việc sửa lỗi ở giai đoạn sau của dự án thường tốn kém hơn nhiều.
+ Ngăn ngừa lỗi: Kiểm thử giúp ngăn ngừa lỗi xảy ra trong tương lai, từ đó giảm thiểu
chi phí sửa lỗi và bảo trì.
+ Cải thiện chất lượng sản phẩm: Sản phẩm chất lượng cao sẽ ít gặp sự cố hơn, dẫn
đến ít yêu cầu hỗ trợ khách hàng hơn và do đó tiết kiệm chi phí.
+ Tăng cường sự hài lòng của khách hàng: Khách hàng s hài lòng hơn với sản phẩm
chất lượng cao, ít lỗi, từ đó giúp doanh nghiệp tiết kiệm chi phí marketing và bán
hàng.
Trình bày các hoạt động cần thực hiện trong quá trình kiểm thử phần mềm
1. Đánh giá kế hoạch và trạng thái phát triển:
- bước này, tester s đánh giá kế hoạch phát triển phần mềm để xác định phạm vi kiểm
thử, rủi ro tiềm ẩn và các yêu cầu cần thiết cho hoạt động kiểm thử.
- Tester cũng sẽ đánh giá trạng thái phát triển hiện tại của phần mềm để xác định các phần
nàođã sẵn sàng cho việc kiểm thử.
2. Phát triển kế hoạch và trường hợp kiểm thử:
- Trong bước này, tester sẽ xây dựng kế hoạch kiểm thử chi tiết, xác định các mục tiêu
kiểm thử, phạm vi kiểm thử, phương pháp kiểm thử và lịch trình thực hiện.
- Tester cũng sẽ phát triển các trường hợp kiểm thử cụ thể cho từng yêu cầu chức năng
phi chức năng của phần mềm.
lOMoARcPSD|40651217
3. Tạo trường hợp kiểm thử:
- Ở bước này, tester sẽ tạo ra các trường hợp kiểm thử dưới dạng văn bản hoặc sử dụng các
công cụ hỗ trợ kiểm thử tự động.
- Các trường hợp kiểm thử cần được viết ràng, súc tích dễ hiểu, đồng thời phải đảm
bảo bao phủ đầy đủ các yêu cầu kiểm thử.
4. Cài đặt môi trường kiểm thử:
- Trong bước này, tester sẽ thiết lập môi trường kiểm thử, bao gồm cài đặt phần mềm,
phần cứng và dữ liệu cần thiết cho việc thực hiện các bài kiểm tra.
- Môi trường kiểm thử cần phải phỏng môi trường thực tế phần mềm s được sử
dụng để đảm bảo tính chính xác của kết quả kiểm thử.
5. Thực hiện bài kiểm tra:
- Ở bước này, tester sẽ thực hiện các bài kiểm tra theo kế hoạch đã được xây dựng.
- Tester sẽ ghi lại kết quả kiểm thử, bao gồm cả các lỗi được phát hiện và các bước để tái tạo lỗi.
6. Báo cáo kết quả kiểm thử:
- Trong bước này, tester sẽ tổng hợp kết quả kiểm thử báo cáo cho các bên liên quan,
bao gồm nhà phát triển, quản lý dự án và khách hàng.
- Báo cáo cần bao gồm thông tin về số lượng lỗi được phát hiện, mức độ nghiêm trọng của
lỗi và các đề xuất sửa lỗi.
Sự khác biệt giữa Kiểm thử hợp trắng và kiểm thử hộp đen
White Box Testing Black Box Testing
Cũng được gọi là kiểm thử dựa trên mã Tập trung vào chức năng của phần mềm nguồn.
từ góc nhìn của người dùng bên ngoài.
Tập trung vào kiểm tra các chi tiết bên trong Không yêu cầu kiểm thử viên biết về cấu
của mã nguồn. trúc hoặc mã nguồn của phần mềm.
Kiểm thử viên có kiến thức về cấu trúc, logic, Các kỹ thuật như kiểm thử các biên,
kiểm và luồng đi của mã nguồn. thử tải, kiểm thử phi chức năng được sử Các kỹ thuật
như kiểm thử dòng mã, kiểm dụng.
thử nhánh, kiểm thử điều kiện được sử dụng. Mục tiêu chính là đảm bảo rằng phần
Mục tiêu chính là tìm ra lỗi trong mã nguồn, mềm hoạt động đúng với các yêu cầu và
xác định các nhánh điều kiện không được kỳ vọng của người dùng mà không cần kiểm tra
hoặc các lỗ hổng logic. biết chi tiết cài đặt bên trong.
Tóm lại, trong khi kiểm thử hợp trắng tập trung vào việc kiểm tra các chi tiết bên trong
của nguồn, kiểm thử hộp đen tập trung vào chức năng hành vi của phần mềm từ
góc nhìn của người dùng. Cả hai phương pháp đều cần thiết bổ sung cho nhau để đảm
bảo chất lượng phần mềm.
Sự khác biệt giữa kiểm thử tích hợp và kiểm thử hệ thống
Kiểm thử tích hợp Kiểm thử hệ thống
Giai đoạn kiểm thử này tập trung vào việc
kiểm tra các thành phần (module, class,
chức năng) của phần mềm khi chúng được
kết hợp lại với nhau để hình
Giai đoạn kiểm thử này tập trung vào việc
kiểm tra toàn bộ hệ thống phần mềm như
một đơn vị duy nhất, bao gồm tất cả các
thành phần đã được tích hợp.
lOMoARcPSD|40651217
thành một hệ thống hoàn chỉnh.
Mục tiêu là xác minh tính tương tác giữa
các thành phần và đảm bảo rằng chúng
hoạt động một cách hợp lý khi được tích
hợp.
Các kỹ thuật kiểm thử thường bao gồm
kiểm thử dòng, kiểm thử nhánh, kiểm thử
giao diện, và kiểm thử các luồng điều kiện
khác nhau giữa các thành phần.
Mục tiêu là xác minh rằng hệ thống hoạt
động đúng đắn và đáp ứng được các yêu
cầu chức năng và phi chức năng đã được
xác định trước.
Các kỹ thuật kiểm thử có thể bao gồm
kiểm thử chức năng, kiểm thử hiệu suất,
kiểm thử bảo mật, và các dạng kiểm thử
phi chức năng khác như kiểm thử tải và
kiểm thử bảo mật.
Tóm lại, kiểm thử tích hợp tập trung vào kiểm tra tính tương tác giữa các thành phần
riêng lẻ của hệ thống, trong khi kiểm thử hệ thống tập trung vào kiểm tra toàn bộ hệ
thống như một đơn vị hoạt động đảm bảo rằng đáp ứng được các yêu cầu chức
năng và phi chức năng.
4. Quản lý dự án phần mềm
Mục tiêu của quản lý rủi ro trong dự án phần mềm
Mục tiêu của quản lý rủi ro trong dự án phần mềm là nhận biết, đánh giá và quản lý các rủi ro
thể ảnh hưởng đến dự án. Điều này bao gồm nhận dạng các rủi ro liên quan đến công nghệ,
con người, yêu cầu và các khía cạnh kinh doanh khác, sau đó đề xuất triển khai các biện pháp
để giảm thiểu hoặc tránh những ảnh hưởng tiêu cực của rủi ro đó.
Nhận biết rủi ro: Xác định ghi nhận các rủi ro tiềm ẩn hiện hữu thể ảnh hưởng đến
dự án phần mềm. Điều này thể bao gồm nhận diện các rủi ro liên quan đến công nghệ, con
người, yêu cầu và các khía cạnh kinh doanh khác của dự án.
Đánh giá rủi ro: Phân tích xác suất xảy ra hậu quả của từng rủi ro để hiểu mức độ ảnh
hưởng của chúng đối với dự án. Điều này giúp ưu tiên tập trung vào các rủi ro quan trọng
nhất.
Quản rủi ro: Phát triển triển khai các biện pháp phòng ngừa ứng phó để giảm thiểu
hoặc loại bỏ các rủi ro tiềm ẩn giảm thiểu ảnh hưởng của các rủi ro không thể tránh được.
Điều này bao gồm cả việc phát triển kế hoạch rủi ro chi tiết và thiết lập các biện pháp dự phòng.
Thế nào là một dự án được xem là thành công
Một dự án được xem thành công khi được hoàn thành đúng tiến độ, đúng ngân sách
đáp ứng được các yêu cầu mục tiêu ban đầu. Ngoài ra, dự án cũng cần phải đảm bảo chất
lượng sản phẩm, sự hài lòng của khách hàng sở hạ tầng tổ chức phù hợp để hỗ trợ duy
trì sản phẩm sau khi triển khai.
- Hoàn thành đúng tiến độ: Dự án được hoàn thành theo kế hoạch, không gặp trễ lịch trình
quan trọng và không làm ảnh hưởng đến các dự án khác.
lOMoARcPSD|40651217
- Hoàn thành đúng ngân sách: Dự án được thực hiện trong ngân sách được phê duyệt,
không sự vượt quá ngân sách đáng kể không gây ảnh hưởng tiêu cực đến tài chính
của tổ chức.
- Đạt được các yêu cầu mục tiêu: Sản phẩm hoặc dịch vụ cuối cùng đáp ứng được các
yêu cầu và mục tiêu đã định rõ, đáp ứng được nhu cầu của khách hàng và người sử dụng.
- Chất lượng cao: Sản phẩm được sản xuất với chất lượng cao, không lỗi quan trọng
đáp ứng được các tiêu chuẩn và yêu cầu chất lượng.
- Sự hài lòng của khách hàng: Khách hàng hài lòng với sản phẩm hoặc dịch vụ được cung
cấp và thấy rằng nó đáp ứng được nhu cầu và mong đợi của họ.
Các hoạt động nào có trong quản lý dự án phần mềm, nêu mục tiêu của hoạt động đó.
- Rủi ro nhận biết: Xác định các rủi ro có thể ảnh hưởng đến dự án.
- Phân tích rủi ro: Đánh giá xác suất và hậu quả của mỗi rủi ro.
- Kế hoạch rủi ro: Phát triển chiến lược để quản lý hoặc giảm thiểu các rủi ro.
- Theo dõi rủi ro: Theo dõi đánh giá các rủi ro trong suốt dự án. Hãy cho hai
rủi ro liên quan đến công nghệ (Technology) (GPT)
Hiệu suất sở dữ liệu không đạt yêu cầu: Trong quá trình triển khai, thể xảy ra tình
huống sở dữ liệu không thể xử được số lượng giao dịch mỗi giây (TPS - Transactions
Per Second) như đã dự kiến. Điều này có thể gây ra sự trễ hạn trong việc xử lý dữ liệu, làm giảm
hiệu suất hoạt động của hệ thống và ảnh hưởng đến trải nghiệm người dùng.
Sự không hiệu quả của các công cụ công nghệ phần mềm: thể xảy ra tình trạng khi
các công cụ công nghệ phần mềm (ví dụ: CASE tools) không hoạt động như mong đợi hoặc
không tương thích với nhau, dẫn đến sự không hiệu quả trong quá trình phát triển phần mềm.
Điều này thể làm chậm tiến độ dự án tăng chi phí do cần phải thay đổi hoặc sửa chữa các
công cụ hoặc tìm kiếm các giải pháp thay thế.
Hãy cho hai rủi ro liên quan đến con người (People) (GPT)
Hãy cho Khó khăn trong tuyển dụng nhân viên có kỹ năng cần thiết: Trong một số trường
hợp, dự án thể gặp khó khăn khi tìm kiếm tuyển dụng nhân viên đủ kỹ năng kinh
nghiệm cần thiết để tham gia vào dự án. Điều này thể gây ra sự trễ hạn trong việc hoàn thành
các nhiệm vụ, hoặc thậm chí làm ảnh hưởng đến chất lượng của sản phẩm cuối cùng do sự thiếu
hụt về nguồn lực chất lượng.
Sự vắng mặt của nhân viên chủ chốt: Nếu nhân viên chủ chốt hoặc nhóm quản khóa
không mặt hoặc không sẵn vào các thời điểm quan trọng trong dự án do do sức khỏe,
nghỉ thai sản, hoặc các tình huống khẩn cấp khác, thể dẫn đến sự trễ hạn trong quá trình ra
quyết định hoặc thực hiện các nhiệm vụ quan trọng. Điều này thể ảnh hưởng đến tiến độ
hiệu suất của dự án.
Hai rủi ro liên quan đến yêu cầu (Requirements) (GPT)
Thay đổi yêu cầu đột ngột không kiểm soát được: Trong quá trình phát triển dự án,
thể xuất hiện các thay đổi đột ngột không kiểm soát được từ phía khách hàng hoặc các bên
lOMoARcPSD|40651217
liên quan khác về yêu cầu sản phẩm. Điều này thể làm thay đổi phạm vi dự án, tăng thêm
công việc và chi phí, và gây ra sự không chắc chắn và căng thẳng cho đội ngũ phát triển.
Sự hiểu lầm về yêu cầu giữa các bên liên quan: thể xảy ra sự hiểu lầm hoặc không
thống nhất giữa các bên liên quan về yêu cầu của sản phẩm phần mềm. Điều này thể dẫn đến
việc triển khai sản phẩm không đúng với mong đợi của khách hàng hoặc gây ra sự bất mãn
tranh cãi giữa các bên liên quan.
Tại sao phải có hoạt động phân tích rủi ro (Risk analysis)
Hoạt động phân tích rủi ro cần thiết để đánh giá xác suất và hậu quả của mỗi rủi ro. Điều này
giúp dự án định hình các biện pháp phòng ngừa quản rủi ro một cách hiệu quả, từ đó giảm
thiểu các rủi ro có thể ảnh hưởng đến dự án.
Đánh giá xác suất hậu quả: Phân tích rủi ro giúp đánh giá xác suất xảy ra mức độ
nghiêm trọng của các rủi ro tiềm ẩn. Bằng cách này, nhóm dự án thể hiểu được mức độ nguy
cơ của từng rủi ro và ưu tiên những rủi ro quan trọng nhất cần được quản lý.
Hãy cho biết tầm quan trọng của hoạt động nhóm trong các dự án công nghệ phần mềm
Hoạt động nhóm tương tác giữa các thành viên nhóm để cùng nhau hoàn thành các nhiệm
vụ dự án. Trong các dự án công nghệ phần mềm, hoạt động nhóm rất quan trọngtạo ra
một môi trường làm việc hợp tác và sáng tạo, giúp giải quyết các vấn đề kỹ thuật phức tạp và
thúc đẩy sự tiến triển của dự án.
Phân chia phối hợp công việc: cho phép phân chia công việc một cách hiệu quả phối
hợp giữa các thành viên để đảm bảo rằng mọi người đều biết rõ trách nhiệm của mình và làm
việc cùng nhau để đạt được mục tiêu dự án.
Chia sẻ kiến thức kinh nghiệm: tạo điều kiện cho việc chia sẻ thông tin, học hỏi từ nhau
và phát triển kỹ năng cá nhân, tạo nên một môi trường làm việc tích cực và sáng tạo.
Tăng cường sức mạnh tập thể: Nhóm làm việc thể tận dụng sức mạnh của tập thể bằng
cách kết hợp các kỹ năng và năng lực khác nhau của các thành viên. Khi làm việc cùng nhau,
nhóm có thể đạt được những kết quả mà một cá nhân không thể làm được.
Giảm thiểu rủi ro: Bằng cách chia sẻ trách nhiệm và kinh nghiệm, nhóm có thể giảm thiểu rủi
ro tăng khả năng thành công của dự án. Các thành viên thể hỗ trợ lẫn nhau trong việc
giải quyết các vấn đề và đối mặt với các thách thức.
Tạo sự đồng thuận cam kết: Khi mọi người làm việc cùng nhau hỗ trợ lẫn nhau, họ
xu hướng cảm thấy tự hào về công việc của mình cam kết hơn với mục tiêu giá trị của
dự án.
5. Quản lý chất lượng phần mềm
Nêu mục tiêu của quản lý chất lượng phần mềm
- Ở cấp độ tổ chức, quản lý chất lượng liên quan đến thiết lập một khuôn khổ các quy
trình tổ chức và êu chuẩn sẽ dẫn đến phần mềm chất lượng cao.
lOMoARcPSD|40651217
- Ở cấp độ dự án, quản lý chất lượng liên quan đến việc áp dụng các các quy trình chất
lượng cụ thể và kiểm tra xem các quy trình này đã được hoạch định chưa các quy trình
đã được tuân theo.
- Ở cấp độ dự án, quản lý chất lượng cũng liên quan đến xây dựng kế hoạch chất lượng
cho dự án. Kế hoạch chất lượng phải được thiết lập đưa ra các mục êu chất lượng cho
dự án và xác định những quy trình nào và êu chuẩn sẽ được sử dụng.
Hãy liệt kê 3 thuộc tính để đánh giá chất lượng phần mềm?
- Tính chính xác (Correctness): Phần mềm phải đáp ứng đúng và đầy đủ các yêu cầu đã
được đề ra, bao gồm cả yêu cầu chức năng và yêu cầu phi chức năng. Điều này có nghĩa
là phần mềm phải thực hiện đúng các chức năng mong muốn, hoạt động chính xác theo
thông số kỹ thuật và đáp ứng các êu chuẩn về hiệu suất, độ n cậy, bảo mật, v.v.
- Tính khả dụng (Usability): Phần mềm phải dễ sử dụng, dễ học và dễ hiểu đối với người
dùng mục êu. Giao diện người dùng phải trực quan, dễ điều hướng và cung cấp phản
hồi rõ ràng cho người dùng. Phần mềm cũng cần có tài liệu hướng dẫn sử dụng đầy đủ
và dễ hiểu.
- Tính n cậy (Reliability): Phần mềm phải hoạt động ổn định và đáng n cậy trong điều
kiện sử dụng bình thường. Phần mềm cần phải hạn chế tối đa lỗi, sự cố và gián đoạn
trong quá trình hoạt động. Khả năng phục hồi sau lỗi cũng là một yếu tố quan trọng để
đánh giá nh n cậy của phần mềm.
- Tính hiệu quả (E ciency): Phần mềm phải sử dụng hiệu quả tài nguyên hệ thống như
CPU, bộ nhớ, dung lượng lưu trữ và băng thông mạng.
- Tính bảo mật (Security): Phần mềm phải bảo vệ dữ liệu và thông n của người dùng khỏi
các truy cập trái phép, sửa đổi hoặc phá hủy.
- Tính bảo trì (Maintainability): Phần mềm phải dễ dàng sửa đổi, cập nhật và nâng cấp để
đáp ứng các yêu cầu mới hoặc sửa lỗi.
- Tính di động (Portability): Phần mềm phải có thể dễ dàng cài đặt và chạy trên nhiều nền
tảng phần cứng và hệ điều hành khác nhau.
Phần 2: Bài tập – một số ví dụ tham khảo
1. Thiết kế một giao diện đáp ứng được đặc tả cho trước không vi phạm 10 kinh nghiệm thiết
kế của Nielsen
Thông tin đăng tài khoản người dùng gồm có: Họ tên, ngày tháng năm sinh, giới tính, số
điện thoại, địa chỉ email, loại người dùng. Trong đó giới tính giá trị “Nam” hoặc “Nữ”,
Loại người dùng “sinh viên” hoặc “giáo viên” hoặc “tự do”. Hãy thiết kế một giao diện
đăng tài khoản người dùng trên hệ thống thư viện điện tử của IUH dựa vào thông tin đã
cho và dựa vào 10 kinh nghiệm thiết kế của Nielsen.
Đặt tả thiết kế
Thành phần Mô tả thành phần Ràng buộc
Mô tả cho rõ
Vẽ giao diện
Bài 2: Thông tin của sách gồm: sách, ISBN, tựa sách, tác giả, nhà xuất bản, năm xuất
bản, phiên bản, số trang, loại sách, ảnh bìa sách, ngày sách về thư viện. Biết rằng: một quyển
lOMoARcPSD|40651217
sách thể nhiều hơn một tác giả, loại sách thể sách giấy hoặc sách điện tử. Nếu
sách điện tử thì có chỗ để submit sách dưới dạng Pdf. Ảnh bìa sách là một dạng file ảnh. Các
trường dữ liệu khác tự chọn sao cho hợp lý nhất.
Thiết kế một giao diện cho phép thủ thư đưa thông tin của một quyễn sách vào hệ thống quản
sách của một ứng dụng thư viện điện tử của IUH. Giao diện thiết kế sao cho phù hợp với
10 kinh nghiệm thiết kế của Nielsen
2. Thiết kế các trường hợp test (test case), dữ liệu test (test data) cho một giao diện (kiểm thử
hộp đen) theo đặc tả cho trước.
Bài 1: Cho chương trình chuyển số thập lục phân sang số thập phân với giao diện như sau:
- Tự đưa ra đặc tả cho chương trình trên để có thể thiết kế các trường hợp kiểm thử.
- Đưa ra kế hoạch kiểm thử và dữ liệu liệu kiểm thử dựa trên đặc tả tự nêu ở trên. Bài 2:
- Tự đưa ra đặc tả cho chương trình trên để có thể thiết kế các trường hợp kiểm thử.
- Đưa ra kế hoạch kiểm thử và dữ liệu liệu kiểm thử dựa trên đặc tả tự nêu ở trên.
3. Thiết kế các trường hợp test (test case), dữ liệu test (test data) cho một thuật toán cho trước
(kiểm thử hộp trắng)
Bài 1
lOMoARcPSD|40651217
Yêu cầu của chương trình
Yêu cầu bài:
(a) Vẽ đồ thị luồng điều khiển (CFG) (số thứ tự node dựa vào số thứ tự dòng)
(b) Liệt kê các đường cơ bản (path) có thể có.
(c) Thiết kế các trường hợp test theo path ứng với dữ liệu đầu vào dữ liệu đầu ra mong
đợitheo bảng sau:
STT Path
INPUT
EX.
RESULT
bt1 bt2
btc
3
1
lOMoARcPSD|40651217
Bài 2:
Yêu cầu bài:
(a) Dựa vào chương trình trên, hãy tìm hiểu xem chương trình thực hiện công việc gì?
(b) Vẽ đồ thị luồng điều khiển (CFG) (số thứ tự node dựa vào số thứ tự dòng) (c) Liệt
kê các đường cơ bản (path) có thể có.
(d) Thiết kế các trường hợp test theo path ứng với dữ liệu đầu vào dữ liệu đầu ra
mongđợi.
| 1/19

Preview text:

lOMoARcPSD|40651217

Phần lý thuyết

Chủng: 1, 2

Tuyền: 3, 5

Kiệt: 4

Hạn trước 20h T3

Nội dung thi cuối kỳ

Môn: Công nghệ phần mềm

Thời gian: 60 phút

Tham khảo tài liệu là 4 trang A4, viết bằng chữ viết tay của chính mình Nội dung thi:

Phần 1: Lý thuyết

  • Thiết kế kiến trúc
  • Thiết kế giao diện
  • Kiểm thử phần mềm
  • Quản lý dự án phần mềm
  • Quản lý chất lượng phần mềm

Phần 2: Bài tập

  • Thiết kế một giao diện đáp ứng được đặc tả cho trước và không vi phạm 10 kinh nghiệp thiết kế của Nielsen
  • Thiết kế các trường hợp test (test case), dữ liệu test (test data) cho một giao diện (kiểm thử hộp đen) theo đặc tả cho trước.
  • Thiết kế các trường hợp test (test case), dữ liệu test (test data) cho một thuật toán cho trước (kiểm thử hộp trắng)
  • Tính các độ đo sản phẩm phần mềm từ đặc tả cho trước (cắt bỏ)

Gựi ý ôn tập

Phần 1: Lý thuyết – một số câu hỏi tham khảo

1. Thiết kế kiến trúc

  • Kiến trúc phần mềm là gì?

- Là một sự tổ chức có tính căn bản của một hệ thống chứa những thành phần, những mối quan hệ lẫn nhau của các thành phần này và của các thành phần này với môi trường. Nó cũng chứa đựng những nguyên lý định hướng cho việc thiết kế và tiến hóa kiến trúc. Ngoài ra nó còn có tính tổng thể.

  • Tại sao phải một phần mềm nên có một kiến trúc tường minh?
  • Giao tiếp với các stakeholder: Kiến trúc là biểu diễn mức cao của hệ thống, được sử dụng để thảo luận với các stakeholder.
  • Phân tích hệ thống: Là cách để phân tích xem liệu hệ thống có đáp ứng được các yêu cầu phi chức năng hay không.
  • Tái sử dụng: Kiến trúc có thể được tái sử dụng cho nhiều hệ thống khác
  • Liệt kê ba mẫu kiến trúc (Architectural Pattern) mà bạn biết. Mô tả sơ lược một mẫu kiến trúc mà bạn thích (mô tả, khi nào dùng, ưu điểm, nhược điểm) - Kiến trúc MVC(Model – View - Controller):

    • Kiến trúc phân tầng(Layered)

    • Kiến trúc Repository (Repository Architecture)

    • Kiến trúc Client – Server

    • Kiến trúc Pipe and Filter

  • Mẫu kiến trúc MVC (Model-View-Controller) phù hợp cho những ứng dụng dạng nào? Tại sao?
    • Mô hình kiến trúc MVC (Model-View-Controller) thích hợp cho nhiều loại ứng dụng web và desktop. Đặc biệt, nó phù hợp với các ứng dụng có quy mô lớn hoặc có nhiều tính năng phức tạp.
    • Giải thích(nêu 3 - 4):

+ Phân chia rõ ràng các phần của ứng dụng: MVC tách biệt ứng dụng thành ba phần chính: Model, View và Controller. Model đại diện cho dữ liệu và logic xử lý,

View là giao diện người dùng và Controller là thành phần điều khiển. Việc này

giúp dễ dàng quản lý và phát triển từng phần một mà không làm ảnh hưởng đến các phần khác.

+ Tính tái sử dụng cao: Do mỗi phần trong MVC có trách nhiệm riêng biệt, nó tạo điều kiện cho việc tái sử dụng mã code một cách hiệu quả. Model có thể được sử dụng lại ở nhiều nơi mà không cần thay đổi, View có thể được thay đổi mà không ảnh hưởng đến Controller và ngược lại.

+ Dễ dàng bảo trì và mở rộng: Với cấu trúc rõ ràng và sự phân chia rõ ràng giữa các phần, việc bảo trì và mở rộng ứng dụng trở nên dễ dàng hơn. Khi cần thêm tính năng mới, bạn chỉ cần tập trung vào việc mở rộng một trong ba phần mà không làm ảnh hưởng đến các phần khác.

+ Tính linh hoạt trong thiết kế giao diện: Với phần View riêng biệt, bạn có thể dễ dàng thay đổi giao diện mà không ảnh hưởng đến logic xử lý hay dữ liệu. Điều này cho phép bạn thích ứng với các yêu cầu thiết kế mới mà không cần phải thay đổi toàn bộ ứng dụng.

+ Quản lý dữ liệu hiệu quả: MVC giúp quản lý dữ liệu một cách hiệu quả bằng cách đưa logic xử lý dữ liệu vào phần Model. Điều này giúp tránh việc trùng lặp mã code và đảm bảo tính nhất quán của dữ liệu trong toàn bộ ứng dụng.

 Mẫu kiến trúc phân tầng (Layered) phù hợp cho những ứng dụng dạng nào? Tại sao?

  • Mô hình kiến trúc phân tầng (Layered Architecture) thích hợp cho nhiều loại ứng dụng, đặc biệt là những ứng dụng có quy mô lớn, yêu cầu tính bảo mật cao và cần có sự phân chia rõ ràng giữa các lớp chức năng.
  • Giải thích(nêu 3 - 4):

+ Phân chia rõ ràng chức năng: Kiến trúc phân tầng chia ứng dụng thành các lớp hoặc tầng với mỗi lớp có trách nhiệm cụ thể. Thông thường, các lớp bao gồm Presentation Layer (tầng trình bày), Business Logic Layer (tầng logic kinh doanh),

Data Access Layer (tầng truy cập dữ liệu) và có thể có nhiều lớp khác như Service Layer, Utility Layer, và Persistence Layer. Việc này giúp rõ ràng hóa và tổ chức mã nguồn một cách có hệ thống.

+ Dễ dàng bảo trì và mở rộng: Mỗi lớp trong kiến trúc phân tầng có trách nhiệm cụ thể, giúp dễ dàng trong việc bảo trì và mở rộng ứng dụng. Khi cần thay đổi một tính năng cụ thể, bạn chỉ cần can thiệp vào lớp tương ứng mà không làm ảnh hưởng đến các phần khác của ứng dụng.

+ Tính tái sử dụng mã code: Mỗi lớp có thể được tái sử dụng trong các phần khác nhau của ứng dụng hoặc trong các dự án khác, giúp giảm thiểu việc viết lại mã code và tăng hiệu suất phát triển.

+ Tính linh hoạt và mở rộng: Với cấu trúc phân tầng, bạn có thể dễ dàng mở rộng hoặc thay đổi một lớp mà không ảnh hưởng đến các lớp khác. Điều này cho phép ứng dụng thích ứng với các yêu cầu mới một cách linh hoạt.

+ Tính bảo mật: Kiến trúc phân tầng cung cấp một môi trường bảo mật tốt bằng cách phân chia dữ liệu và logic xử lý thành các lớp khác nhau. Điều này giúp kiểm soát quyền truy cập vào dữ liệu và đảm bảo tính bảo mật của hệ thống.

 Mẫu kiến trúc Repository phù hợp cho những ứng dụng dạng nào? Tại sao?

  • Mô hình kiến trúc Repository thích hợp cho nhiều loại ứng dụng, đặc biệt là các ứng dụng có yêu cầu về quản lý và truy cập dữ liệu một cách hiệu quả.
  • Giải thích(nêu 3 - 4):

+ Ứng dụng có yêu cầu truy cập dữ liệu phức tạp: Mô hình Repository giúp tạo ra một lớp trung gian (Repository) giữa lớp Logic (hoặc Service) và lớp truy cập dữ liệu (Data Access Layer). Điều này giúp che giấu chi tiết về cách dữ liệu được lấy và lưu trữ, giúp đơn giản hóa việc truy cập dữ liệu phức tạp như truy vấn phức tạp, kết hợp dữ liệu từ nhiều nguồn, hoặc thao tác với nhiều bảng trong cơ sở dữ liệu. + Tính linh hoạt trong việc thay đổi cơ sở dữ liệu: Với mô hình Repository, lớp Logic hoặc Service chỉ giao tiếp thông qua các phương thức của Repository mà không cần biết chi tiết về cơ sở dữ liệu đằng sau. Điều này giúp dễ dàng thay đổi hoặc chuyển đổi cơ sở dữ liệu mà không ảnh hưởng đến các phần khác của ứng dụng.

+ Tính tái sử dụng mã code: Repository cung cấp một cách tiếp cận thống nhất cho việc truy cập dữ liệu trong toàn bộ ứng dụng. Điều này giúp tăng tính tái sử dụng của mã code, vì logic truy cập dữ liệu có thể được sử dụng lại ở nhiều nơi trong ứng dụng.

+ Tách biệt logic kinh doanh và logic truy cập dữ liệu: Mô hình Repository giúp tách biệt logic kinh doanh (trong lớp Logic hoặc Service) và logic truy cập dữ liệu (trong Repository). Điều này tạo điều kiện cho việc quản lý mã code một cách hiệu quả và dễ dàng duy trì ứng dụng.

+ Tính kiểm soát và bảo mật: Repository cung cấp một cách tiếp cận kiểm soát được quyền truy cập vào dữ liệu. Các phương thức của Repository có thể được kiểm soát quyền truy cập, giúp đảm bảo tính bảo mật của hệ thống.

 Mẫu kiến trúc Client - Server phù hợp cho những ứng dụng dạng nào? Tại sao?

  • Mô hình kiến trúc Client-Server phù hợp cho nhiều loại ứng dụng, đặc biệt là các ứng dụng mạng có nhu cầu tương tác giữa client và server để yêu cầu chia sẻ dữ liệu giữa nhiều người dùng như là ứng dụng web, ứng dụng di động, ứng dụng game trực tuyến.
  • Giải thích:

+ Tăng khả năng chia sẻ dữ liệu: Mẫu Client-Server giúp dễ dàng chia sẻ dữ liệu giữa nhiều người dùng đồng thời truy cập ứng dụng.

+ Tăng tính bảo mật: Mẫu Client-Server giúp dễ dàng kiểm soát quyền truy cập vào dữ liệu và bảo vệ dữ liệu khỏi các hành vi truy cập trái phép.

+ Tăng khả năng mở rộng: Mẫu Client-Server có thể dễ dàng mở rộng bằng cách thêm máy chủ mới để đáp ứng nhu cầu tăng trưởng của lượng người dùng. + Tăng tính sẵn sàng cao: Mẫu Client-Server có thể được cấu hình để đảm bảo tính sẵn sàng cao, giúp ứng dụng luôn hoạt động ngay cả khi một số máy chủ gặp sự cố. + Giảm tải cho máy client: Máy client chỉ cần chịu trách nhiệm hiển thị giao diện người dùng và thu thập dữ liệu từ người dùng, do đó giảm tải cho máy client.

2. Thiết kế giao diện

 Ba luật vàng của thiết kế giao diện là gì? Tại sao phải tuân thủ từ luật vàng đó

- 1. Đặt người dùng vào quyền kiểm soát(Place the User in Control)

“Để điều khiển máy tính, không có điều khiển máy tính”,

“Hệ thống đọc được suy nghĩ của họ, nó biết những gì người dùng muốn làm trước khi người dùng cần làm”

+ Xác định các phương thức tương tác theo cách không buộc người dùng làm những việc không cần thiết hoặc không mong muốn hành động.

+ Cung cấp sự tương tác linh hoạt.

+ Cho phép tương tác của người dùng không bị gián đoạn và không thể hoàn tác được.

+ Hợp lý hóa sự tương tác khi trình độ kỹ năng nâng cao và cho phép sự tương tác được tùy chỉnh.

+ Ẩn nội dung kỹ thuật đối với người dùng thông thường.

+ Thiết kế để tương tác trực tiếp với các đối tượng xuất hiện trên màn hình.

  • 2. Giảm tải bộ nhớ của người dùng

+ Giảm nhu cầu về trí nhớ ngắn hạn.

+ Thiết lập các giá trị mặc định có ý nghĩa.

+ Xác định các phím tắt trực quan.

+ Bố cục trực quan của giao diện phải dựa trên một phép ẩn dụ trong thế giới thực. + Công bố thông tin một cách tiến bộ.

  • 3. Làm cho giao diện nhất quán

+ Cho phép người dùng đặt tác vụ hiện tại vào một bối cảnh có ý nghĩa.

+ Duy trì sự nhất quán trong một gia đình các ứng dụng.

+ Nếu các mô hình tương tác trước đây đã tạo ra người dùng mong đợi, đừng thực hiện thay đổi trừ khi có một lý do thuyết phục để làm như vậy.

Trình bày quy trình thiết kế giao diện người dùng

Xác thực giao diện

Phân tích giao diện và mô hình hóa

Xây dựng giao diện

Thiết kê giao diêṇ

1. Phân tích người dùng và nhu cầu của họ:

Các nguồn thông tin: Phỏng vấn người dùng, ý kiến từ bộ phận bán hàng, marketing, hỗ trợ. Người dùng là chuyên viên được đào tạo, kỹ thuật viên, nhân viên

văn phòng, hay công nhân sản xuất? Trình độ học vấn chính thức trung bình của người dùng là gì? Người dùng có khả năng tự học từ tài liệu viết không, hay họ đã bày tỏ mong muốn được đào tạo trong lớp học? Người dùng là người gõ máy tính nhanh hay sợ hãi bàn phím? Phạm vi tuổi của cộng đồng người dùng là từ bao nhiêu đến bao nhiêu?

Người dùng chủ yếu sẽ thuộc về một giới tính nào?

  • 2. Phác thảo các bước tiếp cận ban đầu hoặc wireframes. o 3. Prototype giao diện người dùng. o 4. Thực hiện các bài kiểm thử người dùng và thu thập phản hồi.
  • 5. Lặp lại từ các bước trước, dựa trên feedback và kết quả kiểm thử để cải tiến thiết kế.
  • Phân tích giao diện: 1. những người (người dùng cuối) sẽ tương tác với hệ thống thông

qua giao diện; 2. những công việc mà người dùng cuối cần thực hiện để làm việc của họ,

3. nội dung được trình bày như một phần của giao diện 4. môi trường mà những công việc này sẽ được tiến hành.:

 Tại sao trong thiết kế giao diện, chúng ta phải phân tích người dùng? Nếu không phân tích thì điều gì xảy ra?

Phân tích người dùng là một phần quan trọng của quy trình thiết kế giao diện người dùng vì nó giúp đảm bảo rằng giao diện được tối ưu hóa để đáp ứng nhu cầu, mong muốn và khả năng của người dùng.

- Lý do phải phân tích:

+ Hiểu rõ đối tượng sử dụng: Phân tích người dùng giúp thiết kế giao diện dựa trên sự hiểu biết về người sử dụng cuối cùng của sản phẩm hoặc ứng dụng. Điều này giúp tăng khả năng hiểu được nhu cầu, mong muốn và môi trường sử dụng của họ. + Tối ưu hóa trải nghiệm người dùng: Bằng cách phân tích người dùng, bạn có thể tạo ra một giao diện dễ sử dụng, thân thiện và phản ánh đúng những yêu cầu của người dùng. Điều này tạo ra một trải nghiệm người dùng tốt hơn, từ đó tăng cơ hội sử dụng sản phẩm hoặc ứng dụng.

+ Xác định nhu cầu và mong muốn của người dùng: Phân tích người dùng giúp xác định những gì người dùng thực sự cần và muốn từ giao diện. Điều này giúp tạo ra các tính năng và chức năng có ý nghĩa và hữu ích cho người dùng.

+ Giảm rủi ro và chi phí: Bằng cách hiểu rõ người dùng, bạn có thể tránh được những sai sót trong thiết kế và phát triển, giảm thiểu rủi ro và chi phí phát sinh do việc phải sửa đổi hoặc cải thiện giao diện sau này.

+ Tăng khả năng chấp nhận và sử dụng: Khi giao diện được thiết kế dựa trên nhu cầu và mong muốn của người dùng, khả năng chấp nhận và sử dụng của họ sẽ tăng lên. Điều này làm tăng giá trị của sản phẩm hoặc ứng dụng trong mắt người dùng.

- Nếu không phân tích thì sẽ xảy ra:

+ Không đáp ứng nhu cầu của người dùng: Giao diện có thể khó sử dụng, không trực quan hoặc không phù hợp với mục tiêu của người dùng.

+ Gây khó khăn cho người dùng: Người dùng có thể gặp khó khăn trong việc tìm kiếm thông tin, hoàn thành nhiệm vụ hoặc sử dụng phần mềm.

Hãy cho ví dụ một thiết kế giao diện phù hợp với người dùng.

Một ứng dụng đọc sách điện tử có chế độ ban đêm và tự động điều chỉnh độ sáng màn hình dựa trên môi trường xung quanh, rất phù hợp với người dùng thường xuyên đọc sách vào buổi tối.

 Tại sao trong thiết kế giao diện, chúng ta phải phân tích tác vụ? Nếu không phân tích thì điều gì xảy ra?

Phân tích tác vụ (Task Analysis) trong thiết kế giao diện là quan trọng vì nó giúp hiểu rõ các công việc mà người dùng sẽ thực hiện trên giao diện và cách họ sẽ thực hiện chúng - Lý do phải phân tích:

+ Hiểu rõ quy trình làm việc của người dùng: Phân tích tác vụ giúp xác định các bước và quy trình mà người dùng sẽ thực hiện khi sử dụng giao diện. Điều này giúp thiết kế giao diện sao cho phản ánh đúng quy trình làm việc của người dùng. + Xác định tính năng và chức năng cần thiết: Bằng cách hiểu rõ các tác vụ mà người dùng sẽ thực hiện, bạn có thể xác định những tính năng và chức năng cần thiết để hỗ trợ và tối ưu hóa quy trình làm việc của họ trên giao diện.

+ Tối ưu hóa luồng làm việc: Phân tích tác vụ giúp bạn xác định và tối ưu hóa luồng làm việc của người dùng trên giao diện. Điều này giúp giảm thiểu số lượng bước cần thực hiện và tăng tính hiệu quả của quy trình làm việc.

+ Đảm bảo dễ sử dụng và hiệu quả: Bằng cách hiểu rõ các tác vụ và quy trình làm việc của người dùng, bạn có thể thiết kế giao diện sao cho dễ sử dụng và hiệu quả nhất. Điều này giúp tăng trải nghiệm người dùng và giảm bớt khả năng gặp phải lỗi và trục trặc trong quá trình sử dụng.

- Nếu không phân tích thì sẽ xảy ra:

+ Giao diện có thể không phản ánh đúng quy trình làm việc của người dùng, dẫn đến sự không hài lòng và khó chịu khi sử dụng.

+ Có thể thiết kế các tính năng và chức năng không cần thiết hoặc không hữu ích cho người dùng, làm phức tạp hóa quy trình làm việc.

+ Giao diện có thể không tối ưu hóa được luồng làm việc của người dùng, dẫn đến việc tăng thời gian và công sức cần thiết để hoàn thành tác vụ.

Hãy cho ví dụ một thiết kế giao diện phù hợp với tác vụ.

Một ứng dụng thanh toán trực tuyến cho phép thực hiện giao dịch chỉ với một vài thao tác đơn giản, nhấn mạnh tính năng quét mã QR để chuyển tiền.

 Tại sao trong thiết kế giao diện, chúng ta phải phân tích môi trường làm việc? Nếu không phân tích thì điều gì xảy ra?

Phân tích môi trường làm việc (Environment Analysis) trong thiết kế giao diện là quan trọng vì nó giúp đảm bảo rằng giao diện được thiết kế để phản ánh và phù hợp với môi trường sử dụng của người dùng.

- Lý do phải phân tích:

+ Hiểu rõ ngữ cảnh sử dụng: Phân tích môi trường làm việc giúp hiểu rõ ngữ cảnh sử dụng của người dùng, bao gồm các điều kiện vật lý và điều kiện công việc mà họ sẽ sử dụng giao diện trong đó. Điều này giúp đảm bảo rằng giao diện được thiết kế phù hợp với môi trường sử dụng cụ thể đó.

+ Tối ưu hóa trải nghiệm người dùng: Bằng cách hiểu rõ môi trường làm việc của người dùng, bạn có thể tối ưu hóa giao diện để đảm bảo rằng nó hoạt động tốt và cung cấp trải nghiệm người dùng tốt nhất trong mọi điều kiện.

+ Xác định yêu cầu kỹ thuật: Phân tích môi trường làm việc giúp xác định các yêu cầu kỹ thuật cụ thể cho giao diện, bao gồm yêu cầu về kích thước màn hình, độ phân giải, môi trường ánh sáng và âm thanh, và yêu cầu về khả năng tương thích với các thiết bị và hệ điều hành khác nhau.

+ Tăng khả năng sử dụng và chấp nhận: Bằng cách thiết kế giao diện sao cho phù hợp với môi trường làm việc của người dùng, bạn tăng cơ hội để họ chấp nhận và sử dụng giao diện một cách dễ dàng và thoải mái hơn.

- Nếu không phân tích thì sẽ xảy ra:

+ Giao diện có thể không phản ánh đúng môi trường sử dụng của người dùng, dẫn đến sự không hài lòng và khó chịu khi sử dụng.

+ Có thể thiết kế giao diện không phù hợp với các yêu cầu kỹ thuật của môi trường làm việc, làm giảm hiệu suất hoặc gây ra các vấn đề kỹ thuật khác.

+ Người dùng có thể gặp khó khăn trong việc sử dụng giao diện do không phù hợp với điều kiện môi trường sử dụng của họ.

Hãy cho ví dụ một thiết kế giao diện phù hợp với môi trường làm việc.

Giao diện của một phần mềm CAD được thiết kế để sử dụng trên các máy trạm mạnh mẽ với nhiều màn hình cỡ lớn, tối ưu hóa không gian làm việc và hiển thị thông tin cần thiết một cách rõ ràng.

 Hãy kể ra 10 kinh nghiệm thiết kế tiện dụng của Nielsen áp dụng cho thiết kế giao diện

H1: Visibility of system status(cho thấy trạng thái của hệ thống)

H2: Match between system & real world (phù hợp với thế giới thực)

H3: User control & freedom (Người dùng – kiểm soát và tự do)

H4: Consistency & standards (Toàn vẹn và tiêu chuẩn)

H5: Error prevention (ngăn ngừa lỗi)

H6: Recognition rather than recall (Nhận thức hơn là nhớ)

H7: Flexibility and efficiency of use (mềm dẽo và hiệu quả)

H8: Aesthetic & minimalist design (thiết kế mỹ thuật và tối thiểu)

H9: Help users recognize, diagnose, & recover from errors (giúp nhận thức, phân tích và phục hồi lỗi)

H10: Help and documentation (trợ giúp và tài liệu)

Hãy cho ví dụ một thiết kế giao diện thỏa kinh nghiệm thứ 6 của Nielsen

Một ứng dụng quản lý email hiển thị icon nhận biết ngay lập tức như "đã gửi", "chưa đọc", và "lưu nháp"; giúp người dùng nhận dạng nhanh chóng trạng thái của email mà không cần phải nhớ

Hãy cho ví dụ một thiết kế giao diện thỏa kinh nghiệm thứ 1 của Nielsen

Một trang web thương mại điện tử cung cấp thanh trạng thái đơn hàng, nơi người dùng có thể theo dõi quá trình xử lý đơn hàng của mình từ lúc đặt hàng, đóng gói, vận chuyểnđến khi giao hàng

3. Kiểm thử phần mềm

  • Mục tiêu của kiểm thử phần mềm là gì?
    • Xác định lỗi, lỗ hổng: Xác định lỗi trong phần mềm càng sớm càng tốt, trước khi sản phẩm được tung ra thị trường. Việc phát hiện lỗi sớm giúp tiết kiệm chi phí sửa chữa, đồng thời giảm thiểu rủi ro cho người dùng.
    • Tìm ra yêu cầu còn thiếu so với yêu cầu thực tế: đảm bảo rằng phần mềm đáp ứng tất cả các yêu cầu đã được đề ra, bao gồm yêu cầu chức năng, yêu cầu phi chức năng và yêu cầu kinh doanh.
    • Đánh giá chất lượng: Kiểm thử cung cấp thông tin về chất lượng của phần mềm, giúp các bên liên quan đưa ra quyết định sáng suốt về việc phát triển, triển khai và sử dụng sản phẩm.
  • Ai là người thực hiện việc kiểm thử phần mềm
    • Kỹ sư kiểm thử phần mềm (Tester): Là người trực tiếp thực hiện các công việc kiểm thử, bao gồm thiết kế, thực thi và báo cáo kết quả kiểm thử.
    • Lập trình viên: Tham gia vào một số hoạt động kiểm thử, đặc biệt là kiểm thử đơn vị (unit testing).
    • Chuyên gia kiểm thử: Là người có trình độ chuyên môn cao về kiểm thử phần mềm, thường đóng vai trò quản lý hoặc tư vấn cho các hoạt động kiểm thử. Có thể tham gia vào việc thiết kế chiến lược kiểm thử, đánh giá quy trình kiểm thử và đào tạo tester.
    • Người dùng: Đóng góp vào việc kiểm thử phần mềm thông qua việc phản hồi và báo cáo lỗi.
  • Hãy nói về mối quan hệ giữa việc kiểm thử phần mềm và chi phí

Hiệu quả về chi phí: Đây là một trong những lợi thế quan trọng của kiểm thử phần mềm. Kiểm tra bất kỳ dự án CNTT nào đúng thời hạn sẽ giúp bạn tiết kiệm tiền của mình trong thời gian dài. Trong trường hợp nếu các lỗi được phát hiện ở giai đoạn kiểm thử phần mềm trước đó thì chi phí sửa chữa sẽ ít hơn.

+ Phát hiện lỗi sớm: Việc phát hiện lỗi càng sớm càng tốt sẽ giúp tiết kiệm chi phí sửa chữa, vì việc sửa lỗi ở giai đoạn sau của dự án thường tốn kém hơn nhiều.

+ Ngăn ngừa lỗi: Kiểm thử giúp ngăn ngừa lỗi xảy ra trong tương lai, từ đó giảm thiểu chi phí sửa lỗi và bảo trì.

+ Cải thiện chất lượng sản phẩm: Sản phẩm có chất lượng cao sẽ ít gặp sự cố hơn, dẫn đến ít yêu cầu hỗ trợ khách hàng hơn và do đó tiết kiệm chi phí.

+ Tăng cường sự hài lòng của khách hàng: Khách hàng sẽ hài lòng hơn với sản phẩm chất lượng cao, ít lỗi, từ đó giúp doanh nghiệp tiết kiệm chi phí marketing và bán

hàng.

 Trình bày các hoạt động cần thực hiện trong quá trình kiểm thử phần mềm

1. Đánh giá kế hoạch và trạng thái phát triển:

  • Ở bước này, tester sẽ đánh giá kế hoạch phát triển phần mềm để xác định phạm vi kiểm thử, rủi ro tiềm ẩn và các yêu cầu cần thiết cho hoạt động kiểm thử.
  • Tester cũng sẽ đánh giá trạng thái phát triển hiện tại của phần mềm để xác định các phần nàođã sẵn sàng cho việc kiểm thử.

2. Phát triển kế hoạch và trường hợp kiểm thử:

  • Trong bước này, tester sẽ xây dựng kế hoạch kiểm thử chi tiết, xác định các mục tiêu kiểm thử, phạm vi kiểm thử, phương pháp kiểm thử và lịch trình thực hiện.
  • Tester cũng sẽ phát triển các trường hợp kiểm thử cụ thể cho từng yêu cầu chức năng và phi chức năng của phần mềm.

3. Tạo trường hợp kiểm thử:

  • Ở bước này, tester sẽ tạo ra các trường hợp kiểm thử dưới dạng văn bản hoặc sử dụng các công cụ hỗ trợ kiểm thử tự động.
  • Các trường hợp kiểm thử cần được viết rõ ràng, súc tích và dễ hiểu, đồng thời phải đảm bảo bao phủ đầy đủ các yêu cầu kiểm thử.

4. Cài đặt môi trường kiểm thử:

  • Trong bước này, tester sẽ thiết lập môi trường kiểm thử, bao gồm cài đặt phần mềm, phần cứng và dữ liệu cần thiết cho việc thực hiện các bài kiểm tra.
  • Môi trường kiểm thử cần phải mô phỏng môi trường thực tế mà phần mềm sẽ được sử dụng để đảm bảo tính chính xác của kết quả kiểm thử.

5. Thực hiện bài kiểm tra:

  • Ở bước này, tester sẽ thực hiện các bài kiểm tra theo kế hoạch đã được xây dựng.
  • Tester sẽ ghi lại kết quả kiểm thử, bao gồm cả các lỗi được phát hiện và các bước để tái tạo lỗi.

6. Báo cáo kết quả kiểm thử:

  • Trong bước này, tester sẽ tổng hợp kết quả kiểm thử và báo cáo cho các bên liên quan, bao gồm nhà phát triển, quản lý dự án và khách hàng.
  • Báo cáo cần bao gồm thông tin về số lượng lỗi được phát hiện, mức độ nghiêm trọng của lỗi và các đề xuất sửa lỗi.

 Sự khác biệt giữa Kiểm thử hợp trắng và kiểm thử hộp đen

White Box Testing Black Box Testing

Cũng được gọi là kiểm thử dựa trên mã Tập trung vào chức năng của phần mềm nguồn. từ góc nhìn của người dùng bên ngoài.

Tập trung vào kiểm tra các chi tiết bên trong Không yêu cầu kiểm thử viên biết về cấu của mã nguồn. trúc hoặc mã nguồn của phần mềm.

Kiểm thử viên có kiến thức về cấu trúc, logic, Các kỹ thuật như kiểm thử các biên, kiểm và luồng đi của mã nguồn. thử tải, kiểm thử phi chức năng được sử Các kỹ thuật như kiểm thử dòng mã, kiểm dụng.

thử nhánh, kiểm thử điều kiện được sử dụng. Mục tiêu chính là đảm bảo rằng phần Mục tiêu chính là tìm ra lỗi trong mã nguồn, mềm hoạt động đúng với các yêu cầu và xác định các nhánh điều kiện không được kỳ vọng của người dùng mà không cần kiểm tra hoặc các lỗ hổng logic. biết chi tiết cài đặt bên trong.

Tóm lại, trong khi kiểm thử hợp trắng tập trung vào việc kiểm tra các chi tiết bên trong của mã nguồn, kiểm thử hộp đen tập trung vào chức năng và hành vi của phần mềm từ góc nhìn của người dùng. Cả hai phương pháp đều cần thiết và bổ sung cho nhau để đảm bảo chất lượng phần mềm.

 Sự khác biệt giữa kiểm thử tích hợp và kiểm thử hệ thống

Kiểm thử tích hợp

Kiểm thử hệ thống

Giai đoạn kiểm thử này tập trung vào việc kiểm tra các thành phần (module, class, chức năng) của phần mềm khi chúng được kết hợp lại với nhau để hình

Giai đoạn kiểm thử này tập trung vào việc kiểm tra toàn bộ hệ thống phần mềm như một đơn vị duy nhất, bao gồm tất cả các thành phần đã được tích hợp.

thành một hệ thống hoàn chỉnh.

Mục tiêu là xác minh tính tương tác giữa các thành phần và đảm bảo rằng chúng hoạt động một cách hợp lý khi được tích hợp.

Các kỹ thuật kiểm thử thường bao gồm kiểm thử dòng, kiểm thử nhánh, kiểm thử giao diện, và kiểm thử các luồng điều kiện khác nhau giữa các thành phần.

Mục tiêu là xác minh rằng hệ thống hoạt động đúng đắn và đáp ứng được các yêu cầu chức năng và phi chức năng đã được xác định trước.

Các kỹ thuật kiểm thử có thể bao gồm kiểm thử chức năng, kiểm thử hiệu suất, kiểm thử bảo mật, và các dạng kiểm thử phi chức năng khác như kiểm thử tải và kiểm thử bảo mật.

Tóm lại, kiểm thử tích hợp tập trung vào kiểm tra tính tương tác giữa các thành phần

riêng lẻ của hệ thống, trong khi kiểm thử hệ thống tập trung vào kiểm tra toàn bộ hệ thống như một đơn vị hoạt động và đảm bảo rằng nó đáp ứng được các yêu cầu chức năng và phi chức năng.

4. Quản lý dự án phần mềm

 Mục tiêu của quản lý rủi ro trong dự án phần mềm

Mục tiêu của quản lý rủi ro trong dự án phần mềm là nhận biết, đánh giá và quản lý các rủi ro có thể ảnh hưởng đến dự án. Điều này bao gồm nhận dạng các rủi ro liên quan đến công nghệ, con người, yêu cầu và các khía cạnh kinh doanh khác, sau đó đề xuất và triển khai các biện pháp để giảm thiểu hoặc tránh những ảnh hưởng tiêu cực của rủi ro đó.

Nhận biết rủi ro: Xác định và ghi nhận các rủi ro tiềm ẩn và hiện hữu có thể ảnh hưởng đến dự án phần mềm. Điều này có thể bao gồm nhận diện các rủi ro liên quan đến công nghệ, con người, yêu cầu và các khía cạnh kinh doanh khác của dự án.

Đánh giá rủi ro: Phân tích xác suất xảy ra và hậu quả của từng rủi ro để hiểu rõ mức độ ảnh hưởng của chúng đối với dự án. Điều này giúp ưu tiên và tập trung vào các rủi ro quan trọng nhất.

Quản lý rủi ro: Phát triển và triển khai các biện pháp phòng ngừa và ứng phó để giảm thiểu hoặc loại bỏ các rủi ro tiềm ẩn và giảm thiểu ảnh hưởng của các rủi ro không thể tránh được. Điều này bao gồm cả việc phát triển kế hoạch rủi ro chi tiết và thiết lập các biện pháp dự phòng.

 Thế nào là một dự án được xem là thành công

Một dự án được xem là thành công khi nó được hoàn thành đúng tiến độ, đúng ngân sách và đáp ứng được các yêu cầu và mục tiêu ban đầu. Ngoài ra, dự án cũng cần phải đảm bảo chất lượng sản phẩm, sự hài lòng của khách hàng và cơ sở hạ tầng tổ chức phù hợp để hỗ trợ và duy trì sản phẩm sau khi triển khai.

  • Hoàn thành đúng tiến độ: Dự án được hoàn thành theo kế hoạch, không gặp trễ lịch trình quan trọng và không làm ảnh hưởng đến các dự án khác.
  • Hoàn thành đúng ngân sách: Dự án được thực hiện trong ngân sách được phê duyệt, không có sự vượt quá ngân sách đáng kể và không gây ảnh hưởng tiêu cực đến tài chính của tổ chức.
  • Đạt được các yêu cầu và mục tiêu: Sản phẩm hoặc dịch vụ cuối cùng đáp ứng được các yêu cầu và mục tiêu đã định rõ, đáp ứng được nhu cầu của khách hàng và người sử dụng.
  • Chất lượng cao: Sản phẩm được sản xuất với chất lượng cao, không có lỗi quan trọng và đáp ứng được các tiêu chuẩn và yêu cầu chất lượng.
  • Sự hài lòng của khách hàng: Khách hàng hài lòng với sản phẩm hoặc dịch vụ được cung cấp và thấy rằng nó đáp ứng được nhu cầu và mong đợi của họ.
  • Các hoạt động nào có trong quản lý dự án phần mềm, nêu mục tiêu của hoạt động đó.
    • Rủi ro nhận biết: Xác định các rủi ro có thể ảnh hưởng đến dự án.
    • Phân tích rủi ro: Đánh giá xác suất và hậu quả của mỗi rủi ro.
    • Kế hoạch rủi ro: Phát triển chiến lược để quản lý hoặc giảm thiểu các rủi ro.
    • Theo dõi rủi ro: Theo dõi và đánh giá các rủi ro trong suốt dự án.  Hãy cho hai rủi ro liên quan đến công nghệ (Technology) (GPT)

Hiệu suất cơ sở dữ liệu không đạt yêu cầu: Trong quá trình triển khai, có thể xảy ra tình huống mà cơ sở dữ liệu không thể xử lý được số lượng giao dịch mỗi giây (TPS - Transactions Per Second) như đã dự kiến. Điều này có thể gây ra sự trễ hạn trong việc xử lý dữ liệu, làm giảm hiệu suất hoạt động của hệ thống và ảnh hưởng đến trải nghiệm người dùng.

Sự không hiệu quả của các công cụ công nghệ phần mềm: Có thể xảy ra tình trạng khi các công cụ công nghệ phần mềm (ví dụ: CASE tools) không hoạt động như mong đợi hoặc không tương thích với nhau, dẫn đến sự không hiệu quả trong quá trình phát triển phần mềm. Điều này có thể làm chậm tiến độ dự án và tăng chi phí do cần phải thay đổi hoặc sửa chữa các công cụ hoặc tìm kiếm các giải pháp thay thế.

  • Hãy cho hai rủi ro liên quan đến con người (People) (GPT)

Hãy cho Khó khăn trong tuyển dụng nhân viên có kỹ năng cần thiết: Trong một số trường hợp, dự án có thể gặp khó khăn khi tìm kiếm và tuyển dụng nhân viên có đủ kỹ năng và kinh nghiệm cần thiết để tham gia vào dự án. Điều này có thể gây ra sự trễ hạn trong việc hoàn thành các nhiệm vụ, hoặc thậm chí làm ảnh hưởng đến chất lượng của sản phẩm cuối cùng do sự thiếu hụt về nguồn lực chất lượng.

Sự vắng mặt của nhân viên chủ chốt: Nếu nhân viên chủ chốt hoặc nhóm quản lý khóa không có mặt hoặc không có sẵn vào các thời điểm quan trọng trong dự án do lý do sức khỏe, nghỉ thai sản, hoặc các tình huống khẩn cấp khác, có thể dẫn đến sự trễ hạn trong quá trình ra quyết định hoặc thực hiện các nhiệm vụ quan trọng. Điều này có thể ảnh hưởng đến tiến độ và hiệu suất của dự án.

  • Hai rủi ro liên quan đến yêu cầu (Requirements) (GPT)

Thay đổi yêu cầu đột ngột và không kiểm soát được: Trong quá trình phát triển dự án, có thể xuất hiện các thay đổi đột ngột và không kiểm soát được từ phía khách hàng hoặc các bên liên quan khác về yêu cầu sản phẩm. Điều này có thể làm thay đổi phạm vi dự án, tăng thêm công việc và chi phí, và gây ra sự không chắc chắn và căng thẳng cho đội ngũ phát triển.

Sự hiểu lầm về yêu cầu giữa các bên liên quan: Có thể xảy ra sự hiểu lầm hoặc không thống nhất giữa các bên liên quan về yêu cầu của sản phẩm phần mềm. Điều này có thể dẫn đến việc triển khai sản phẩm không đúng với mong đợi của khách hàng hoặc gây ra sự bất mãn và tranh cãi giữa các bên liên quan.

  • Tại sao phải có hoạt động phân tích rủi ro (Risk analysis)

Hoạt động phân tích rủi ro cần thiết để đánh giá xác suất và hậu quả của mỗi rủi ro. Điều này giúp dự án định hình các biện pháp phòng ngừa và quản lý rủi ro một cách hiệu quả, từ đó giảm thiểu các rủi ro có thể ảnh hưởng đến dự án.

Đánh giá xác suất và hậu quả: Phân tích rủi ro giúp đánh giá xác suất xảy ra và mức độ nghiêm trọng của các rủi ro tiềm ẩn. Bằng cách này, nhóm dự án có thể hiểu được mức độ nguy cơ của từng rủi ro và ưu tiên những rủi ro quan trọng nhất cần được quản lý.

  • Hãy cho biết tầm quan trọng của hoạt động nhóm trong các dự án công nghệ phần mềm

Hoạt động nhóm là tương tác giữa các thành viên nhóm để cùng nhau hoàn thành các nhiệm vụ dự án. Trong các dự án công nghệ phần mềm, hoạt động nhóm rất quan trọng vì nó tạo ra một môi trường làm việc hợp tác và sáng tạo, giúp giải quyết các vấn đề kỹ thuật phức tạp và thúc đẩy sự tiến triển của dự án.

Phân chia và phối hợp công việc: cho phép phân chia công việc một cách hiệu quả và phối hợp giữa các thành viên để đảm bảo rằng mọi người đều biết rõ trách nhiệm của mình và làm việc cùng nhau để đạt được mục tiêu dự án.

Chia sẻ kiến thức và kinh nghiệm: tạo điều kiện cho việc chia sẻ thông tin, học hỏi từ nhau và phát triển kỹ năng cá nhân, tạo nên một môi trường làm việc tích cực và sáng tạo.

Tăng cường sức mạnh tập thể: Nhóm làm việc có thể tận dụng sức mạnh của tập thể bằng cách kết hợp các kỹ năng và năng lực khác nhau của các thành viên. Khi làm việc cùng nhau, nhóm có thể đạt được những kết quả mà một cá nhân không thể làm được.

Giảm thiểu rủi ro: Bằng cách chia sẻ trách nhiệm và kinh nghiệm, nhóm có thể giảm thiểu rủi ro và tăng khả năng thành công của dự án. Các thành viên có thể hỗ trợ lẫn nhau trong việc giải quyết các vấn đề và đối mặt với các thách thức.

Tạo sự đồng thuận và cam kết: Khi mọi người làm việc cùng nhau và hỗ trợ lẫn nhau, họ có xu hướng cảm thấy tự hào về công việc của mình và cam kết hơn với mục tiêu và giá trị của dự án.

5. Quản lý chất lượng phần mềm

  • Nêu mục tiêu của quản lý chất lượng phần mềm
    • Ở cấp độ tổ chức, quản lý chất lượng liên quan đến thiết lập một khuôn khổ các quy trình tổ chức và tiêu chuẩn sẽ dẫn đến phần mềm chất lượng cao.
    • Ở cấp độ dự án, quản lý chất lượng liên quan đến việc áp dụng các các quy trình chất lượng cụ thể và kiểm tra xem các quy trình này đã được hoạch định chưa các quy trình đã được tuân theo.
    • Ở cấp độ dự án, quản lý chất lượng cũng liên quan đến xây dựng kế hoạch chất lượng cho dự án. Kế hoạch chất lượng phải được thiết lập đưa ra các mục tiêu chất lượng cho dự án và xác định những quy trình nào và tiêu chuẩn sẽ được sử dụng.
  • Hãy liệt kê 3 thuộc tính để đánh giá chất lượng phần mềm?
    • Tính chính xác (Correctness): Phần mềm phải đáp ứng đúng và đầy đủ các yêu cầu đã được đề ra, bao gồm cả yêu cầu chức năng và yêu cầu phi chức năng. Điều này có nghĩa là phần mềm phải thực hiện đúng các chức năng mong muốn, hoạt động chính xác theo thông số kỹ thuật và đáp ứng các tiêu chuẩn về hiệu suất, độ tin cậy, bảo mật, v.v.
    • Tính khả dụng (Usability): Phần mềm phải dễ sử dụng, dễ học và dễ hiểu đối với người dùng mục tiêu. Giao diện người dùng phải trực quan, dễ điều hướng và cung cấp phản hồi rõ ràng cho người dùng. Phần mềm cũng cần có tài liệu hướng dẫn sử dụng đầy đủ và dễ hiểu.
    • Tính tin cậy (Reliability): Phần mềm phải hoạt động ổn định và đáng tin cậy trong điều kiện sử dụng bình thường. Phần mềm cần phải hạn chế tối đa lỗi, sự cố và gián đoạn trong quá trình hoạt động. Khả năng phục hồi sau lỗi cũng là một yếu tố quan trọng để đánh giá tính tin cậy của phần mềm.
    • Tính hiệu quả (E昀케ciency): Phần mềm phải sử dụng hiệu quả tài nguyên hệ thống như CPU, bộ nhớ, dung lượng lưu trữ và băng thông mạng.
    • Tính bảo mật (Security): Phần mềm phải bảo vệ dữ liệu và thông tin của người dùng khỏi các truy cập trái phép, sửa đổi hoặc phá hủy.
    • Tính bảo trì (Maintainability): Phần mềm phải dễ dàng sửa đổi, cập nhật và nâng cấp để đáp ứng các yêu cầu mới hoặc sửa lỗi.
    • Tính di động (Portability): Phần mềm phải có thể dễ dàng cài đặt và chạy trên nhiều nền tảng phần cứng và hệ điều hành khác nhau.

Phần 2: Bài tập – một số ví dụ tham khảo

1. Thiết kế một giao diện đáp ứng được đặc tả cho trước và không vi phạm 10 kinh nghiệm thiết kế của Nielsen

Thông tin đăng ký tài khoản người dùng gồm có: Họ tên, ngày tháng năm sinh, giới tính, số điện thoại, địa chỉ email, loại người dùng. Trong đó giới tính có giá trị là “Nam” hoặc “Nữ”, Loại người dùng là “sinh viên” hoặc “giáo viên” hoặc “tự do”. Hãy thiết kế một giao diện đăng ký tài khoản người dùng trên hệ thống thư viện điện tử của IUH dựa vào thông tin đã cho và dựa vào 10 kinh nghiệm thiết kế của Nielsen.

Đặt tả thiết kế

Thành phần

Mô tả thành phần

Ràng buộc

Mô tả cho rõ

Vẽ giao diện

Bài 2: Thông tin của sách gồm: mã sách, ISBN, tựa sách, tác giả, nhà xuất bản, năm xuất bản, phiên bản, số trang, loại sách, ảnh bìa sách, ngày sách về thư viện. Biết rằng: một quyển sách có thể có nhiều hơn một tác giả, loại sách có thể là sách giấy hoặc sách điện tử. Nếu là sách điện tử thì có chỗ để submit sách dưới dạng Pdf. Ảnh bìa sách là một dạng file ảnh. Các trường dữ liệu khác tự chọn sao cho hợp lý nhất.

Thiết kế một giao diện cho phép thủ thư đưa thông tin của một quyễn sách vào hệ thống quản lý sách của một ứng dụng thư viện điện tử của IUH. Giao diện thiết kế sao cho phù hợp với 10 kinh nghiệm thiết kế của Nielsen

  1. Thiết kế các trường hợp test (test case), dữ liệu test (test data) cho một giao diện (kiểm thử hộp đen) theo đặc tả cho trước.

Bài 1: Cho chương trình chuyển số thập lục phân sang số thập phân với giao diện như sau:

    • Tự đưa ra đặc tả cho chương trình trên để có thể thiết kế các trường hợp kiểm thử.
    • Đưa ra kế hoạch kiểm thử và dữ liệu liệu kiểm thử dựa trên đặc tả tự nêu ở trên. Bài 2:

    • Tự đưa ra đặc tả cho chương trình trên để có thể thiết kế các trường hợp kiểm thử.
    • Đưa ra kế hoạch kiểm thử và dữ liệu liệu kiểm thử dựa trên đặc tả tự nêu ở trên.
  1. Thiết kế các trường hợp test (test case), dữ liệu test (test data) cho một thuật toán cho trước (kiểm thử hộp trắng)

Bài 1

Yêu cầu của chương trình

Yêu cầu bài:

(a) Vẽ đồ thị luồng điều khiển (CFG) (số thứ tự node dựa vào số thứ tự dòng) (b) Liệt kê các đường cơ bản (path) có thể có.

    1. Thiết kế các trường hợp test theo path ứng với dữ liệu đầu vào và dữ liệu đầu ra mong đợitheo bảng sau:

STT

Path

INPUT

EX.

RESULT

bt1

bt2

btc 3

1

Bài 2:

Yêu cầu bài:

(a) Dựa vào chương trình trên, hãy tìm hiểu xem chương trình thực hiện công việc gì? (b) Vẽ đồ thị luồng điều khiển (CFG) (số thứ tự node dựa vào số thứ tự dòng) (c) Liệt kê các đường cơ bản (path) có thể có.

    1. Thiết kế các trường hợp test theo path ứng với dữ liệu đầu vào và dữ liệu đầu ra mongđợi.