Programming Practices Debugging And Testing Software

Software practices, Debugging, Software testing, software engineering, prodcutivity, unit testing, clean code
Programming Practices Debugging And Testing Software
File Size :
433.25 MB
Total length :
1h 15m



RougeNeuron Academy


Last update




Programming Practices Debugging And Testing Software

What you’ll learn

Basic debugging from programming practices perspective
Techniques to deal with bugs
Testing to avoid painful debugging in future
Actionable testing and debugging techniques to improve code quality and productivity immediately

Programming Practices Debugging And Testing Software


Basic programming experience in any programming language


Welcome to Debugging and Testing in Programming Practices, a one-hour course designed to help you master the art of debugging and testing your code effectively. This course covers a wide range of topics, from debugging techniques and tools to various testing methodologies, with a focus on practical programming scenarios.Note: The content of this course is also published as part of an in-depth course titled “Programming Practices Bootcamp for production ready coding.”Course Outline:Debugging Course IntroductionDebugging and its importance, challenges, and techniquesDebugging Techniques and ConsiderationsStress Tests, Array Bounds, Start Small, Creating FailuresDon’t Ship Test Code, Avoid Using Defaults, Test on Many MachinesTypes of TestingWhite Box Testing, Black Box Testing, User Testing, Correctness of TestsDebugging Tools and LanguagesSophisticated Tools, Errors Are Imminent, Same Time Programming As DebuggingDebugging Is Unpredictable and Time-Consuming, Techniques to Improve DebuggabilityRole of Language in DebuggingDebugger Advice and FeaturesUse Optimally, Availability, Stack Trace, Break Point, UtilityDebugger Challenges: DSL, System Dependent, Limited in Lower LevelsChoose Carefully, Don’t Probe BlindlyDebugging Strategies and TipsFix Same Issue Throughout Code, Fixed Is Better Than ShippedRead Code Before Attaching Debugger, Explain Code to Someone, Collect Stack TraceSeek Patterns, Type Conversion Issues, Passing By Value and ReferenceFloat Conversion Issues, Uninitialized Variables, Start With Most Recent ChangeTesting and ToolsIntroduction, Testing Is Trying to Break Programs, Testing Can Get TrickyCode Generation, Test-Driven Development, Boundary TestingPre and Post Conditions, Using Asserts, Program Defensively, Check Errors and ExceptionsTest Automation and Systematic TestingCase for Test Automation, Automate Regression Testing, Create Self-Contained TestsDon’t Reinvent The Wheel, Systematic Testing Incrementally, Start SimpleVerify Conservation Properties, Compare Independent Implementations, MeasureBy the end of this course, you’ll have a solid understanding of debugging and testing techniques, and how to effectively apply them in your programming practice. With practical examples and insights, this course will help you enhance your programming skills and ensure the quality of your code. Enroll now and start mastering debugging and testing in programming practices!


Section 1: Bugs Everywhere!!

Lecture 1 Introduction

Lecture 2 Bugs seem universal

Lecture 3 More components, more complexity.

Lecture 4 Programming languages make an attempt to ease debugging but its upto you

Lecture 5 Sophisticated tools to check correctness of programs to make debugging managable

Lecture 6 Errors are imminent.

Lecture 7 You will spend same time programming and debugging during your career.

Lecture 8 Debugging can be unpredictable and time consuming at times

Lecture 9 You must invest in techniques to make your code easier to debug

Lecture 10 Role of programming language in debugging

Lecture 11 Treat tool chain warning with same rigour as bugs

Lecture 12 Programming language cannot prevent every error

Section 2: Features of a good debugger tool

Lecture 13 Ease of Availability

Lecture 14 Provision to provide Stack trace

Lecture 15 Break Points

Lecture 16 Add value to debugging experience

Lecture 17 Debugger Challenges when dealing with Domain Specific Languages

Lecture 18 Debugger Challenges around platform dependencies

Lecture 19 Debugger limitation

Lecture 20 Does one need to be cautious while choosing a debugger?

Lecture 21 Blind probing does not count as debugging!

Lecture 22 Using tool is not the primary objective!

Section 3: Debugging with sufficient clues and easy bugs

Lecture 23 Its always the world at fault.

Lecture 24 Collect the stack trace

Lecture 25 Reason backward as if solving a mystery.

Lecture 26 Seek Patterns

Lecture 27 Type Of conversion Issues

Lecture 28 When to pass by value or pass by reference?

Lecture 29 Float conversion issues

Lecture 30 Uninitialized Variables

Lecture 31 Start with recent changes

Lecture 32 Eradicate the issue not just fix an instance

Lecture 33 Shipped is better than perfect. Fixed is better than shipped!

Lecture 34 Debugger is not a tool to read code!

Lecture 35 Take help of peers as sounding board

Section 4: No Clues, Hard Bugs

Lecture 36 Reproduce the issue

Lecture 37 Programmatic Reproduction of issue

Lecture 38 Document the Inputs causing issues

Lecture 39 Observer the changes that make issue disappear

Lecture 40 Study the frequency of Failure

Lecture 41 Track intermediate outputs

Lecture 42 Self Checking Code

Lecture 43 Recording progress via log files

Lecture 44 Use block diagrams to “see” the issue

Lecture 45 Environment compatible tools

Lecture 46 Document the investigations

Lecture 47 Finally you may attach a debugger

Section 5: Non Reproducible Bugs.

Lecture 48 The black swans. The Ghost On the machine

Lecture 49 Niche bugs

Lecture 50 Other people’s bugs

Section 6: Testing

Lecture 51 Motivation

Lecture 52 Testing is not debugging!

Lecture 53 Testing isn’t obvious!

Lecture 54 Testing benefits from codegeneration.

Section 7: Test as you Code

Lecture 55 Test as you develop / Test Driven Development

Lecture 56 Boundary Testing

Lecture 57 Pre condition and post condition testing

Lecture 58 Use assert statements

Lecture 59 Program Defensively

Lecture 60 Check for errors and exceptions as you are coding

Section 8: Automation is a boon!

Lecture 61 Test automation is becoming mandatory

Lecture 62 Automate your regression Testing

Lecture 63 Create Self Contained Tests

Lecture 64 Don’t reinvent the wheel

Section 9: Systematic Testing

Lecture 65 Testing incrementally is recommended

Lecture 66 Start with simple use cases

Lecture 67 Verify Conservation Properties

Lecture 68 Compare Independent Implementations

Lecture 69 Measure what matters

Section 10: Other consideration while testing software

Lecture 70 Stress Test

Lecture 71 Array bounds

Lecture 72 Start with small data

Lecture 73 Simulating or generating failure scenarios

Lecture 74 Don’t ship the test code!!

Lecture 75 Case for not using default values in test cases

Lecture 76 Tests in multiple environments

Lecture 77 White box testing

Lecture 78 Black Box Testing

Lecture 79 User Testing

Lecture 80 Correctness of tests?

Lecture 81 Apply the knowledge!

Section 11: Conclusion

Lecture 82 [Bonus Lecture]

Beginner software developers,Computer Science students,People curious to build skill of writing production ready code,People curious to learn programming beyond competetive portal coding

Course Information:

Udemy | English | 1h 15m | 433.25 MB
Created by: RougeNeuron Academy

You Can See More Courses in the Developer >> Greetings from

New Courses

Scroll to Top