TDD Revisited - Ian Cooper - NDC Porto 2023

  Рет қаралды 17,080

NDC Conferences

NDC Conferences

Күн бұрын

Пікірлер: 25
@abdullahkarolia3418
@abdullahkarolia3418 10 ай бұрын
This finally made testing as a whole concept make sense...
@IAMAliJan
@IAMAliJan 10 ай бұрын
This video should be shared more. Everyone needs to go back to basics
@samba2133
@samba2133 10 ай бұрын
Thanks to be reminded on the focus on behavior. Dealing with a modern dotnet code base, we do DI all over the place and mostly fall back on mocks. I'd love to understand the alternatives better.
@JohnFarrellDev
@JohnFarrellDev 10 ай бұрын
full end to end and integration testing
@ForgottenKnight1
@ForgottenKnight1 9 ай бұрын
Use DI when needed (like strategy pattern or other patterns where you don't know the concrete dependency before runtime or there can be different dependencies based on conditions in layers above). And stop writing unit tests for internal or private classes. Test public classes, more specifically public methods in those public classes. Mocking couples implementation details to the test, which will make the test fail if you change the implementation, even if the behavior remains the same.
@PaulSebastianM
@PaulSebastianM 6 ай бұрын
There is a built-in Audacity plugin that can remove the background hum by giving it a sample of it from where there are no other sounds in the source.
@GeorgeTsiros
@GeorgeTsiros 5 ай бұрын
my favorite idea is a PLL-based hum cancellation. Please tell me this is something others have thought of, too?
@BryonLape
@BryonLape 9 ай бұрын
I tend to mock, fake, or stub on the edges for tests that last. May use it when I'm discovering internal implementation and just need something to pretend to work. These tests tend to get removed over time.
@michaeldarling5552
@michaeldarling5552 2 ай бұрын
FYI: The hum seems worse in the left channel. Turn off the left channel, or use headphones/earbuds and only have the right side on/in your ear.
@xuscrus
@xuscrus 9 ай бұрын
I Love the "using the word micro in micro services" 👏👏👏
@barneylaurance1865
@barneylaurance1865 6 ай бұрын
I'm confused about "only test the public interface that other people depend upon" at 28:04. The implication of that seems to be that if the entire system is developed by one team with full collective code ownership, then you should only test at the user or other external interface of the application. But that can't be right, since testing at the user interface level is generally hard work and fragile. So maybe it means have the app split into modules and test at the module boundary level. But then the problem of what to test isn't really answered, it's just replaced with the problem of how to decompose the app into modules, and if you change that arrangement of modules you'll still need to change the tests. And not all languages have a native module system where a module is distinct from a class or a function. And writing a test for a module may be a lot more complicated and require a lot of irrelevant details that gets in the way. E.g. in the example of calculateFoo, if Foo is something that the customer understands (e.g. foo is the postageAndPackagingCostEstimate for display on a shopping cart) then having a focused test that calls that function or something close to it seems a lot simpler than a test on a bigger scale where more setup is required so we can call a bigger function that e.g. also has to calculate the taxes.
@andsnpl
@andsnpl 5 ай бұрын
> The implication of that seems to be that if the entire system is developed by one team with full collective code ownership, then you should only test at the user or other external interface of the application. But that can't be right, since testing at the user interface level is generally hard work and fragile. These days I try to structure my applications so that all of the functional requirements can be expressed in abstract form by some data/object model one layer below the user interface. In a web API that's already pretty common, as I think you generally see people writing a service layer with thin controllers on top. The one difference I've seen is that IME people want to put all the validation logic in the controller, but to the extend that those validations need to go in the test suite I pull them down into the service/domain model. In UIs I'm a big advocate of state managers like Redux with thin rendering logic on top; and that rendering logic can go completely untested as far as I'm concerned. Maybe a storybook for some manual testing of the different component states. I don't find writing tests at this level to be super complicated, although I do usually wind up with helper methods at the top of several of my test files that set up common boilerplate scenarios, on top of which each test can then tweak the one or two inputs that it cares about.
@EzequielBirman77
@EzequielBirman77 3 ай бұрын
23:51 Thirty seconds is still too much for TDD. The whole suite should run in under a second. Good talk.
@ForgottenKnight1
@ForgottenKnight1 9 ай бұрын
Merging development and QA was a very bad decision that corporations made. Now, their agenda is obvious, more profit, but the outcome is software of lower quality. QA is a different mindset than development itself, and having the developer only testing his code is just asking for trouble because of all sorts of biases.
@GackFinder
@GackFinder 5 ай бұрын
20 years as an IT consultant and I've yet to meet a QA department that adds anything of value to the process of developing and releasing working software. At my previous client, I was told that QA must be involved in the testing of the features I developed. When I asked them what they needed to test, they couldn't specify it. When I asked how they would test it, they couldn't specify. When I asked what and how they test in general, they couldn't specify.
@banned_from_eating_cookies
@banned_from_eating_cookies 2 күн бұрын
I agreed with some of this, but the idea of using TDD to drive design is a recipe for anti-patterns and inelegant code. We shouldn't bypass the developer's ability to use experience and their mental models to design the abstractions to support the public interface.
@KyleSmithNH
@KyleSmithNH 10 ай бұрын
Wait do europeans still drive stick?
@pepijnkrijnsen4
@pepijnkrijnsen4 10 ай бұрын
Sure do! We had a continent wide vote on it a while ago and stick won out.
@gruttewibe76
@gruttewibe76 10 ай бұрын
Electric and hybrid cars are often automatic only, I think, so manual gearbox is probably going away slowly.
@GeorgeTsiros
@GeorgeTsiros 5 ай бұрын
Electric are "automatic" in the sense that they have no need for a gearbox.
@wanderer977
@wanderer977 3 ай бұрын
that means all your tests are going to be integration tests.. strongly disagree with this guy
@Ph4x
@Ph4x 3 ай бұрын
audio makes the video unbearable
@nazarshvets7501
@nazarshvets7501 9 ай бұрын
Didn't make sense to me. - Testing behaviour as black box is basicly E2E tests. It is known fact that there are expensive, so you don't want to make 100% coverage by them, only happy paths. The rest should be covered by other kind of tests: units, integration etc - How its expected to get 100% coverage "out of the box" if you are not supposed to TDD whole codebase. Сausal relationship is self referential here, therefore is invalid. - What exactly you testing by TTD, if its not: IO, Http, Database, UI, Defined Spec. If its not units, not integration, then its E2E? (see point 1) Are u building features without specification? How is that supposed to even work? What are u discovering there? Funny tho, TTD guys usually say that its a skill, but if you discovering implementation by TTD, it is looks like a skill issue. I think there is lack of practical examples
@zhenyuzhang761
@zhenyuzhang761 9 ай бұрын
It make sense to me. Here is why. Prerequisite about who I am. - I don't follow anything, I make tradeoff. - I don't care about detail, those IO, UI stuff. I only care about doamin logic. For your second point, I don't force 100% on everything, I force 100% on the doamin logic that I care. For your first point, I have a clearly defined inside layer which is my domain in my codebase. Inside doamin there are properly divided modules, I treat each module as a black-box and test their public methods that will be called by other modules. About this you may need to learn about DDD and component/module. Hope my experience could help.
@ForgottenKnight1
@ForgottenKnight1 9 ай бұрын
Go read Test Driven Development by Kent Beck. It contains some clarifications to your questions...
🚀  TDD, Where Did It All Go Wrong (Ian Cooper)
1:03:55
DevTernity Conference
Рет қаралды 568 М.
Noodles Eating Challenge, So Magical! So Much Fun#Funnyfamily #Partygames #Funny
00:33
Из какого города смотришь? 😃
00:34
МЯТНАЯ ФАНТА
Рет қаралды 2,5 МЛН
Симбу закрыли дома?! 🔒 #симба #симбочка #арти
00:41
Симбочка Пимпочка
Рет қаралды 4,7 МЛН
Unit Testing Is The BARE MINIMUM
20:33
Continuous Delivery
Рет қаралды 33 М.
Solution2: Plugin Architecture in C# with Nick Cosentino
52:53
.NET Foundation
Рет қаралды 3 М.
Why Would Anyone Hate TDD? | Prime Reacts
46:52
ThePrimeTime
Рет қаралды 152 М.
The Future of Cookies - Anders Abel - NDC Security 2024
50:10
NDC Conferences
Рет қаралды 7 М.
How to fall in love with TDD - Gui Ferreira - NDC London 2024
45:51
NDC Conferences
Рет қаралды 8 М.
Pipeline-oriented programming - Scott Wlaschin - NDC Porto 2023
56:55
NDC Conferences
Рет қаралды 29 М.
How to fall in love with TDD - Gui Ferreira - NDC Oslo 2024
53:06
NDC Conferences
Рет қаралды 5 М.
TDD & DDD from the Ground Up Live Coding by Chris Simon
53:21
Apple phone #shorts #trending #viralvideo
0:48
Tech Zone
Рет қаралды 1 МЛН
Q Mobile SL 100 Best Mobile Phone
0:44
Gaming world
Рет қаралды 944 М.
The M4 Mac Mini is Incredible!
11:45
Marques Brownlee
Рет қаралды 6 МЛН