Software Testing

Brought by: Udacity

Overview

When writing software, destruction can be just as valuable as creation. Learn how to catch bugs and break software as you discover different testing methods that will help you build better software.

Syllabus

  • Domains, Ranges, Oracles, and Kinds of Testing
    • How to think about the different elements of software testing.
  • Code Coverage
    • How to find parts of a program that need more testing.
  • Random Testing
    • How to automatically generate test cases that break code in unexpected ways.
  • Advanced Random Testing
    • How to engineer a sophisticated random test case generator.
  • Consequences
    • How to deal with lots of bugs, how to take a big input that triggers a bug and make it smaller, how to report a bug, and more!
  • Conclusion

Taught by

John Regehr

Software Testing
Go to course

Software Testing

Brought by: Udacity

  • Udacity
  • Free
  • English
  • Certificate Not Available
  • Available at any time
  • intermediate
  • N/A
8.1.2PHP Version1.01sRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (638ms)
    • Application (367ms)
    • 1 x Booting (63.37%)
      638.41ms
      1 x Application (36.38%)
      366.52ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      6 statements were executed8.88ms
      • select * from `courses` where `slug_en` = 'software-testing' limit 1
        7.26ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. software-testing
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-07-28 01:01:51' where `id` = 619
        740μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-07-28 01:01:51
        • 1. 619
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (77)
        210μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        180μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (6) and `providers`.`deleted_at` is null
        210μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 613 limit 1
        280μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 613
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        0agfVjoNZatBztYKkHsKNDE0qXcd3S4UUJXOFllG
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/software-testing" ]
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/software-testing
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.121" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.121" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "96607293c919a1f2-YYZ" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "216.73.216.121" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.121" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "96607293c919a1f2-YYZ" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "22308" "REMOTE_ADDR" => "108.162.241.68" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/software-testing" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1753664510.304 "REQUEST_TIME" => 1753664510 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Mon, 28 Jul 2025 01:01:51 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Ik9aa25zMElKRWRiS0g1N1VEWDVYYlE9PSIsInZhbHVlIjoiZTBQZTY2enJjUzRybmM0MW9yVEo5S1hNSERQNkd3R3Fvb0h6YjdCenAxdXFqdG5seFNjcFJyYTdPTlB3YVJtMnIrYXRHazZ0d3RDTnRHNGtQdWhXK0U5TjNwTG0veUxYdWk1WDBsR1plM1RaU2I4N2pOVXNQMW9vVit5Z05XQXciLCJtYWMiOiI5ZGNjOGMxOTcyOTkyZTE0N2EwMWIyODBjOGQzMTA3ZTdmMTRkMzMwNDVjZDBjYTQ0YTI0YmE5NmNmYzlhYmZlIiwidGFnIjoiIn0%3D; expires=Mon, 28 Jul 2025 03:01:51 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6Ik9aa25zMElKRWRiS0g1N1VEWDVYYlE9PSIsInZhbHVlIjoiZTBQZTY2enJjUzRybmM0MW9yVEo5S1hNSERQNkd3R3Fvb0h6YjdCenAxdXFqdG5seFNjcFJyYTdPTlB3YVJtMnIrYXRHa" 1 => "laravel_session=eyJpdiI6IktBSEYvaDRPbGFMbUxrMGRlWGVBd1E9PSIsInZhbHVlIjoicW9TT1FlYm1YeTZ2V0IrbnI1V3kzdnhtY2VMRC9iQkpoUUErTkM5cExLNnlFTnpWbFo4M1hnUjFPUHhBWTZYbnVpN2M5Z0k4b2NORzRNZG5FQVBMZ1JHclFzK0xYSXJabHBpN0NlUVZ1akRqZDRIY1luOVRYYjNBdURCS3FZTFciLCJtYWMiOiJmMjE3OTg2NDE2NDM2OTg4MWI5MTE2ZGRlOGY2YjI3ZjljNjViMTcyZTNlNTcxNTI3ZTJhMjJmZmE4YmJkZTM3IiwidGFnIjoiIn0%3D; expires=Mon, 28 Jul 2025 03:01:51 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IktBSEYvaDRPbGFMbUxrMGRlWGVBd1E9PSIsInZhbHVlIjoicW9TT1FlYm1YeTZ2V0IrbnI1V3kzdnhtY2VMRC9iQkpoUUErTkM5cExLNnlFTnpWbFo4M1hnUjFPUHhBWTZYbnVp" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Ik9aa25zMElKRWRiS0g1N1VEWDVYYlE9PSIsInZhbHVlIjoiZTBQZTY2enJjUzRybmM0MW9yVEo5S1hNSERQNkd3R3Fvb0h6YjdCenAxdXFqdG5seFNjcFJyYTdPTlB3YVJtMnIrYXRHazZ0d3RDTnRHNGtQdWhXK0U5TjNwTG0veUxYdWk1WDBsR1plM1RaU2I4N2pOVXNQMW9vVit5Z05XQXciLCJtYWMiOiI5ZGNjOGMxOTcyOTkyZTE0N2EwMWIyODBjOGQzMTA3ZTdmMTRkMzMwNDVjZDBjYTQ0YTI0YmE5NmNmYzlhYmZlIiwidGFnIjoiIn0%3D; expires=Mon, 28-Jul-2025 03:01:51 GMT; path=/XSRF-TOKEN=eyJpdiI6Ik9aa25zMElKRWRiS0g1N1VEWDVYYlE9PSIsInZhbHVlIjoiZTBQZTY2enJjUzRybmM0MW9yVEo5S1hNSERQNkd3R3Fvb0h6YjdCenAxdXFqdG5seFNjcFJyYTdPTlB3YVJtMnIrYXRHa" 1 => "laravel_session=eyJpdiI6IktBSEYvaDRPbGFMbUxrMGRlWGVBd1E9PSIsInZhbHVlIjoicW9TT1FlYm1YeTZ2V0IrbnI1V3kzdnhtY2VMRC9iQkpoUUErTkM5cExLNnlFTnpWbFo4M1hnUjFPUHhBWTZYbnVpN2M5Z0k4b2NORzRNZG5FQVBMZ1JHclFzK0xYSXJabHBpN0NlUVZ1akRqZDRIY1luOVRYYjNBdURCS3FZTFciLCJtYWMiOiJmMjE3OTg2NDE2NDM2OTg4MWI5MTE2ZGRlOGY2YjI3ZjljNjViMTcyZTNlNTcxNTI3ZTJhMjJmZmE4YmJkZTM3IiwidGFnIjoiIn0%3D; expires=Mon, 28-Jul-2025 03:01:51 GMT; path=/; httponlylaravel_session=eyJpdiI6IktBSEYvaDRPbGFMbUxrMGRlWGVBd1E9PSIsInZhbHVlIjoicW9TT1FlYm1YeTZ2V0IrbnI1V3kzdnhtY2VMRC9iQkpoUUErTkM5cExLNnlFTnpWbFo4M1hnUjFPUHhBWTZYbnVp" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "0agfVjoNZatBztYKkHsKNDE0qXcd3S4UUJXOFllG" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/software-testing" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]