Design is Testability

Ғылым және технология

A Software Design Tech Talk, presented by Titus Winters, 2024-04-09. Hosted by SWEdu, the Google School of Software Engineering.
ABSTRACT: For Software Engineering practitioners, the past 10 years have seen an explosive rise in the adoption of continuous integration systems and automated software testing. Having sufficient test coverage is now considered key to maintaining enough control of large software systems to make changes quickly and reliably. Although we’ve started to write tests, there is still a lot to learn about how to test well - with 40 years of invention and innovation in test strategies and technologies, it’s hard to know what tools are appropriate when testing a given interface. Even among industry leaders, a lot of good testing is still a matter of “I’ll know it when I see it.” In this talk I’ll argue that long-ignored concepts from software design are essential in understanding how to test appropriately. Along the way I’ll tie together ideas and technologies from both design and testing: control, contracts, and design qualities help us understand how best to use unit tests, dynamic analysis, fuzzing, and property-based testing approaches.
Speaker: Titus Winters
Bio: Titus is a Senior Principal Scientist at Adobe, focusing on Developer Experience. He has served on the C++ standards committee, chairing the working group for the design and evolution of the C++ standard library. He has also served on the ACM/IEEE/AAAI CS2023 steering committee, helping set curriculum requirements for Computer Science undergraduate degrees, focusing on the requirements for software engineering. Titus was a thought leader at Google for many years, focusing on C++, software engineering practice, technical debt, and culture. He is the lead author for the book Software Engineering at Google. (O'Reilly, 2020).

Пікірлер: 2

  • @user-si7gh3gw5e
    @user-si7gh3gw5e21 күн бұрын

    Great talk!

  • @andersjohnson9565
    @andersjohnson9565Ай бұрын

    Roughly speaking, there are only two important considerations in software design: testability and computational efficiency.

Келесі