Тёмный

5 Types Of Software Testing & When To Use Them 

Continuous Delivery
Подписаться 212 тыс.
Просмотров 12 тыс.
50% 1

Опубликовано:

 

27 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 55   
@ContinuousDelivery
@ContinuousDelivery 4 дня назад
❗ TEAM TRAINING: Our Team Training Offer combines practical exercises and workshops with Dave Farley, designed to enhance team skill development and achieve real improvements to working practices. Our courses are designed to encourage people to learn together, share ideas, and overcome the challenges of new ways of working. FIND OUT MORE ABOUT TEAM TRAINING HERE ➡ courses.cd.training/pages/buy-for-my-team
@Rope257
@Rope257 4 дня назад
@@ContinuousDelivery How would you handle testing an application that mostly functions as a proxy to other services? I.e. it merely aggregates data from other services so it has no domain logic to speak of. My colleague is proposing we only use integration testing because he feels the unit tests wouldn't add anything of worth. Since even if we would add unit-tests the difference in execution time would be small because there isn't enough to test. Personally, I'm on the fence with this one. Mostly because I cannot argue for using unit-tests due to the lack of domain logic, small amount of tests the service will need, and the relatively low execution-time in both cases (no more than a few seconds).
@rothbardfreedom
@rothbardfreedom 4 дня назад
An Engineering Room about testing with James Bach would be a blast. He is releasing a book on Rapid Software Testing this year.
@Marck1122
@Marck1122 2 дня назад
This channel doesn't want 'manual' testing 😅 - James Bach will start swearing
@timmartin325
@timmartin325 День назад
Wow I'd thumb this comment up 100 times if I could. James Bach has a super interesting take on software testing, certainly worth having a read/watch if you are interested in building software.
@chakala2149
@chakala2149 2 дня назад
Hi Trisha and Dave, when people are discussing testing I rarely hear about ISTQB which is a good body of knowledge regarding testing. I would be glad to hear your take on it 😀
@BrandonToone
@BrandonToone 3 дня назад
Great video! Using acceptance tests to drive unit tests has worked well for me for a long time now. Could you expand more on how to effectively use approval tests, particularly in the context of avoiding the common mistake of adding tests after writing the code?
@veenone
@veenone 3 дня назад
Really love your thorough explanation! This will be a very good material for providing proper understanding of test activities both to the team and management who don't grasp the understanding of test activities properly
@ContinuousDelivery
@ContinuousDelivery 3 дня назад
Glad it was helpful!
@kampanartsaardarewut422
@kampanartsaardarewut422 4 дня назад
feels like you read my mind. I have been using acceptance test without integration tests for years when developing web services api
@rtothec1234
@rtothec1234 4 дня назад
Wait, You guys are testing?!
@cloudconsultant
@cloudconsultant 4 дня назад
😂 testing = the happy path works most of the time
@samvarcoe
@samvarcoe 4 дня назад
This was a really good video, thanks Dave. You've talked about all of these things before but it was definitely worth going over them again, this was really well packaged and presented.
@ContinuousDelivery
@ContinuousDelivery 3 дня назад
Glad you enjoyed it!
@logiciananimal
@logiciananimal 4 дня назад
Pentester etc. here - I describe my work in application layer pentesting as "acceptance testing in reverse". I guess this is sort of like how antimatter is matter in a broad sense. Instead of looking to see that it does what it should I focus on whether or not an application (or API, etc.) does what it shouldn't. I thus agree largely with this taxonomy. I would like, however, to see if TDD reduces confirmation bias. Done right - without focus on implementation etc. I would hazard a guess that it does. I mention this because I have long wondered whether or not unit testing (however useful) might provoke confirmation bias.
@DavidParry-Hacker
@DavidParry-Hacker 4 дня назад
This rocked and loved how you hit on the 2 most important tests at the end with solid reasoning.
@rasmichael
@rasmichael 3 дня назад
Manual testing has its place, certainly if you are developing anything that will be subjected to humans in production. If you don't let humans test then the customer will do that for you. With predictable outcome...
@sirskaro3581
@sirskaro3581 3 дня назад
Dave, this was an excellent video and very encouraging to me because it has very similar content to what I preach almost daily at my work. I've been labeled as the automated testing expert in my department - which I feel like is being labeled as an expert in breathing. I really like your list and plan on updating my testing evangelist slide decks with your ideas. One thing I'd like point out that I often start with in my slides is that I feel there are many ways to define what a "type" of test is. E.g., black box v. white box are types by methodology while Marick's quadrants are types based on function and yours are based off purpose. Perhaps I'm off course about this but I'm interested to hear your thoughts about this idea. I've been experimenting lately with in-memory test doubles as part of my acceptance tests. So far I've found that they give me lots more confidence even though it doesn't add much code coverage and doesn't really exercise more of my code than if I use stubs. I'd be interested to hear more of what you think about heavier use of test doubles.
@ContinuousDelivery
@ContinuousDelivery 3 дня назад
For Acceptance Testing I tend to use "Test Doubles" at the edges of the system under test, where it breaks out and interacts with external systems, systems that are owned, developed, deployed & usually tested, by other people outside of our team. Then we can fake those interactions. I go into a lot of detail on this in my paid-for training on ATDD, courses.cd.training/pages/acceptance-testing but there is also this free video... ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-QFCHSEHgqFE.html
@oliverglier8605
@oliverglier8605 3 дня назад
Thank you for this nice overview and explanation. I also like healthchecks which perform expensive consistency tests for stored data and program behavior. A great deal of problems can be discoved befor currupted data spreads throughout the system. Secondly, I am fond of defensive programming by assertions and contracts. Contracts and assertions add so much clarity to the code. They allow errors to be discovered after release, and they allow (some) integration tests to become more like end-to-end tests. They are a prestep to provable correctness, and they bring their own complexity challenges (sometimes an assertion simply cannot afford a proportional amount of time).
@aurinator
@aurinator 21 час назад
Types of testing: Unit Tests 2:12 Acceptance Tests 5:50 - How they can be considered as synonymous-ish with Integration Tests from the Testing Pyramid 12:58 Approval Tests 13:44 Manual Tests 15:37
@chat-1978
@chat-1978 3 дня назад
From my experience * unit testing offers the most cake value when later someone modifies code. I've never understood or mastered TDD because it feels that it works against agility and requires a lot of planning. * A different/better way of understanding acceptance tests. Interesting remarks as well. Usually it's the customer who signs off but i like this one more. * From my experience the only automated tests that matter are unit and smoke tests. Smoke tests cover a lot of other tests including performance. I also like stress tests to validate and measure the tolerances of the architecture. * Most niche products can't do automation tests unfortunately. * I've always valued the idea that qa is not done by devs. Certainly for manual testing. With automation it gets a bit blurry because now the tester thinks like a programmer and brings those biases in, while the qa represents the moon power user.
@FlaviusAspra
@FlaviusAspra День назад
Unit test is best done at the boundary of the domain model, as to not tie the tests to implementation details of the model.
@SpecialK845
@SpecialK845 4 дня назад
In theory - having no manual regression testing is possible and would be great. In reality - businesses rarely properly invest in automated testing, meaning the test automation goes in to a backlog rather then being developed before the features are implemented like suggested with acceptance tests. Also manual regression testing is repeatable. That’s why there are manual test cases created and the important ones are placed in to regression suite once tested in a sprint.
@oliverglier8605
@oliverglier8605 3 дня назад
Hi, I think you are right but wouldn't you agree there should be professional standards which should not need being discussed with other stakeholders? One of the biggest problem of our industry, I think, are programmers failing to speak up for themselves.
@SpecialK845
@SpecialK845 3 дня назад
@@oliverglier8605 Agree 100%. Good communication and dev skills is a combo in today’s tech industry!
@ContinuousDelivery
@ContinuousDelivery 3 дня назад
They aren't as repeatable as automated tests, not even close. Humans have off-days, forget things, and get distracted all the time. One of the most expensive software failures of all time, the Knight Capital disaster, where they mis-traded $2.5 billion in shares in 45 minutes and went bankrupt as a result of the poor repeatability of humans.
@SpecialK845
@SpecialK845 3 дня назад
@@ContinuousDelivery I agree with you that manual testing isn’t a fail safe method - but I’d say it depends on the software. I see where you’re coming from for a trading application, agree that it doesn’t make sense to have manual testing cos of the amount of variability a human can’t cover. My point is that 100% automated regression test solution doesn’t apply to every piece software, for example a web app, it won’t be sustainable or reliable due to ongoing changes in the UI. Another recent example is Crowdstrike - if their release process involved one minutes of manual testing (by booting up a windows machine with the new patch), they would have caught that issue. That decision costs ~$5.4B overall for all business (according to Guardian).
@chakala2149
@chakala2149 2 дня назад
But Dave aren't integration tests useful for testing integration points such as gateway classes and repositories? I always think about Integration Tests as testing my ''understanding and usage'' of external dependencies.
@JayBazuzi
@JayBazuzi 4 дня назад
Static Analysis is an important category that I want to include in your list of test types.
@travisabrahamson8864
@travisabrahamson8864 4 дня назад
One way I use Integration Tests is to learn about external to the app dependencies. Such as an Rest API. Here I can add tests to assure that when my app calls that API I get an expected response from the API. It helps isolate and quickly troubleshoot when a response I'm expecting does not occur from that API.
@timmartin325
@timmartin325 День назад
TRIMS is a good mnemonic for value in test automation; Targeted at risk, reliable, informative, maintainable and speedy. It's very easy and common to create automated tests without much value that do not fulfill these criteria very well. The risk here is especially high when creating automated UI tests as UI's are notoriously slow and flaky in this context.
@subbamaggus1
@subbamaggus1 3 дня назад
hey, i recently started a new job. i follow you for quite a while now. the tool they use is completely new to me. the setup is quite different to what i have seen before. it is a rich client application with a database in the back. the core is developed in smalltalk and is basically a black box. the part that is customizable will be done in a "basic" Derivate (vendors own implementation). and the code is stored in the database. since the tool will be used in regulatory environments, every change is tracked in the db. if you want to run the code it needs to be published. the ide and debugger is integrated in the application. (and not fun to work with) source code management is not really existing. auto completion code beautifying as well. what the team did to use some scm features is to export the routines stored in the db and checking it into a git repo. test framework? not existing. deployment to production? half manually. so i would like to start a test framework, small steps... would you have any recommendations where to start?
@ContinuousDelivery
@ContinuousDelivery 3 дня назад
I think that my top priority would to get some kind of version control in-place. Assuming you are back-fill testing, then I'd start with "Automated Acceptance Testing" as it is easier to retro-fit to pre-existing code. I have a video that talks about where to start with legacy systems... ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-_gs3MjJBEfs.html
@subbamaggus1
@subbamaggus1 3 дня назад
@@ContinuousDelivery thank you for your response! what is in place: export of that one table (that holds all the "basic" routines), export each line to a separate file. So for each "function" there is an export, which is automatically commited to a git. With that there is a kind of version control... unfortunately this is not done for all parts. and there are even parts that are not easy to handle. cost/benefit is not worth it for management. i will rewatch the video in that context! thank you for the suggestion about automated acceptance testing. I will try to see what is possible with the tool. You would be surprised how legacy that tool is ;-) giving the fact that they claim to be market leader ;-)
@subbamaggus1
@subbamaggus1 3 дня назад
the first thought was: implement a "header" to generate a documentation "doxygen like" this was declined since it would effect all routines (and this was only in the comments!)
@riesigerriese666
@riesigerriese666 4 дня назад
Thank you, Dave. As usual very dry and straight to the point. I admire your patience explaining the same things again and again and again and again, tirelessly. I'm so fed up explaining to my team mates that unit tests are way better when written first. They say: yeah, I'll do it later. And then they complain that my tickets take too long. Cause I've got to write all the missing tests first, before I can make my change. 😮
@alienbacterium8518
@alienbacterium8518 4 дня назад
Thanks!
@MismaSilfver
@MismaSilfver 4 дня назад
Farley here presents his "pyramid" of: unit tests, acceptance tests and tactical tests. As an example of tactical tests are approval tests. They compare subsequent runs results to first run and visual testing would be part of that. But I somehow did not pick up fully what Farley means with tactical tests. Could someone elaborate on that for me?
@samvarcoe
@samvarcoe 4 дня назад
I believe that the idea is that there are supplementary tests that you might want to do in addition to your automated acceptance tests to help catch problems earlier and improve the overall efficiency of your process. As an example, imagine you have a service in your test environment that is unstable and it regularly makes your acceptance test run results unusable. It might be a good idea to test that the service is up or that your system is properly integrated with it before running your full test suite even though the integration is already fully tested by your acceptance tests. That way you can alert on the problem early and save the expense of running the full test suite. These tests are 'tactical' because they don't give you additional confidence in your own work or the user facing behaviour but they do provide value by saving the team time / effort
@MismaSilfver
@MismaSilfver 3 дня назад
@@samvarcoe ah thank you for taking time to chime in, thank you ! Makes sense!
@d3stinYwOw
@d3stinYwOw 4 дня назад
What do you think about simulation testing, one of the more novel approaches to testing, spearheaded by TigerBeetle and Turso?
@weftw1se
@weftw1se 3 дня назад
Fuzzing has been around for decades in the hardware and embedded systems world. At best they introduced the technique to databases.
@d3stinYwOw
@d3stinYwOw 3 дня назад
@@weftw1se It's not exactly the same as fuzzing, because here your environment is strictly controlled and deterministic.
@weftw1se
@weftw1se 3 дня назад
@@d3stinYwOw you are still just describing fuzzing. Maybe a terrible implementation of fuzzing would not allow you to specify a seed value but every fuzzer I have worked with has allowed this.
@ContinuousDelivery
@ContinuousDelivery 3 дня назад
I think all good testing is a form of "simulation testing" 😉
@d3stinYwOw
@d3stinYwOw 2 дня назад
@@ContinuousDelivery In some kind, yes, but does it put your system under simulation of a real world workloads? I highly recommend checking out tigerbeetle simulation page, great stuff :)
@petropzqi
@petropzqi 4 дня назад
Well put together, thx
@kriz5652
@kriz5652 День назад
Testing is for bad programmers!! Hey Dave show us your code i think you never write a complete working software by you own
@ytano5782
@ytano5782 4 дня назад
Testing is only a fancy word for compiling.
@ContinuousDelivery
@ContinuousDelivery 3 дня назад
I suppose that depends what you mean, if you mean testing should be as widely used as 'compiling' then I agree, but if you mean 'compiling is enough' then clearly not. I can easily write code that does the wrong things, but that still compiles.
@ytano5782
@ytano5782 3 дня назад
@@ContinuousDelivery This was a joke
@aming-cc4pp
@aming-cc4pp 4 дня назад
Awesome
Далее
Microservices explained - the What, Why and How?
18:30
Просмотров 876 тыс.
Бокс - Финты Дмитрия Бивола
00:31
3 Key Version Control Mistakes (HUGE STEP BACKWARDS)
15:08
Why Software Estimations Are Always Wrong
14:22
Просмотров 53 тыс.
TDD Is A BROKEN Practice
17:14
Просмотров 31 тыс.
Event Driven Architecture EXPLAINED in 15 Minutes
14:55
The ANNOYING Truth About Technical Interviews in 2024
11:46
Cynefin Is A GAMECHANGER For Software Developers
16:49