Testing Blog

Testing on the Toilet: Cleanly Create Test Data

terça-feira, fevereiro 20, 2018
Share on Twitter Share on Facebook
Google
Etiquetas: Ben Yu , TotT

7 comentários :

  1. Anónimo21 de fevereiro de 2018 às 06:38:00 GMT-8

    So, we don't set defaults? Your advice seems contradictory there.

    ResponderEliminar
    Respostas
      Responder
  2. Anónimo21 de fevereiro de 2018 às 15:09:00 GMT-8

    No. Set defaults, but make your test set those same values if it cares about that particular value. It's about making your test inputs easy to create but not relying on that state in the test itself. Basically, you should be able to change the defaults at any time for any reason to anything and your tests should still pass.

    ResponderEliminar
    Respostas
    1. Eduardo Riol12 de março de 2018 às 07:58:00 GMT-7

      I think it would be better not setting defaults in order to force developers to explicitly set values in their tests.

      We don't want to make our tests robust, but our production code, if you know what I mean...

      Eliminar
      Respostas
        Responder
    2. Responder
  3. aaron19 de março de 2018 às 09:07:00 GMT-7

    It seems valid to initialize the object with sensible values and then explicitly re-declare the things you care about in the body of the test.

    Do you have recommendations on techniques for handling the case of inadvertent inclusion? Ie, the test inadvertently becomes dependent on a default unintentionally. ("oh yeah, this is always initialized to , so ...")

    Perhaps some sort of "change every default/inverse" antimatter test object to validate you're not depending on the defaults. Bonus would be getting to include "antiMatter[inputName]" as test code.

    ResponderEliminar
    Respostas
    1. Kalon12 de novembro de 2019 às 21:08:00 GMT-8

      What we do is create defaults that would normally be 'good' results or uninteresting golden path tests, and then allow tests to add nondefaults when they want to test the variation of the behavior. This allows for the tests to be very clear on what is changing and why with a minimum of repetition. You can easily see what input is changing and what matters.

      Eliminar
      Respostas
        Responder
    2. Responder
  4. FC20 de março de 2018 às 08:46:00 GMT-7

    I think the point here is if we have defaults that influence the test outcome we should at least make this visible to the testing framework users. Not simply hiding it under the hood.
    E.g. Lets say that Company behavior is influenced by its number of employees (small, medium, big, being small less than 6).
    You could then include some knowledge in the method names of where you create the builder.

    private static Company.Builder newCompanyForSmallNumberOfEmpoyees() {
    return Company.newBuilder().setType(PUBLIC).setEmployees(5); // Set required fields
    }

    On usage:
    Company smallCompany = newCompanyForSmallNumberOfEmpoyees().build();

    ResponderEliminar
    Respostas
      Responder
  5. Sheroz15 de março de 2022 às 05:34:00 GMT-7

    What would you recommend in case of Kotlin's default parameters?
    Is having build pattern still beneficial?

    ResponderEliminar
    Respostas
      Responder
Adicionar comentário
Carregar mais...

The comments you read and contribute here belong only to the person who posted them. We reserve the right to remove off-topic comments.

  

