Test-Driven Development with Joshua Greene and Michael Katz


Episode Artwork
1.0x
0% played 00:00 00:00
Jun 15 2019 47 mins  

Guests

Book - iOS Test Driven Development

Links

Previous Episodes

Show Notes

The Components of Test-Driven Development

  • Keep Your Iterations Small
  • Test First
  • Circular Progress of Testing and Developing Functionality
  • Avoid Testing other APIs (i.e. Integration Testing)
  • Use Mock Data for Outside Dependencies
  • Behavioral Driven Development vs XCTest

How to Encourage TDD in Your Team and Company

  • Make sure Maintainability and Specs are Met
  • Prevent Regressions with New Features
  • Regular Code Reviews
  • Tests Should Be Required Before Deployment
  • Encourage a Culture of Testing
  • Slow Add Tests to Projects Missing Them

Common Mistakes When Doing Test Driven Development

  • Following the Golden Pathand not testing edge cases and errors
  • Following Test Coverage too strictly or not enough
  • Use Multiple Test Targets
  • Write Tests First

For Experimenting with New APIs

  • Use Spike Solutions to Experiment
  • Write Temporary Tests
  • Use Playground to Test Code

Continuous Integration Tools

  • Jenkins
  • Travis-CI
  • CircleCI
  • Xcode Server
  • Fastlane

WWDC and TDD

  • New Performance Tests
  • Test Plan for Xcode
  • SwiftUI, Live Previews, and Modeling

WWDC 2019 - Testing in Xcode

Social Media

Twitter - @brightdigit
Facebook - BrightDigit

Brand New Instagram! - @brightdigit

Full Transcription

Leo Dion (Host): So hey guys, how's it going?

[00:00:01] Michael Katz (Guest): Great. How are you?

[00:00:02] Leo Dion (Host): Good good, just been trying to catch up with WWDC. What's your general thoughts so far.

[00:00:07] Michael Katz (Guest): It seems like this is about the biggest one we've had since they introduced Swift. There's just so much stuff.

[00:00:12] Leo Dion (Host): Yeah, that's exactly what I was thinking especially with the UI changes. So have you started investing money to buy a $1000 stand?

[00:00:20] Michael Katz (Guest): Yeah, I wish. Fortunately at my company, we actually do video editing. We have editing bays already have racks of Mac Pros. So I assume that those will get upgraded with the new machines at the fancy monitor so I can go downstairs and drool over them when I'm not actually. It's working on my MacBook.

[00:00:36] Leo Dion (Host): Yeah, I mean that's the thing about these devices. They're not for developers like there for video editing like massive 3d rendering that kind of stuff and big production companies

[00:00:45] Joshua Greene (Guest): Maybe if you're doing like 3D games or something as a developer. I could see it being really worthwhile but for business or Enterprise type apps it may be a little bit of an overkill which is definitely pretty awesome. But day to day maybe not so much.

[00:00:59] Leo Dion (Host): Yeah, exactly. So if people want to tweet at us or we're also at brightdigit on Twitter at brightdigit on Instagram and Facebook. Let us know your thoughts on WWDC and any thoughts you might have about all the new stuff that's coming out.

[00:01:15] Guys, so apparently you have a book coming out pretty soon. Is that correct? So go ahead and introduce yourselves to let me know a little bit about this book.

[00:01:24] Joshua Greene (Guest): So my name is Joshua Greene. I am a longtime author for RayWenderlich.com

[00:01:30] I've done everything from creating tutorials to books to videos. This is a new project that we're putting together to teach test-driven development it's called iOS Test-Driven Development by Tutorials

[00:01:45] Michael Katz (Guest): And I'm Michael Katz and similar story. I've been with Ray Wenderlich for a number of years and also done books tutorials.

[00:01:53] Spoke at the RW Devcon. Haven't done any screen cast yet, but maybe someday and they are passionate about test-driven development and we both came I think independently to the idea of writing a testing book and editor-in-chief put us together. And here we are most of the way through it.

[00:02:11] Just getting ready to finally finish it up.

[00:02:13] Leo Dion (Host): So test-driven development, I remember once it was like almost more than half decade ago, probably almost 10 years ago, I went to a conference in Chicago and I think it was Bob Martin who gave a talk on test-driven development the idea being like first you write your test and then you write your code.

[00:02:33] Is that kind of the gist of it or what are the components of test-driven development? What exactly does that mean?

[00:02:39] Joshua Greene (Guest): Yeah, definitely writing tests first is definitely a big part of it. Keeping iterations small. I think test-driven development is all about, you know, writing one small thing you write a small test to implement something that you need to get implemented.

[00:02:54] You show the test actually doesn't pass you implement. Whatever code is required to get it the pass and then you verify it passes. And you just repeat this process over and over so that when you finally, you know, got your app out not only have you got all the features written you've got all of the tests that you're going to need alongside it but it's not like you just write all the tests in advance. It's literally a small step by a small step is kind of what makes it different and special.

[00:03:20] Michael Katz (Guest): It's a circle you just go over and over again at a little test and yet add some code to fix that test and you test the next piece and you add the code for that and so on so you're always in lockstep.

[00:03:31] Leo Dion (Host): So the problem I have had with test-driven development and iOS is some of the stuff that is pertaining to like the UI or perhaps like test-driven development, sometimes you have different screen sizes, obviously, you might have to deal with something like core data or networking. How do you overcome tho...