Testing Blog

Testing on the Toilet: Avoid Hardcoding Values for Better Libraries

quarta-feira, agosto 19, 2020
Share on Twitter Share on Facebook
Google
Etiquetas: Adel Saoud , TotT

7 comentários :

  1. Anónimo19 de agosto de 2020 às 19:09:00 GMT-7

    Ironically, you've omitted their value for testing :P. Default arguments also make it super easy to test typical usage, as well as all the weird edge cases.

    ResponderEliminar
    Respostas
    1. Adel20 de agosto de 2020 às 09:28:00 GMT-7

      Thanks for your message! I'm not sure I understand what you mean by "omitted their value for testing", so feel free to elaborate!

      Yes exactly! Default arguments make it easy for the function callers to use your function, but they also allow for the use & unit testing of a wide range of values & edge cases.

      Eliminar
      Respostas
        Responder
    2. Husain Alshehhi21 de agosto de 2020 às 12:24:00 GMT-7

      He meant that this refactor enables for easy testing, compared to having hardcoded value inside the class. (this is a test blog after all:)

      Eliminar
      Respostas
        Responder
    3. Responder
  2. Karlo Smid20 de agosto de 2020 às 04:59:00 GMT-7

    Hi Adel, thank you for this post.

    I know that this is an example, but that size value should be checked in function body. This is usual pattern in introducing security bugs in C/C++, when we allow user of our function to set size of something.

    Regards, Karlo.

    ResponderEliminar
    Respostas
    1. Adel20 de agosto de 2020 às 09:34:00 GMT-7

      Hi Karlo, you're absolutely right! Validating user input is a very important part of any code, but we've omitted it in our examples above to keep the code slim & focused on our discussed topic.

      Eliminar
      Respostas
        Responder
    2. Responder
  3. Igor Ganapolsky20 de agosto de 2020 às 07:36:00 GMT-7

    When is it a good idea to use constant fields in a class, then?

    ResponderEliminar
    Respostas
    1. Adel20 de agosto de 2020 às 09:49:00 GMT-7

      Good question, Igor! We're actually not advocating against constants in classes, those have their use cases for sure.

      For example, the const & function in the example in red are quite OK if they're defined in your own class that is only used by your project where the logic is specific & never/rarely changes. That code becomes an issue though, for the reasons discussed in the post, if it's part of a public code library accessible to many other engineers & projects where it should cater for a wide variety of use cases & values.

      I hope that clarifies things!

      Eliminar
      Respostas
        Responder
    2. Responder
Adicionar comentário
Carregar mais...

Não são permitidos novos comentários.

  

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)
      • Testing on the Toilet: Avoid Hardcoding Values for...
      • Code Coverage Best Practices
    • ►  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)
  • ►  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