Labels


  • TotT 114
  • GTAC 61
  • James Whittaker 42
  • Misko Hevery 32
  • Code Health 31
  • Anthony Vallone 27
  • Patrick Copeland 23
  • Jobs 18
  • Andrew Trenk 13
  • C++ 11
  • Patrik Höglund 8
  • JavaScript 7
  • Allen Hutchison 6
  • George Pirocanac 6
  • Zhanyong Wan 6
  • Harry Robinson 5
  • Java 5
  • Julian Harty 5
  • Adam Bender 4
  • Alberto Savoia 4
  • Ben Yu 4
  • Erik Kuefler 4
  • Philip Zembrod 4
  • Shyam Seshadri 4
  • Chrome 3
  • Dillon Bly 3
  • John Thomas 3
  • Lesley Katzen 3
  • Marc Kaplan 3
  • Markus Clermont 3
  • Max Kanat-Alexander 3
  • Sonal Shah 3
  • APIs 2
  • Abhishek Arya 2
  • Alan Myrvold 2
  • Alek Icev 2
  • Android 2
  • April Fools 2
  • Chaitali Narla 2
  • Chris Lewis 2
  • Chrome OS 2
  • Diego Salas 2
  • Dori Reuveni 2
  • Jason Arbon 2
  • Jochen Wuttke 2
  • Kostya Serebryany 2
  • Marc Eaddy 2
  • Marko Ivanković 2
  • Mobile 2
  • Oliver Chang 2
  • Simon Stewart 2
  • Stefan Kennedy 2
  • Test Flakiness 2
  • Titus Winters 2
  • Tony Voellm 2
  • WebRTC 2
  • Yiming Sun 2
  • Yvette Nameth 2
  • Zuri Kemp 2
  • Aaron Jacobs 1
  • Adam Porter 1
  • Adam Raider 1
  • Adel Saoud 1
  • Alan Faulkner 1
  • Alex Eagle 1
  • Amy Fu 1
  • Anantha Keesara 1
  • Antoine Picard 1
  • App Engine 1
  • Arham Jain 1
  • Ari Shamash 1
  • Arif Sukoco 1
  • Bartosz Papis 1
  • Benjamin Pick 1
  • Bob Nystrom 1
  • Bruce Leban 1
  • Carlos Arguelles 1
  • Carlos Israel Ortiz García 1
  • Cathal Weakliam 1
  • Chris Kennelly 1
  • Christopher Semturs 1
  • Clay Murphy 1
  • Dagang Wei 1
  • Dan Maksimovich 1
  • Dan Shi 1
  • Dan Willemsen 1
  • Dave Chen 1
  • Dave Gladfelter 1
  • David Bendory 1
  • David Mandelberg 1
  • Derek Snyder 1
  • Diego Cavalcanti 1
  • Dmitry Vyukov 1
  • Eduardo Bravo Ortiz 1
  • Ekaterina Kamenskaya 1
  • Elliott Karpilovsky 1
  • Elliotte Rusty Harold 1
  • Espresso 1
  • Felipe Sodré 1
  • Francois Aube 1
  • Gene Volovich 1
  • Google+ 1
  • Goran Petrovic 1
  • Goranka Bjedov 1
  • Hank Duan 1
  • Havard Rast Blok 1
  • Hongfei Ding 1
  • Jason Elbaum 1
  • Jason Huggins 1
  • Jay Han 1
  • Jeff Hoy 1
  • Jeff Listfield 1
  • Jessica Tomechak 1
  • Jim Reardon 1
  • Joe Allan Muharsky 1
  • Joel Hynoski 1
  • John Micco 1
  • John Penix 1
  • Jonathan Rockway 1
  • Jonathan Velasquez 1
  • Josh Armour 1
  • Julie Ralph 1
  • Kai Kent 1
  • Kanu Tewary 1
  • Karin Lundberg 1
  • Kaue Silveira 1
  • Kevin Bourrillion 1
  • Kevin Graney 1
  • Kirkland 1
  • Kurt Alfred Kluever 1
  • Kyle Freeman 1
  • Manjusha Parvathaneni 1
  • Marek Kiszkis 1
  • Marius Latinis 1
  • Mark Ivey 1
  • Mark Manley 1
  • Mark Striebeck 1
  • Matt Lowrie 1
  • Meredith Whittaker 1
  • Michael Bachman 1
  • Michael Klepikov 1
  • Mike Aizatsky 1
  • Mike Wacker 1
  • Mona El Mahdy 1
  • Nimit Khandelwal 1
  • Noel Yap 1
  • Palak Bansal 1
  • Patricia Legaspi 1
  • Per Jacobsson 1
  • Peter Arrenbrecht 1
  • Peter Spragins 1
  • Phil Norman 1
  • Phil Rollet 1
  • Pooja Gupta 1
  • Project Showcase 1
  • Radion Khait 1
  • Radoslav Vasilev 1
  • Rahul Singal 1
  • Rajat Dewan 1
  • Rajat Jain 1
  • Rich Martin 1
  • Richard Bustamante 1
  • Roman Govsheev 1
  • Roshan Sembacuttiaratchy 1
  • Ruslan Khamitov 1
  • Saicharan Nimmala 1
  • Sam Lee 1
  • Sean Jordan 1
  • Sebastian Dörner 1
  • Shahar Roth 1
  • Sharon Zhou 1
  • Shiva Garg 1
  • Siddartha Janga 1
  • Simran Basi 1
  • Stan Chan 1
  • Stephen Ng 1
  • Tejas Shah 1
  • Test Analytics 1
  • Test Engineer 1
  • Tim Lyakhovetskiy 1
  • Tom O'Neill 1
  • Vojta Jína 1
  • Zhe Lu 1
  • automation 1
  • dead code 1
  • iOS 1
  • mutation testing 1


