{"id":482,"date":"2025-01-02T20:09:53","date_gmt":"2025-01-02T20:09:53","guid":{"rendered":"https:\/\/www.sqrlab.ca\/csci3060u\/?page_id=482"},"modified":"2026-02-11T15:19:24","modified_gmt":"2026-02-11T15:19:24","slug":"lectures","status":"publish","type":"page","link":"http:\/\/www.sqrlab.ca\/csci3060u\/lectures\/","title":{"rendered":"Lectures"},"content":{"rendered":"\n<ul class=\"wp-block-list\">\n<li><a href=\"#lecture01\">Lecture 1: Introduction to Software Quality<\/a><\/li>\n\n\n\n<li><a href=\"#lecture02\">Lecture 2: Software Process &amp; SQA<\/a><\/li>\n\n\n\n<li><a href=\"#lecture03\">Lecture 3: Agile Methods I \u2013 XP<\/a><\/li>\n\n\n\n<li><a href=\"#lecture04\">Lecture 4: Agile Methods II \u2013 Scrum<\/a><\/li>\n\n\n\n<li><a href=\"#lecture05\">Lecture 5: Agile Methods III \u2013 Kanban<\/a><\/li>\n\n\n\n<li><a href=\"#lecture06\">Lecture 6: Systematic Testing I<\/a><\/li>\n\n\n\n<li><a href=\"#lecture07\">Lecture 7: Systematic Testing II<\/a><\/li>\n\n\n\n<li><a href=\"#lecture08\">Lecture 8: Black Box Testing I<\/a><\/li>\n\n\n\n<li><a href=\"#lecture09\">Lecture 9: Black Box Testing II<\/a><\/li>\n\n\n\n<li><a href=\"#lecture10\">Lecture 10: White Box Testing I<\/a><\/li>\n\n\n\n<li><a href=\"#lecture11\">Lecture 11: White Box Testing II<\/a><\/li>\n\n\n\n<li><a href=\"#lecture12\">Lecture 12: White Box Testing III<\/a><\/li>\n\n\n\n<li><a href=\"#lecture13\">Lecture 13: Continuous Testing I<\/a><\/li>\n\n\n\n<li><a href=\"#lecture14\">Lecture 14: Continuous Testing II<\/a><\/li>\n\n\n\n<li><a href=\"#lecture15\">Lecture 15: Exploratory Software Testing<\/a><\/li>\n\n\n\n<li><a href=\"#lecture16\">Lecture 16: Security Testing and Analysis<\/a><\/li>\n\n\n\n<li><a href=\"#lecture17\">Lecture 17: Static Analysis<\/a><\/li>\n\n\n\n<li><a href=\"#lecture18\">Lecture 18: Code Reviews<\/a><\/li>\n\n\n\n<li><a href=\"#lecture19\">Lecture 19: Software Quality and AI<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture01\">LECTURE 1: Introduction to Software Quality<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Course info. What Causes Software Errors? What is Quality? McCall\u2019s Factor Model. What is Quality Assurance? Software Quality Assurance. Formal methods, testing, inspection, metrics. Achieving software quality.<\/li>\n\n\n\n<li><em>Slides:<\/em>&nbsp;<a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_01.pdf\">[PDF]<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture02\">LECTURE 2: SOFTWARE PROCESS &amp; SQA<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Quality in context. Software process activities. The Waterfall model. The Prototyping model. Evolutionary development. The Spiral model. The Iterative Development Process (IDP).<\/li>\n\n\n\n<li><em>Slides:<\/em>&nbsp;<a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_02.pdf\">[PDF]<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture03\">LECTURE 3: AGILE METHODS I \u2013 XP<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Principles of the Agile Manifesto. Extreme Programming (XP) values, principles and practices. XP practices include stories, cycles, slack, small releases, pair programming, test first programming, incremental design, continuous integration, ten-minute build, informative workspace.<\/li>\n\n\n\n<li><em>Slides:&nbsp;<\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_03.pdf\">[PDF]<\/a><\/li>\n\n\n\n<li><em>Resources:<\/em>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/agilemanifesto.org\/\">The Agile Manifesto<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=Yvfz4HGtoPc\">Spotify Engineering Culture \u2013 Part 1 [YouTube]<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=vOt4BbWLWQw\">Spotify Engineering Culture \u2013 Part 2 [YouTube]<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture04\">LECTURE 4: AGILE METHODS II \u2013 Scrum<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Foundations of Scrum \u2013 empiricism, lean thinking, transparency. Scrum values. Scrum team members including product owner, scrum master, developers. Scrum framework activities including sprint, daily scrum, sprint review and sprint retrospective. Scrum artifacts including product backlog, sprint backlog and incremental releases. The Scrum metric of velocity.<\/li>\n\n\n\n<li><em>Slides:&nbsp;<\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_04.pdf\">[PDF]<\/a><\/li>\n\n\n\n<li><em>Resources:<\/em>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/scrumguides.org\/\">The Scrum Guide<\/a>&nbsp;\u2013&nbsp;<em>Required reading!<\/em><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=gy1c4_YixCo&amp;t=83s\">A Brief Guide to the Scrum Framework [YouTube]<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture05\">LECTURE 5: AGILE METHODS III \u2013 Kanban<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kanban goals \u2013 visualize work, limit work-in-progress, maximize flow, continuous improvement, continuous release and collective ownership. Kanban artifacts include cards and Kanban board, done rules. Kanban metrics including lead time, cycle time, work-in-progress (WIP) limits, cumulative flow diagrams (CFDs). Scrum vs. Kanban.<\/li>\n\n\n\n<li><em>Slides:&nbsp;<\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_05.pdf\">[PDF]<\/a><\/li>\n\n\n\n<li><em>Resources:<\/em>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=iVaFVa7HYj4\">The Agile Coach \u2013 What is Kanban? [YouTube]<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=CKWvmiY7f_g\">An Example of Kanban from Microsoft [YouTube]<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture06\"><a id=\"L6\" name=\"L6\"><\/a>LECTURE 6: Systematic TESTING I<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Testing vs. Debugging. Validation and Verification. Levels of Testing. Unit, integration, system, acceptance testing.<\/li>\n\n\n\n<li><em>Slides:<\/em> <a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_06.pdf\">[PDF]<\/a><\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading\" id=\"lecture07\"><a id=\"L7\" name=\"L7\"><\/a>LECTURE 7: Systematic TESTING II<\/h3>\n<\/div><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Testing in the Software Life Cycle. Test design, test strategy, test plans, test case design, test procedures. Black box vs. white box testing.<\/li>\n\n\n\n<li><em>Slides: <\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_07.pdf\">[PDF]<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture08\"><a id=\"L8\" name=\"L8\"><\/a>LECTURE 8: BLACK BOX TESTING I<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Black box testing methods including functionality coverage testing and input coverage testing. Different approaches to input coverage testing including exhaustive testing, Input partitioning, shotgun testing, input partition\/shotgun hybrid testing, robustness testing (e.g., boundary testing).<\/li>\n\n\n\n<li><em>Slides:&nbsp;<\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_08.pdf\">[PDF]<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture09\"><a id=\"L9\" name=\"L9\"><\/a>LECTURE 9: BLACK BOX TESTING II<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Black box methods \u2013 output coverage testing.&nbsp;Exhaustive output testing. Output partitioning. Handling multiple input\/output streams\/files. Black box methods at different levels. Gray box testing. Black box unit testing. Test harnesses and stubs. Assertions in test automation, tools. Black box class testing (interface \/ object oriented testing). Traces. Implementing assertions. Black box integration testing.<\/li>\n\n\n\n<li><em>Slides:&nbsp;<\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_09.pdf\">[PDF]<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture10\">LECTURE 10: WHITE BOX TESTING I<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Role and kinds of white box testing. Code injection. Implementation \u2013 source, executable and sampling. White box static analysis. Code coverage methods. Statement analysis methods: statement coverage, basic block coverage.<\/li>\n\n\n\n<li><em>Slides:&nbsp;<\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_10.pdf\">[PDF]<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture11\">LECTURE 11: WHITE BOX TESTING II<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Code coverage methods. Decision analysis methods: decision (branch) coverage, condition coverage, loop coverage, path coverage. Data coverage methods. Data flow coverage.<\/li>\n\n\n\n<li><em>Slides:&nbsp;<\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_11.pdf\">[PDF]<\/a><\/li>\n\n\n\n<li><em>Whiteboard:<\/em><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_1-scaled.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"584\" height=\"282\" data-attachment-id=\"541\" data-permalink=\"http:\/\/www.sqrlab.ca\/csci3060u\/lectures\/lecture11_1\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_1-scaled.jpg?fit=2560%2C1236\" data-orig-size=\"2560,1236\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;1.78&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 15 Pro Max&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1740497483&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;6.7649998656528&quot;,&quot;iso&quot;:&quot;200&quot;,&quot;shutter_speed&quot;:&quot;0.0083333333333333&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}\" data-image-title=\"lecture11_1\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_1-scaled.jpg?fit=300%2C145\" data-large-file=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_1-scaled.jpg?fit=584%2C282\" src=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_1-1024x495.jpg?resize=584%2C282&#038;ssl=1\" alt=\"\" class=\"wp-image-541\" srcset=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_1-scaled.jpg?resize=1024%2C495 1024w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_1-scaled.jpg?resize=300%2C145 300w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_1-scaled.jpg?resize=768%2C371 768w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_1-scaled.jpg?resize=1536%2C742 1536w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_1-scaled.jpg?resize=2048%2C989 2048w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_1-scaled.jpg?resize=500%2C241 500w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_1-scaled.jpg?w=1168 1168w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_1-scaled.jpg?w=1752 1752w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_2-scaled.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"584\" height=\"596\" data-attachment-id=\"542\" data-permalink=\"http:\/\/www.sqrlab.ca\/csci3060u\/lectures\/lecture11_2\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_2-scaled.jpg?fit=2511%2C2560\" data-orig-size=\"2511,2560\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;1.78&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 15 Pro Max&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1740497008&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;6.7649998656528&quot;,&quot;iso&quot;:&quot;125&quot;,&quot;shutter_speed&quot;:&quot;0.016666666666667&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}\" data-image-title=\"lecture11_2\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_2-scaled.jpg?fit=294%2C300\" data-large-file=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_2-scaled.jpg?fit=584%2C596\" src=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_2-1004x1024.jpg?resize=584%2C596&#038;ssl=1\" alt=\"\" class=\"wp-image-542\" srcset=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_2-scaled.jpg?resize=1004%2C1024 1004w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_2-scaled.jpg?resize=294%2C300 294w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_2-scaled.jpg?resize=768%2C783 768w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_2-scaled.jpg?resize=1506%2C1536 1506w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_2-scaled.jpg?resize=2009%2C2048 2009w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_2-scaled.jpg?w=1168 1168w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_2-scaled.jpg?w=1752 1752w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_3-scaled.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"584\" height=\"546\" data-attachment-id=\"543\" data-permalink=\"http:\/\/www.sqrlab.ca\/csci3060u\/lectures\/lecture11_3\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_3-scaled.jpg?fit=2560%2C2396\" data-orig-size=\"2560,2396\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;1.78&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 15 Pro Max&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1740497480&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;6.7649998656528&quot;,&quot;iso&quot;:&quot;100&quot;,&quot;shutter_speed&quot;:&quot;0.016666666666667&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}\" data-image-title=\"lecture11_3\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_3-scaled.jpg?fit=300%2C281\" data-large-file=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_3-scaled.jpg?fit=584%2C546\" src=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_3-1024x958.jpg?resize=584%2C546&#038;ssl=1\" alt=\"\" class=\"wp-image-543\" srcset=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_3-scaled.jpg?resize=1024%2C958 1024w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_3-scaled.jpg?resize=300%2C281 300w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_3-scaled.jpg?resize=768%2C719 768w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_3-scaled.jpg?resize=1536%2C1437 1536w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_3-scaled.jpg?resize=2048%2C1916 2048w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_3-scaled.jpg?resize=321%2C300 321w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_3-scaled.jpg?w=1168 1168w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture11_3-scaled.jpg?w=1752 1752w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture12\">LECTURE 12: WHITE BOX TESTING III<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mutation testing, definition and role. Mutants: value, decision, statement mutations. Examples and coverage.<\/li>\n\n\n\n<li><em>Slides:&nbsp;<\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_12.pdf\">[PDF]<\/a><\/li>\n\n\n\n<li><em>Whiteboard:<\/em><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_1-scaled.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"584\" height=\"355\" data-attachment-id=\"539\" data-permalink=\"http:\/\/www.sqrlab.ca\/csci3060u\/lectures\/lecture12_1\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_1-scaled.jpg?fit=2560%2C1556\" data-orig-size=\"2560,1556\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;1.78&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 15 Pro Max&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1740667673&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;6.7649998656528&quot;,&quot;iso&quot;:&quot;80&quot;,&quot;shutter_speed&quot;:&quot;0.0082644628099174&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}\" data-image-title=\"lecture12_1\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_1-scaled.jpg?fit=300%2C182\" data-large-file=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_1-scaled.jpg?fit=584%2C355\" src=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_1-1024x623.jpg?resize=584%2C355&#038;ssl=1\" alt=\"\" class=\"wp-image-539\" srcset=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_1-scaled.jpg?resize=1024%2C623 1024w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_1-scaled.jpg?resize=300%2C182 300w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_1-scaled.jpg?resize=768%2C467 768w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_1-scaled.jpg?resize=1536%2C934 1536w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_1-scaled.jpg?resize=2048%2C1245 2048w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_1-scaled.jpg?resize=493%2C300 493w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_1-scaled.jpg?w=1168 1168w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_1-scaled.jpg?w=1752 1752w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_2-scaled.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"584\" height=\"230\" data-attachment-id=\"540\" data-permalink=\"http:\/\/www.sqrlab.ca\/csci3060u\/lectures\/lecture12_2\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_2-scaled.jpg?fit=2560%2C1007\" data-orig-size=\"2560,1007\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;1.78&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 15 Pro Max&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1740667677&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;6.7649998656528&quot;,&quot;iso&quot;:&quot;64&quot;,&quot;shutter_speed&quot;:&quot;0.0082644628099174&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}\" data-image-title=\"lecture12_2\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_2-scaled.jpg?fit=300%2C118\" data-large-file=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_2-scaled.jpg?fit=584%2C230\" src=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_2-1024x403.jpg?resize=584%2C230&#038;ssl=1\" alt=\"\" class=\"wp-image-540\" srcset=\"https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_2-scaled.jpg?resize=1024%2C403 1024w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_2-scaled.jpg?resize=300%2C118 300w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_2-scaled.jpg?resize=768%2C302 768w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_2-scaled.jpg?resize=1536%2C604 1536w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_2-scaled.jpg?resize=2048%2C805 2048w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_2-scaled.jpg?resize=500%2C197 500w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_2-scaled.jpg?w=1168 1168w, https:\/\/i0.wp.com\/www.sqrlab.ca\/csci3060u\/wp-content\/uploads\/sites\/13\/2025\/03\/lecture12_2-scaled.jpg?w=1752 1752w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture13\"><a id=\"L13\" name=\"L13\"><\/a>LECTURE 13: CONTINUOUS TESTING I<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>Guest Lecturer:<\/em> Dr. Michael Miljanovic<\/li>\n\n\n\n<li>Software maintenance: corrective, adaptive and perfective maintenance. Continuous testing methods: functionality, failure and operational testing.<\/li>\n\n\n\n<li><em>Slides:&nbsp;<\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_13.pdf\">[PDF]<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture14\"><a id=\"L14\" name=\"L14\"><\/a>LECTURE 14: CONTINUOUS TESTING II<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Regression testing: purpose, method. Establishing and maintaining a regression test set. Observable artifacts: choosing, maintaining, normalizing, differencing. Version signatures. Regression test harnesses. A regression testing example: the TXL interpreter. Regression test organization, signatures and differencing for the TXL interpreter. Kinds of observations: functionality, performance, and internal diagnostic. Advantages and disadvantages of regression testing.<\/li>\n\n\n\n<li><em>Slides:&nbsp;<\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_14.pdf\">[PDF]<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture15\"><a id=\"L15\" name=\"L15\"><\/a>LECTURE 15: Exploratory Software Testing<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Automated vs. manual testing. Scripted manual testing. Exploratory testing in the small and exploratory testing in the large.<\/li>\n\n\n\n<li><em>Slides:&nbsp;<\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_15.pdf\">[PDF]<\/a><\/li>\n\n\n\n<li><em>Resources:<\/em>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=CJF-jCQeMys\">The Three Phases of Exploratory Testing [YouTube]<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=t6RprWpphNU\">How I Use Exploratory Testing to Improve Mobile Apps [YouTube]<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture16\">LECTURE 16: Security Testing and Analysis<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Quality vs. Security. Testing (penetration testing, fuzzing) and static analysis for security. A case study on cybersecurity in connected autonomous vehicles (CAVs).<\/li>\n\n\n\n<li><em>Slides:&nbsp;<\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_16.pdf\">[PDF]<\/a><\/li>\n\n\n\n<li><em>Video:<\/em>&nbsp;<a href=\"https:\/\/youtu.be\/nL20ZytFOp4\">[YouTube]<\/a><\/li>\n\n\n\n<li><em>Resources:<\/em>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/patricegodefroid.github.io\/public_psfiles\/Fuzzing-101-CACM2020.pdf\">Fuzzing: Hack, Art and Science<\/a>&nbsp;by Patrice Godefroid<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/google\/clusterfuzz\">CusterFuzz<\/a>,&nbsp;<a href=\"https:\/\/github.com\/microsoft\/onefuzz\">OneFuzz<\/a>&nbsp;\u2013 open source fuzzing tools<\/li>\n\n\n\n<li><a href=\"https:\/\/spotbugs.github.io\/\">SpotBugs<\/a>,&nbsp;<a href=\"https:\/\/www.synopsys.com\/software-integrity\/security-testing\/static-analysis-sast.html\">Coverity<\/a>&nbsp;\u2013 static analysis tools that support security assessment<\/li>\n\n\n\n<li><a href=\"http:\/\/ocslab.hksecurity.net\/Datasets\/CAN-intrusion-dataset\">Car Hacking Dataset<\/a>&nbsp;[used in case study]<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture17\">LECTURE 17: STATIC ANALYSIS<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Using static analysis techniques to assess software quality and detect faults. Static analysis fault detection tools: Lint, FindBugs and CodeSurfer Path Inspector. A case study of the SCRUB tool at NASA JPL.<\/li>\n\n\n\n<li><em>Slides:&nbsp;<\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_17.pdf\">[PDF]<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture18\">LECTURE 18: CODE REVIEWS<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Reviews, walkthroughs and inspections. Inspection in the software process. Code review techniques: checklists, paraphrasing, walkthroughs. and other lightweight code review practices. A discussion on bias in code review at Google.<\/li>\n\n\n\n<li><em>Slides:&nbsp;<\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_18.pdf\">[PDF]<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lecture19\">LECTURE 19: Software Quality and AI<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In this lecture I will discuss recent research conducted by Riddhi More and I on detecting and classifying flaky tests. Flaky tests are tests that may pass or fail without changing the code.<\/li>\n\n\n\n<li><em>Slides:&nbsp;<\/em><a href=\"http:\/\/www.sqrlab.ca\/courses\/csci3060u-w25\/CSCI_3060U_Lecture_19.pdf\">[PDF]<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>LECTURE 1: Introduction to Software Quality LECTURE 2: SOFTWARE PROCESS &amp; SQA LECTURE 3: AGILE METHODS I \u2013 XP LECTURE 4: AGILE METHODS II \u2013 Scrum LECTURE 5: AGILE METHODS III \u2013 Kanban LECTURE 6: Systematic TESTING I LECTURE 7: &hellip; <a href=\"http:\/\/www.sqrlab.ca\/csci3060u\/lectures\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"sidebar-page.php","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"class_list":["post-482","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/P739Pa-7M","jetpack-related-posts":[],"_links":{"self":[{"href":"http:\/\/www.sqrlab.ca\/csci3060u\/wp-json\/wp\/v2\/pages\/482","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.sqrlab.ca\/csci3060u\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.sqrlab.ca\/csci3060u\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.sqrlab.ca\/csci3060u\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.sqrlab.ca\/csci3060u\/wp-json\/wp\/v2\/comments?post=482"}],"version-history":[{"count":29,"href":"http:\/\/www.sqrlab.ca\/csci3060u\/wp-json\/wp\/v2\/pages\/482\/revisions"}],"predecessor-version":[{"id":574,"href":"http:\/\/www.sqrlab.ca\/csci3060u\/wp-json\/wp\/v2\/pages\/482\/revisions\/574"}],"wp:attachment":[{"href":"http:\/\/www.sqrlab.ca\/csci3060u\/wp-json\/wp\/v2\/media?parent=482"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}