► Kiểm chứng phần mềm là gì? Mục đích? Cách
thức?
► Tâm lý của kiểm thử
► Verification,Validation, và Testing
► Kiểm chứng/Thẩm định tĩnh và động
► Mô hình phát triển “V”
► Kiểm thử phần mềm (Testing)
► Yêu cầu đối với kiểm thử
► Các nguyên lý kiểm thử PM
► Các loại kiểm chứng phần mềm
Tổng Quan
“Testing is the process of executing a
program with the intent of finding errors.”
Glen Myers
Tổng Quan
Kiểm chứng phần mềm là gì? Mục
đích? Cách thức?
►KCPM là quá trình thực thi một hệ thống
phần mềm để quyết định xem nó có thực
hiện đúng như bản đặc tả và trong môi
trường mong đợi hay không.
25 trang |
Chia sẻ: candy98 | Lượt xem: 554 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Software Testing and Quality Assurance - Lecture 1: Introduction - Đào Nam Anh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1Software Testing and Quality Assurance
Lecture 1: Introduction
Dr. Dao Nam Anh
Faculty of Information Technology
University of Technology and Management
2Resources
► Pressman, Software Engineering, McGraw Hill (chapter 18
& 19)
► Sommerville, Software Engineering, Addison-Wesley
(chapter 22 & 23)
► Software Testing and QA Theory and Practics, Chapter 7,
WILEY Publish
► Foundations Of Software Testing, Istqb Certification,
Dorothy Graham, Erik Van Veenendaal, Isabel Evans, Rex
Black
► Jovanović, Irena, Software Testing Methods and
Techniques
► Lâm Quang Vũ,
3Nội dung
► Kiểm chứng phần mềm là gì? Mục đích? Cách
thức?
► Tâm lý của kiểm thử
► Verification,Validation, và Testing
► Kiểm chứng/Thẩm định tĩnh và động
►Mô hình phát triển “V”
► Kiểm thử phần mềm (Testing)
► Yêu cầu đối với kiểm thử
► Các nguyên lý kiểm thử PM
► Các loại kiểm chứng phần mềm
4Tổng Quan
“Testing is the process of executing a
program with the intent of finding errors.”
Glen Myers
5Tổng Quan
Kiểm chứng phần mềm là gì? Mục
đích? Cách thức?
►KCPM là quá trình thực thi một hệ thống
phần mềm để quyết định xem nó có thực
hiện đúng như bản đặc tả và trong môi
trường mong đợi hay không.
6Tổng Quan
Kiểm chứng phần mềm là gì? Mục
đích? Cách thức?
7Tổng Quan
Kiểm chứng phần mềm là gì? Mục
đích? Cách thức?
8Tổng Quan
Kiểm chứng phần mềm là gì? Mục
đích? Cách thức?
►Mục đích của việc kiểm tra chương trình là để tìm
lỗi. Mục đích của tìm lỗi để lỗi được sửa.
► Không thể kiểm tra trọn vẹn một phần mềm vì có
rất nhiều trường hợp không thể kiểm tra, dữ liệu
đầu vào quá lớn hoặc vấn đề giao diện quá phức
tạp.
► Tìm ra lỗi là thành công. Thiếu hay dư tính năng
cũng là một lỗi. Khi test cần test các trường hợp
không mong đợi.
9Tổng Quan
Kiểm chứng phần mềm là gì? Mục
đích? Cách thức?
►Cần phải test các đặc tính phần mềm, yêu
cầu và mục đích của phần mềm.
►Test bằng phương thức, giả định, tổ chức.
►Người test là lập trình viên, người dùng
hoặc bên thứ ba. Thường thì người lập trình
sẽ không tự test phần mềm của mình.
10
Tổng Quan
Tâm lý của kiểm thử
Cẩn thận:
+ Thường phỏng đoán, không kết luận.
+ Thường thừa nhận “Tôi không biết”.
+ Nhờ người khác kiểm tra công việc.
Tò mò
+ Chuyện gì xảy ra nếu?
+ Nó làm việc ra sao?
+ Tại sao điều đó xảy ra?
Chỉ trích, phê phán
+ Thường phỏng đoán, bác bỏ.
+ Chủ động tìm phản chứng.
11
Tổng Quan
Tâm lý của kiểm thử
Một trong những nguyên nhân chính của thử nghiệm chương
trình kém là một thực tế rằng hầu hết các lập trình viên
bắt đầu với một định nghĩa sai lầm về thuật ngữ này. Họ
có thể nói:
► • "Thử nghiệm là quá trình chứng minh rằng là không có
thấy lỗi."
► hoặc
► • "Mục đích của thử nghiệm là để cho thấy rằng chương
trình thực hiện chức năng dự định của nó một cách chính
xác."
► hoặc
► • "Thử nghiệm là quá trình thiết lập sự tự tin rằng chương
trình làm những gì nó phải làm."
12
Tổng Quan
Tâm lý của kiểm thử
Khi bạn thử nghiệm một chương trình, bạn muốn thêm tạo
thêm giá trị cho nó. Thêm giá trị thông qua thử nghiệm có
nghĩa là nâng cao chất lượng, độ tin cậy của chương trình.
Nâng cao độ tin cậy của chương trình bằng cách tìm kiếm
và loại bỏ các lỗi.
Vì vậy, thử nghiệm một chương trình không phải để thấy rằng
nó hoạt động, thay vào đó, bạn nên bắt đầu với giả định
rằng chương trình có lỗi (một giả định hợp lệ cho chương
trình hầu như bất kỳ) và sau đó kiểm tra chương trình để
tìm thấy nhiều lỗi càng tốt .
Vì vậy, một định nghĩa thích hợp hơn là điều này:
Thử nghiệm là quá trình thực hiện chương trình với mục
đích tìm kiếm các lỗi.
13
Tổng Quan
Verification,Validation, và Testing
14
Tổng Quan
Verification,Validation, và Testing
Kiểm chứng (Verification)
− có đúng đặc tả không, có đúng thiết kế không
− phát hiện lỗi lập trình
Thẩm định (Validation)
− có đáp ứng nhu cầu người dùng không
− có hoạt động hiệu quả không
− phát hiện lỗi phân tích, lỗi thiết kế (lỗi mức cao)
V&V = Verification and Validation
− mục tiêu là phát hiện và sửa lỗi PM, đánh giá tính dùng được của PM
Thứ tự thực hiện: Verification -> Validation
15
Tổng Quan
Kiểm chứng/Thẩm định tĩnh và động
Kiểm chứng/Thẩm định tĩnh
− không thực hiện chương trình
− xét duyệt yêu cầu, thiết kế, mã nguồn
− tiến hành ở mọi công đoạn phát triển
− khó đánh giá tính hiệu quả của sản phẩm
Kiểm chứng/Thẩm định động (kiểm thử - Testing)
− thực hiện chương trình
− cần có mã nguồn
− phát hiện lỗi lập trình
− đánh giá tính hiệu quả phần mềm
− là cách duy nhất để kiểm tra yêu cầu phi chức năng
16
Tổng Quan
Mô hình phát triển “V”
17
Tổng Quan
Mô hình phát triển “V”
18
Tổng Quan
Mô hình phát triển “V”
19
Tổng Quan
Kiểm thử phần mềm (Testing)
Tập các hoạt động với mục đích khám phá
các lỗi và khuyết tật/khiếm khuyết
Mỗi phép kiểm thử (a test) chỉ thành công khi
− một lỗi được phát hiện
− một kết quả chỉ ra sự thất bại của thủ tục
kiểm thử được trả lại
20
Tổng Quan
Kiểm thử phần mềm (Testing)
Kiểm thử tìm khuyết tật
− tìm lỗi lập trình
− tiến hành dựa trên phân tích đặc tả chức năng,
− phân tích mã nguồn
Kiểm thử thống kê
− đánh giá tính dùng được của sản phẩm
− sử dụng dữ liệu thực (dựa trên thống kê)
− số người truy cập
− số giao tác
− cơ sở dữ liệu lớn
21
Tổng Quan
Yêu cầu đối với kiểm thử
Tính lặp lại
− Kiểm thử phải lặp lại được (kiểm tra xem lỗi
đã được sửa hay chưa)
− phải mô tả được dữ liệu/trạng thái
Tính hệ thống
− đảm bảo kiểm tra hết các trường hợp (coverage)
Được lập tài liệu
− kiểm soát tiến trình/kết quả
22
Tổng Quan
Các nguyên lý kiểm thử PM
Các phép kiểm thử phải tương ứng với các
yêu cầu của HT
Mỗi phép kiểm thử nên được lập kế hoạch từ
rất sớm trước khi tiến hành kiểm thử
Qui luật Pareto hay qui luật 80/20 (qui luật
thiểu số quan trọng và phân bố nhân tố)
− khoảng 80% kết quả là do 20% nguyên nhân gây
ra
− “80% of all errors uncovered during testing will
likely be traceable to 20% of all program modules
or classes”
23
Tổng Quan
Các loại kiểm chứng phần mềm
► Function Testing: test từng chức năng và đảm bảo
từng chức năng đó hoạt động đúng.
►Domain Testing: chia để trị dữ liệu.
► Stress Testing: tìm ngưỡng của sản phẩm để
khuyến cáo và đưa ra thông số an toàn.
► Flow Testing: test tuần tự, theo một luồng trong
chương trình được quy định trước.
► Scenario Testing: test theo kịch bản cho trước.
►User Testing: người dùng hoặc đại diện người
dùng sẽ test.
24
Tổng Quan
Các loại kiểm chứng phần mềm
►User Testing: người dùng hoặc đại diện người
dùng sẽ test.
► Regression Testing: test hồi quy, lặp đi lặp lại.
► Claims Testing: test theo yêu cầu của khách hàng.
► Risk-based Testing: xác định rủi ro và tìm nó.
► Random Testing: chạy các test ngẫu nhiên, khác
nhau rất ít và số lượng rất lớn.
► Khác: Stochastic Testing, GUI regression testing,
Multi Variable Testing, Exploratory Testing.
25
Q & A