Archive


  • ►  2026 (8)
    • ►  out. (1)
    • ►  jul. (1)
    • ►  jun. (1)
    • ►  mai. (2)
    • ►  abr. (1)
    • ►  mar. (2)
  • ►  2025 (3)
    • ►  out. (1)
    • ►  set. (1)
    • ►  jan. (1)
  • ►  2024 (13)
    • ►  dez. (1)
    • ►  out. (1)
    • ►  set. (1)
    • ►  ago. (1)
    • ►  jul. (1)
    • ►  mai. (3)
    • ►  abr. (3)
    • ►  mar. (1)
    • ►  fev. (1)
  • ►  2023 (14)
    • ►  dez. (2)
    • ►  nov. (2)
    • ►  out. (5)
    • ►  set. (3)
    • ►  ago. (1)
    • ►  abr. (1)
  • ►  2022 (2)
    • ►  fev. (2)
  • ►  2021 (3)
    • ►  jun. (1)
    • ►  abr. (1)
    • ►  mar. (1)
  • ►  2020 (8)
    • ►  dez. (2)
    • ►  nov. (1)
    • ►  out. (1)
    • ►  ago. (2)
    • ►  jul. (1)
    • ►  mai. (1)
  • ►  2019 (4)
    • ►  dez. (1)
    • ►  nov. (1)
    • ►  jul. (1)
    • ►  jan. (1)
  • ▼  2018 (7)
    • ►  nov. (1)
    • ►  set. (1)
    • ►  jul. (1)
    • ►  jun. (2)
    • ►  mai. (1)
    • ▼  fev. (1)
      • Testing on the Toilet: Cleanly Create Test Data
  • ►  2017 (17)
    • ►  dez. (1)
    • ►  nov. (1)
    • ►  out. (1)
    • ►  set. (1)
    • ►  ago. (1)
    • ►  jul. (2)
    • ►  jun. (2)
    • ►  mai. (3)
    • ►  abr. (2)
    • ►  fev. (1)
    • ►  jan. (2)
  • ►  2016 (15)
    • ►  dez. (1)
    • ►  nov. (2)
    • ►  out. (1)
    • ►  set. (2)
    • ►  ago. (1)
    • ►  jun. (2)
    • ►  mai. (3)
    • ►  abr. (1)
    • ►  mar. (1)
    • ►  fev. (1)
  • ►  2015 (14)
    • ►  dez. (1)
    • ►  nov. (1)
    • ►  out. (2)
    • ►  ago. (1)
    • ►  jun. (1)
    • ►  mai. (2)
    • ►  abr. (2)
    • ►  mar. (1)
    • ►  fev. (1)
    • ►  jan. (2)
  • ►  2014 (24)
    • ►  dez. (2)
    • ►  nov. (1)
    • ►  out. (2)
    • ►  set. (2)
    • ►  ago. (2)
    • ►  jul. (3)
    • ►  jun. (3)
    • ►  mai. (2)
    • ►  abr. (2)
    • ►  mar. (2)
    • ►  fev. (1)
    • ►  jan. (2)
  • ►  2013 (16)
    • ►  dez. (1)
    • ►  nov. (1)
    • ►  out. (1)
    • ►  ago. (2)
    • ►  jul. (1)
    • ►  jun. (2)
    • ►  mai. (2)
    • ►  abr. (2)
    • ►  mar. (2)
    • ►  jan. (2)
  • ►  2012 (11)
    • ►  dez. (1)
    • ►  nov. (2)
    • ►  out. (3)
    • ►  set. (1)
    • ►  ago. (4)
  • ►  2011 (39)
    • ►  nov. (2)
    • ►  out. (5)
    • ►  set. (2)
    • ►  ago. (4)
    • ►  jul. (2)
    • ►  jun. (5)
    • ►  mai. (4)
    • ►  abr. (3)
    • ►  mar. (4)
    • ►  fev. (5)
    • ►  jan. (3)
  • ►  2010 (37)
    • ►  dez. (3)
    • ►  nov. (3)
    • ►  out. (4)
    • ►  set. (8)
    • ►  ago. (3)
    • ►  jul. (3)
    • ►  jun. (2)
    • ►  mai. (2)
    • ►  abr. (3)
    • ►  mar. (3)
    • ►  fev. (2)
    • ►  jan. (1)
  • ►  2009 (54)
    • ►  dez. (3)
    • ►  nov. (2)
    • ►  out. (3)
    • ►  set. (5)
    • ►  ago. (4)
    • ►  jul. (15)
    • ►  jun. (8)
    • ►  mai. (3)
    • ►  abr. (2)
    • ►  fev. (5)
    • ►  jan. (4)
  • ►  2008 (75)
    • ►  dez. (6)
    • ►  nov. (8)
    • ►  out. (9)
    • ►  set. (8)
    • ►  ago. (9)
    • ►  jul. (9)
    • ►  jun. (6)
    • ►  mai. (6)
    • ►  abr. (4)
    • ►  mar. (4)
    • ►  fev. (4)
    • ►  jan. (2)
  • ►  2007 (41)
    • ►  out. (6)
    • ►  set. (5)
    • ►  ago. (3)
    • ►  jul. (2)
    • ►  jun. (2)
    • ►  mai. (2)
    • ►  abr. (7)
    • ►  mar. (5)
    • ►  fev. (5)
    • ►  jan. (4)

Feed

  • Google
  • Privacy
  • Terms