Test planTrung Hiếu TrầnKiểm chứng phần mềm
Quy trình làm phần mềm
Quy trình xây dựng Test Plan
------------------------------------------------------------------------
Programer C++
Training C/C++, Java
Game Mobile (Android - iOS - Winphone)
Info: https://www.facebook.com/hoclaptrinh.it
------------------------------------------------------------------------
[Seminar] Hướng dẫn viết test caseLe Vu Trung ThanhMột vài ví dụ đơn giản để minh hoạ việc viết test case, đồng thời cung cấp một số điều nên tránh khi làm test.
2014/07/07 Software Testing - Truong Anh Hoang Vu Hung NguyenTopics:
1. Sharing experience on software testings
2. Automation testing for web application
3. Testing techniques: Tips and tricks (for webapp)
4. How to plan testing, how to write effective test cases so that we can find more bugs
5. What is BDD and how to apply it software testing
6. The importance of developer testing (testing by developers)
Contents
Kỹ thuật kiểm thử - tips & tricks
- Hộp đen - tester
- Hộp trắng - developer testing
- Kiểm thử đơn vị - automation, developer testing
Kiểm thử web - webapp
- Demo
- Kinh nghiệm tự động với selenium - tips, automation,
Phát triển theo hành vi - BDD
- Giới thiệu BDD (behaviour driven development)
- Demo behat
Ứng dụng công cụ test tự động kiểm thử websiteDotnet Open GroupKiểm thử là một trong những công đoạn không thể thiếu trong phát triển phần mềm. Mặc dù kiểm thử thủ công vẫn còn được áp dụng rộng rãi, tuy nhiên nó lại có thể tốn nhiều thời gian và công sức, đặc biệt đối với các dự án Agile hiện tại với các tính năng được bổ sung sau mỗi vòng phát triển. Do đó, trang bị cho mình kiến thức về kiểm thử tự động là một điều không thể thiếu đặc biệt là đối với các tester muốn nâng cao khả năng, hoặc developer đang có ý tưởng áp dụng cho dự án của mình.
Một số lợi ích có thể kể đến của kiểm thử tự động là:
- Giúp tiết kiệm tiền bạc và thời gian: nhất là trong giai đoạn bảo trì của các dự án lớn. Mỗi tuần chúng ta phải thực hiện regression test từ 1 đến 2 lần với số lượng test case rất lớn trong 1 đến 2 ngày. ĐIều này gần như không thể thực hiện bằng cách thủ công, trong khi với kiểm thử tự động chúng ta hoàn toàn có thể với nguồn nhân lực vô cùng khiêm tốn.
- Chính xác hơn: Nhờ độ ổn định cao, kiểm thử tự động có thể thực thi các test case với độ chính xác cao hơn.
- Độ bao phủ cao: Như đã nói ở trên, khi sử dụng kiểm thử tự động, chúng ta có thể thực thi số lượng lớn test case trong một thời gian ngắn. Nên độ bao phủ của nó rất cao. Điều này giúp chúng ta tăng độ bao phủ trong giai đoạn regression test .
- Hoàn thành các công việc mà con người không thể làm được: Nếu chúng ta muốn thực thi load test, performance test, thì kiểm thử tự động là cách duy nhất.
Trong meetup tháng 12 này, diễn giả Phạm Tiến Hùng - VNPTDATA sẽ chia sẻ với các bạn về kiểm thử tự động cùng với 2 công cụ kiểm thử tự động là Selenium và Katalon Studio, phù hợp áp dụng cho những team với tester chưa có nhiều kỹ năng về lập trình hoặc đã có kỹ năng.
Thông tin diễn giả: Phạm Tiến Hùng - Teamlead, VNPT DATA.
Nội dung:
1. Giới thiệu về kiểm thử tự động
2. Bắt đầu với kiểm thử tự động
3. Giới thiệu công cụ kiểm thử tự động
Luận văn: Kiểm thử tự động tương tác giao diện người dùng, 9đDịch Vụ Viết Bài Trọn Gói ZALO 0917193864Nhận viết luận văn đại học, thạc sĩ trọn gói, chất lượng, LH ZALO=>0909232620
Tham khảo dịch vụ, bảng giá tại: https://vietbaitotnghiep.com/dich-vu-viet-thue-luan-van
Download luận văn thạc sĩ ngành công nghệ thông tin với đề tài: Phương pháp kiểm thử tự động tương tác giao diện người dùng cho ứng dụng web, cho các bạn làm luận văn tham khảo
Unit Test with test JUNIT CusanluiUnit Test with test JUNIT , JUnit is a simple framework to write repeatable tests. It is an instance of the xUnit architecture for unit testing frameworks.
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế Nguyễn AnhTìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế
[Seminar] Hướng dẫn viết test caseLe Vu Trung ThanhMột vài ví dụ đơn giản để minh hoạ việc viết test case, đồng thời cung cấp một số điều nên tránh khi làm test.
2014/07/07 Software Testing - Truong Anh Hoang Vu Hung NguyenTopics:
1. Sharing experience on software testings
2. Automation testing for web application
3. Testing techniques: Tips and tricks (for webapp)
4. How to plan testing, how to write effective test cases so that we can find more bugs
5. What is BDD and how to apply it software testing
6. The importance of developer testing (testing by developers)
Contents
Kỹ thuật kiểm thử - tips & tricks
- Hộp đen - tester
- Hộp trắng - developer testing
- Kiểm thử đơn vị - automation, developer testing
Kiểm thử web - webapp
- Demo
- Kinh nghiệm tự động với selenium - tips, automation,
Phát triển theo hành vi - BDD
- Giới thiệu BDD (behaviour driven development)
- Demo behat
Ứng dụng công cụ test tự động kiểm thử websiteDotnet Open GroupKiểm thử là một trong những công đoạn không thể thiếu trong phát triển phần mềm. Mặc dù kiểm thử thủ công vẫn còn được áp dụng rộng rãi, tuy nhiên nó lại có thể tốn nhiều thời gian và công sức, đặc biệt đối với các dự án Agile hiện tại với các tính năng được bổ sung sau mỗi vòng phát triển. Do đó, trang bị cho mình kiến thức về kiểm thử tự động là một điều không thể thiếu đặc biệt là đối với các tester muốn nâng cao khả năng, hoặc developer đang có ý tưởng áp dụng cho dự án của mình.
Một số lợi ích có thể kể đến của kiểm thử tự động là:
- Giúp tiết kiệm tiền bạc và thời gian: nhất là trong giai đoạn bảo trì của các dự án lớn. Mỗi tuần chúng ta phải thực hiện regression test từ 1 đến 2 lần với số lượng test case rất lớn trong 1 đến 2 ngày. ĐIều này gần như không thể thực hiện bằng cách thủ công, trong khi với kiểm thử tự động chúng ta hoàn toàn có thể với nguồn nhân lực vô cùng khiêm tốn.
- Chính xác hơn: Nhờ độ ổn định cao, kiểm thử tự động có thể thực thi các test case với độ chính xác cao hơn.
- Độ bao phủ cao: Như đã nói ở trên, khi sử dụng kiểm thử tự động, chúng ta có thể thực thi số lượng lớn test case trong một thời gian ngắn. Nên độ bao phủ của nó rất cao. Điều này giúp chúng ta tăng độ bao phủ trong giai đoạn regression test .
- Hoàn thành các công việc mà con người không thể làm được: Nếu chúng ta muốn thực thi load test, performance test, thì kiểm thử tự động là cách duy nhất.
Trong meetup tháng 12 này, diễn giả Phạm Tiến Hùng - VNPTDATA sẽ chia sẻ với các bạn về kiểm thử tự động cùng với 2 công cụ kiểm thử tự động là Selenium và Katalon Studio, phù hợp áp dụng cho những team với tester chưa có nhiều kỹ năng về lập trình hoặc đã có kỹ năng.
Thông tin diễn giả: Phạm Tiến Hùng - Teamlead, VNPT DATA.
Nội dung:
1. Giới thiệu về kiểm thử tự động
2. Bắt đầu với kiểm thử tự động
3. Giới thiệu công cụ kiểm thử tự động
Luận văn: Kiểm thử tự động tương tác giao diện người dùng, 9đDịch Vụ Viết Bài Trọn Gói ZALO 0917193864Nhận viết luận văn đại học, thạc sĩ trọn gói, chất lượng, LH ZALO=>0909232620
Tham khảo dịch vụ, bảng giá tại: https://vietbaitotnghiep.com/dich-vu-viet-thue-luan-van
Download luận văn thạc sĩ ngành công nghệ thông tin với đề tài: Phương pháp kiểm thử tự động tương tác giao diện người dùng cho ứng dụng web, cho các bạn làm luận văn tham khảo
Unit Test with test JUNIT CusanluiUnit Test with test JUNIT , JUnit is a simple framework to write repeatable tests. It is an instance of the xUnit architecture for unit testing frameworks.
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế Nguyễn AnhTìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế
Redmine - a project management systemCaesar Chiwhy is redmine? when you are developing should be to controller yourself and team.
Redmine is a great open source project management system, that can make your working smoothly. Quick introduce what is redmine
RedmineRobert MacLeanRedmine is an open source project management tool that can be used to track bugs, features, and infrastructure issues. It includes calendars and gantt charts to help visualize projects and deadlines. The document provides an overview of how to use Redmine for bugs, work items, and infrastructure issues with examples. It also covers setting statuses, priorities, and assigning issues in Redmine.
[Báo cáo] Bài tập lớn Kỹ thuật phần mềm ứng dụng: Thiết kế hệ thống quản lý p...The Nguyen ManhBáo cáo Bài tập lớn môn Kỹ thuật phần mềm ứng dụng
Đề tài: Thiết kế hệ thống quản lý project sinh viên
Giáo án dành cho sinh viên ngành công nghệ thông tinChuNguyn463476Bài giảng về mảng một chiều dung ngôn ngữ lập trình C++ rất hay
dùng trong các nhà trường
Bài giảng lập và quản lý dự án đầu tưShare Tài Liệu Đại HọcTài liệu môn học lập và quản lý dự án đầu tư
Để download đầy đủ toàn bộ tài liệu đại học cùng nhiều tài liệu học tập giá trị khác. Vui lòng truy cập http://bit.ly/tailieudaihoc để nhận full bộ tài liệu nhé
hoccokhi.vn Giáo Trình CNC Cho Máy Phay - Bùi Quý Tuấn, 113 TrangHọc Cơ KhíGiáo Trình CNC Cho Máy Phay - Bùi Quý Tuấn, 113 Trang, Giao Trinh CNC Cho May Phay Bui Quy Tuan 113 Trang. Giáo Trình CNC Cho Máy Phay - Bùi Quý Tuấn, 113 Trang
MICE Trường Anh ngữ IU Cebu Brochure 2025.pdfDu học MICE - Du học tiếng Anhhttps://tienganhtaiphi.com/truong-anh-ngu-iu-cebu/
IU English Academy cam kết mang đến một chương trình học tiếng Anh toàn diện dành cho học viên chuẩn bị du học hoặc làm việc quốc tế. Bên cạnh việc rèn luyện ngôn ngữ, IU đặc biệt chú trọng đến các hoạt động ngoại khóa, bao gồm các lớp thể thao fitness như Yoga, Kickboxing và nhảy Zumba. Những hoạt động này không chỉ nâng cao sức khỏe mà còn giúp phát triển kỹ năng làm việc nhóm và tinh thần thể thao, giúp học viên sẵn sàng cho mọi thử thách trong tương lai.
==== Du học MICE - Du học tiếng Anh ====
🏡 Công ty TNHH tư vấn MICE
📱 Hotline/Zalo/Viber: 0904137471
📧 info@tienganhtaiphi.com
🖱️ http://tienganhtaiphi.com
🖱️ Nhóm học TA online 1 kèm 1: https://www.facebook.com/groups/2157125567720037
📬 39/15 Đường 102, P. Tăng Nhơn Phú A, TP. Thủ Đức (Q9), TP.HCM
1. Ki m th (9)
Nguy n Thanh Bình
Khoa Công ngh Thông tin
Trư ng ð i h c Bách khoa
ð i h c ðà N ng
N i dung
Gi i thi u v ki m th
Ki m th trong ti n trình phát tri n
Ki m th h p ñen
Ki m th h p tr ng
2
1
2. Ki m th là gì ?
IEEE: Ki m th là ti n trình v n hành
h th ng ho c thành ph n dư i
nh ng ñi u ki n xác ñ nh, quan sát
ho c ghi nh n k t qu và ñưa ra ñánh
giá v h th ng ho c thành ph n ñó
Myers: Ki m th là ti n trình th c thi
chương trình v i m c ñích tìm th y l i
(The art of software testing)
3
Ki m th là gì ?
Ki m th ≠ G r i (debug)
Ki m th
• nh m phát hi n l i
G r i
• xác ñ nh b n ch t l i và ñ nh v l i trong
chương trình
• ti n hành s a l i
4
2
3. Các khái ni m
M t sai sót (error) là m t s nh m l n hay m t s
hi u sai trong quá trình phát tri n ph n m m c a
ngư i phát tri n
M t l i (fault, defect) xu t hi n trong ph n m m
như là k t qu c a m t sai sót
M t h ng hóc (failure) là k t qu c a m t l i xu t
hi n làm cho chương trình không ho t ñ ng ñư c
hay ho t ñ ng nhưng cho k t qu không như mong
ñ i
sai sót l i h ng hóc
5
Các khái ni m
D li u th (test data)
d li u vào c n cung c p cho ph n m m
trong khi th c thi
K ch b n ki m th (test scenario)
các bư c th c hi n khi khi ki m th
Phán xét ki m th (test oracle)
ñánh giá k t qu c a ki m th
• t ñ ng: chương trình
• th công: con ngư i
6
3
4. Các khái ni m
Ki m th viên (tester)
ngư i th c hi n ki m th
Ca ki m th (test case)
t p d li u th
ñi u ki n th c thi
k t qu mong ñ i
7
Các khái ni m
8
4
5. Ti n trình ki m th
Ki m th thư ng bao g m các bư c
thi t k các ca ki m th
bư c t o d li u th
• ki m th v i t t c các d li u vào là c n thi t
• không th ki m th “vét c n”
• ch n t p các d li u th ñ i di n t mi n d li u vào
• d a trên các tiêu chu n ch n d li u th
bư c th c thi chương trình trên d li u th
• cung c p d li u th
• th c thi
• ghi nh n k t qu
bư c quan sát k t qu ki m th
• th c hi n trong khi ho c sau khi th c thi
• so sánh k t qu nh n ñư c và k t qu mong ñ i
9
Ti n trình ki m th
10
5
6. Khó khăn c a ki m th
Liên quan ñ n ti n trình phát tri n
g m nhi u giai ño n phát tri n
• cái ra c a m t giai ño n là cái vào c a giai ño n khác
• m t mát thông tin
V m t con ngư i
thi u ñào t o
ít chú tr ng vai trò ki m th
V m t k thu t
không t n t i thu t toán t ng quát có th ch ng minh
s ñúng ñ n hoàn toàn c a b t kỳ m t chương trình
nào
11
T i sao ki m th
H p th c hóa (validation)
ch ra r ng s n ph m ñáp ng ñư c yêu c u ngư i
s d ng
Xác minh (verification)
ch ra r ng s n ph m th a mãn ñ c t yêu c u
Phân bi t h p th c hóa và xác minh
“Verification: Are we building the product right ?”
“Validation: Are we building the right product ?”
12
6
7. Ki m th trong ti n trình
phát tri n
Các k thu t ki m th
k thu t ki m th tĩnh (static testing)
k thu t ki m th ñ ng (dynamic testing)
• ki m th h p ñen (black-box testing)
• k thu t ki m th ch c năng (functional testing)
• ki m th h p tr ng (white-box testing)
• k thu t ki m th c u trúc (structural testing)
Các ho t ñ ng ki m th /chi n lư c ki m th
ki m th ñơn v (unit testing)
ki m th tích h p (integration testing)
ki m th h p th c hóa (validation testing)
ki m th h i quy (regression testing)
13
Ki m th trong ti n trình
phát tri n
Ki m th ñơn v (unit testing)
ki m th m i ñơn v ph n m m (mô-ñun)
s d ng k thu t ki m th h p ñen
d li u th ñươc t o ra d a trên tài li u thi t
k
có th s d ng c ki m th h p tr ng và
ki m th tĩnh
• ph n m m yêu c u ch t lư ng cao
thư ng ñư c th c hi n trên ph n c ng phát
tri n ph n m m
14
7
8. Ki m th trong ti n trình
phát tri n
Ki m th tích h p (integration testing)
sau khi ñã th c hi n ki m th ñơn v
ghép n i các ñơn v /thành ph n ph n m m
ki m th s ghép n i, trao ñ i d li u gi a
các ñơn v /thành ph n
s d ng k thu t ki m th h p ñen
môt s trư ng h p, s d ng k thu t ki m
th h p tr ng
• chi phí cao, khó khăn
d li u th ñư c t o ra d a trên thi t k
t ng th
15
Ki m th trong ti n trình
phát tri n
Ki m th tích h p (2)
c n xây d ng thêm
• nút trám (stub): các thành ph n khác mô
ph ng các thành ph n ph n m m chưa
ñư c tích h p
• trình ñi u khi n (driver): các thành ph n
t o ra các d li u vào cho m t vài các
thành ph n ph n m m trong t p h p
ñang ñư c ki m th
16
8
9. Ki m th trong ti n trình
phát tri n
Ki m th tích h p (3)
17
Ki m th trong ti n trình
phát tri n
Ki m th tích h p (4)
chi n lư c t trên xu ng (top-down)
• ki m th tích h p các thành ph n chính trư c, sau ñó thêm
vào các thành ph n ñư c g i tr c ti p b i các thành ph n v a
ki m th
• cho phép xác ñ nh s m các l i v ki n trúc
• các b d li u th có th ñư c tái s d ng cho các bư c ti p
theo
• tuy nhiên chi n lư c này ñòi h i ph i xây d ng nhi u nút trám
chi n lư c t dư i lên (bottom-up)
• ki m th các thành ph n không g i các thành ph n khác, sau
ñó thêm vào các thành ph n g i các thành ph n v a ki m th
• ít s d ng các nút trám
• nhưng l i xác ñ nh l i tr hơn
18
9
10. Ki m th trong ti n trình
phát tri n
Ki m th h p th c hóa (validation testing)
còn g i là ki m th h th ng (system
testing)
th c hi n sau khi ki m th tích h p k t thúc
ch ng minh ph n m m th c hi n ñúng
mong ñ i c a ngư i s d ng
d a vào yêu c u ngư i s d ng
ch s d ng k thu t ki m th h p ñen
nên th c hi n trong môi trư ng mà ph n
m m s ñư c s d ng
19
Ki m th trong ti n trình
phát tri n
Ki m th h i quy (regression testing)
ph n m m sau khi ñưa vào s d ng, có th
có các ch nh s a
• có th phát sinh l i m i
c n ki m th l i: ki m th h i quy
thư ng tái s d ng các b d li u th ñã s
d ng trong các giai ño n trư c
20
10
11. Ki m th trong mô hình V
ð c t yêu c u Ki m th h p th c hóa
Thi t k ki n trúc Ki m th tích h p
Thi t k chi ti t Ki m th ñơn v
Mã hóa
21
Các k thu t ki m th
k thu t ki m th tĩnh (static testing)
• không th c thi chương trình
k thu t ki m th ñ ng (dynamic
testing)
• ki m th h p ñen (black-box testing)
• k thu t ki m th ch c năng (functional
testing)
• ki m th h p tr ng (white-box testing)
• k thu t ki m th c u trúc (structural testing)
22
11
12. Ki m th tĩnh
Thanh tra mã ngu n (code inspection)
Ch ng minh hình th c
Th c thi hình th c (symbolic execution)
ðánh giá ñ ph c t p
McCabe
Nejmeh
23
Ki m th h p ñen
Inputs causing
anomalous
Input test data I behaviour
e
System
Outputs which reveal
the presence of
Output test results Oe defects
24
12
13. Ki m th h p ñen
Ch c n d a vào ñ c t chương trình
Xây d ng d li u th trư c khi mã hóa/l p
trình
Thư ng phát hi n các l i ñ c t yêu c u,
thi t k
D dàng th c hi n
Chi phí th p
25
Ki m th h p ñen
Ki m th giá tr biên (boundary value
analysis)
Ki m th l p tương ñương (equivalence
class testing)
Ki m th ng u nhiên (random testing)
ð th nhân-qu (cause-efect graph)
Ki m th cú pháp
26
13
14. Ki m th giá tr biên
Cơ s
l i thư ng xu t hi n g n các giá tr biên c a mi n dũ
li u
T p trung phân tích các giá tr biên c a mi n d li u
ñ xây d ng d li u ki m th
Nguyên t c: ki m th các d li u vào g m
giá tr nh nh t
giá tr g n k l n hơn giá tr nh nh t
giá tr bình thư ng
giá tr g n k nh hơn giá tr l n nh t
giá tr l n nh t
27
Ki m th giá tr biên
28
14
15. Ki m th giá tr biên
Nguyên t c ch n d li u th
N u d li u vào thu c m t kho ng, ch n
• 2 giá tr biên
• 4 giá tr = giá tr biên ± sai s nh nh t
N u giá tr vào thu c danh sách các giá tr , ch n
• ph n t th nh t, ph n t th hai, ph n t k cu i và ph n t
cu i
N u d li u vào là ñi u ki n ràng bu c s giá tr , ch n
• s giá tr t i thi u, s giá tr t i ña và m t s các s giá tr
không h p l
T v n d ng kh năng và th c t ñ ch n các giá tr biên
c n ki m th
29
Ki m th giá tr biên
Ví d (1)
Chương trình nh n vào ba s th c, ki m tra ba s
th c có là ñ dài ba c nh m t tam giác. N u là ñ dài
ba c nh c a m t tam giác, thì ki m tra xem ñó là tam
giác thư ng, cân, ñ u cũng như ki m tra ñó là tam
giác nh n, vuông hay tù.
30
15
16. Ki m th giá tr biên
Ví d (2)
D li u th
1, 1, 2 Không là tam giác
0, 0, 0 Ch m t ñi m
4, 0, 3 M t c nh b ng không
1, 2, 3.00001 G n là m t tam giác
0.001, 0.001, 0.001 Tam giác r t nh
99999, 99999, 99999 Tam giác r t l n
3.00001, 3, 3 Tam giác g n ñ u
2.99999, 3, 4 Tam giác g n cân
3, 4, 5.00001 Tam giác giác g n vuông
3, 4, 5, 6 B n giá tr
3 Ch m t giá tr
D li u vào r ng
-3, -3, 5 Giá tr âm
31
Ki m th l p tương ñương
Ý tư ng
phân ho ch mi n
d li u vào thành
các l p các d
li u có quan h
v i nhau
m i l p dùng ñ
ki m th m t
ch c năng, g i là
l p tương ñương
32
16
17. Ki m th l p tương ñương
Ba bư c
ñ i v i m i d li u vào, xác ñ nh các l p
tương ñương t mi n d li u vào
ch n d li u ñ i di n cho m i l p tương
ñương
k t h p các d li u th b i tích ð -các ñ
t i ra b d li u ki m th
33
Ki m th l p tương ñương
Nguyên t c phân ho ch các l p tương ñương
N u d li u vào thu c m t kho ng, xây d ng
• 1 l p các giá tr l n hơn
• 1 l p các giá tr nh hơn
• n l p các giá tr h p l
N u d li u là t p h p các giá tr , xây d ng
• 1 l p v i t p r ng
• 1 l p quá nhi u các giá tr
• nl ph pl
N u d li u vào là ñi u ki n ràng bu c, xây d ng
• 1 l p v i ràng bu c ñư c th a mãn
• 1 l p v i ràng bu c không ñư c th a mãn
34
17
18. Ki m th l p tương ñương
Ví d
Bài toán tam giác
Nh n Vuông Tù
Thư ng 6,5,3 5,6,10 3,4,5
Cân 6,1,6 7,4,4 √2,2,√2
ð u 4,4,4 không th không th
Không là tam giác -1,2,8
35
Bài t p
Ki m th giá tr biên
Vi t m t chương trình th ng kê phân tích m t t p
ch a tên và ñi m c a sinh viên trong m t năm h c.
T p này ch a nhi u nh t 100 trư ng. M i trư ng
ch a tên c a m i sinh viên (20 ký t ), gi i tính (1 ký
t ) và ñi m c a 5 môn h c (t 0 ñ n 10). M c ñích
chương trình:
• tính di m trung bình m i sinh viên
• tính ñi m trung bình chung (theo gi i tính et theo môn
h c)
• tính s sinh viên lên l p (ñi m trung bình trên 5)
Xây d ng d li u th cho chương trình trên b i ki m
th giá tr biên
36
18
19. Bài t p
Ki m th l p tương ñương
Vi t chương trình d ch, trong ñó có câu l nh FOR,
ñ c t câu l nh FOR như sau: “L nh FOR ch ch p
nh n m t tham s duy nh t là bi n ñ m. Tên bi n
không ñư c s d ng quá hai ký t khác r ng. Sau ký
hi u = là c n dư i và c n trên c a bi n ñ m. Các c n
trên và c n dư i là các s nguyên dương và ñư c
ñ t gi a t khóa TO”.
Xây d ng d li u th ñ ki m th câu l nh FOR theo
k thu t ki m th l p tương ñương
37
Ki m th h p tr ng
D a vào mã ngu n/c u trúc chương trình
Xây d ng d li u th sau khi mã hóa/l p
trình
Thư ng phát hi n các l i l p trình
Khó th c hi n
Chi phí cao
38
19
20. Các k thu t ki m th h p
tr ng
Ki m th d a trên ñ th lu ng ñi u khi n
Ki m th d a trên ñ th lu ng d li u
Ki m th ñ t bi n (mutation testing)
39
ð th lu ng ñi u khi n
ð th lu ng ñi u khi n (Control Flow Graph -
ðTLðK) là ñ th có hư ng, bi u di n m t chương
trình
ñ nh: bi u di n l nh tu n t hay kh i l nh
cung: bi u di n các r nhánh
m t ñ nh vào và m t ñ nh ra ñư c thêm vào ñ bi u
di n ñi m vào và ra c a chương trình
L trình (path) trong ðTLðK
xu t phát t ñ nh vào ñi qua các ñ nh và cung trong
ñ th và k t thúc t i ñ nh ra
40
20
21. ð th lu ng ñi u khi n
Ví d 1
if x <= 0 then
x := -x
else
x := 1 -x;
if x = -1 then
x=1
else
x := x+1;
writeln(x);
41
ð th lu ng ñi u khi n
Ví d 1 (2)
Có 4 l trình
• [a, b, d, f, g]
• [a, b, d, e, g]
• [a, c, d, f, g]
• [a, c, d, e, g]
42
21
22. ð th lu ng ñi u khi n
Ví d 1 (3)
ð th G1 có th bi u di n d ng bi u th c
chính quy:
G1 = abdfg + abdeg + acdfg + acdeg
Hay ñơn gi n:
G1 = a(bdf + bde + bdf + bde)g
G1 = a(b + c)d(e + f)g
43
ð th lu ng ñi u khi n
Bi u di n các c u trúc
C u trúc tu n t : ab
C u trúc r nhánh: b(a + d)c
C u trúc l p: ab(cb)*d
44
22
23. ð th lu ng ñi u khi n
Ví d 2
i := 1;
found:= false;
while (not found) do
begin
if (a[i] = E) then
begin
found:= true;
s := i;
end;
i := i + 1;
end;
ε
G2 = ab(c(ε + d)eb)*f
45
ð th lu ng ñi u khi n
Bài t p 1
V ñ th lu ng ñi u khi n
Xây d ng bi u th c chính quy bi u di n ñ th
if n <= 0 then
n := 1-n
end;
if (n mod 2) = 0 then
n := n / 2
else
n := 3*n + 1
end ;
write(n);
46
23
24. ð th lu ng ñi u khi n
Bài t p 2
V ñ th lu ng ñi u khi n
Xây d ng bi u th c chính quy bi u di n ñ th
read(i);
s := 0;
while(i <= 3) do
begin
if a[i] > 0 thens := s + a[i];
i := i + 1;
end
47
Ki m th d a trên ðTLðK
Các tiêu chu n bao ph
Ph t tc các ñ nh/l nh
Ph t tc các cung
Ph t tc các quy t ñ nh
Ph t tc các ñư ng ñi
48
24
25. Ki m th d a trên ðTLðK
Ph t t c các ñ nh/l nh
Cho phép ph t t c các ñ nh/l nh
m i l nh ñư c th c thi ít nh t m t l n
tiêu chu n t i thi u
functionsum(x,y : integer) : integer;
begin
if (x = 0) then
sum := x
else
sum := x + y
end;
Khi th c thi l trình acd s phát hi n l i
49
Ki m th d a trên ðTLðK
Ph t t c các ñ nh/l nh
H n ch c a tiêu chu n
read(x);
…
if (x <> 0) then x := 1;
…
y := 1/x;
Ph t t c các ñ nh không phát hi n ñư c phát hi n l i
50
25
26. Ki m th d a trên ðTLðK
Ph t t c các cung
Ph t t c các cung ít nh t m t l n
ph t t các giá tr ñúng sai c a m t bi u th c lô-gíc
ph t t c các cung kéo theo ph t t c các ñ nh
if ((a < 2) and (b = a))
then
x := 2 -a
else
x := a -2
D li u th DT1 = {a=b=1} và DT2 = {a=b=3} th a mãn ph
t t c các cung, nhưng không ph t t c các quy t ñ nh,
51 ch ng h n DT3 = {a=3, b=2}
Ki m th d a trên ðTLðK
Ph t t c các quy t ñ nh
Ph t t c các quy t ñ nh ñư c th a mãn khi:
tiêu chu n ph t t c các cung ñư c th a mãn và
m i bi u th c con c a bi u th c ñi u ki n ñư c th
v i t t c các giá tr có th
N u (a AND b)
a = b = true
a = b = false
a = true, b = false
a = false, b = true
52
26
27. Ki m th d a trên ðTLðK
Ph t t c các quy t ñ nh
D li u th
DT1 = {a = b = 1}
DT2 = {a = 1, b = 0}
DT3 = {a = 3, b = 2}
DT4 = {a = b = 3}
53
Ki m th d a trên ðTLðK
Ph t t c các quy t ñ nh
H n ch
Không phát hi n l i trư ng h p không th c thi
vòng l p
read(inf, sup);
i := inf;
sum:= 0;
while(i <= sup) do
begin
sum:= sum+ a[i];
i := i + 1;
end;
writeln(1/sum);
D li u th DT1 = {a[1]=50, a[2]=60, a[3]=80, inf=1, sup=3} ph
54 t t c các cung/quy t ñ nh, nhưng không phát hi n l i
27
28. Ki m th d a trên ðTLðK
Ph t t c các l trình
M i l trình ph i ñư c th c thi ít nh t m t
l n
G p khó khăn khi s l n l p vô h n
Ch th c hi n m t s l n l p nh t ñ nh
Ho c ch th c hi n hai lo i l trình
• các l trình vư t qua vòng l p nhưng không l p
• các l trình ch l p n l n (ch ng h n n = 1)
55
Ki m th d a trên ðTLðK
Ph t t c các l trình
D li u th
DT1 = {a[1]=50, a[2]=60, a[3]=80, inf=1, sup=3}
DT2 = {a[1]=50, a[2]=60, a[3]=80, inf=3, sup=2}
56
28
29. Ki m th d a trên ðTLðK
Bài t p
Xây d ng d li u th th a mãn các tiêu chu n
ph t t c các ñ nh
ph t t c các cung
ph t t c các l trình
if n ≤ 0 then
n := 1-n
end;
if (n mod 2) = 0
then
n := n / 2
else
n := 3*n + 1
end ;
write(n);
57
Ki m th d a trên ðTLðK
Bài t p
Xây d ng d li u th th a mãn các tiêu chu n ph
t t c các l trình
function goodstring(var count : integer) : boolean;
var ch : char;
begin
goodstring := false;
count := 0;
read(ch);
if ch = ‘a’ then
begin
read(ch)
while(ch = ‘b’) or (ch = ‘c’) do begin
count := count + 1;
read(ch);
end;
if ch = ‘x’ then goodstring = true;
end;
58 end;
29