![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
So, if you think you call a function in your code, and this function returns current time, or a random number... IT'S NOT A FUNCTION. Your code is function of "random number", or "time".
So, if your code is written as something that retrieves this kind of data, to test your code, you should provide that data. Not just today, but try the time, like 10 years from now. As to "random", You provide the randomness. If your code cannot be fixed to behave as a function of those inputs, make your "random stream" or "time stream" not hard-coded, but substitutable. Mockable. And mock it in your tests. MAKE SURE that you don't provide just happy-path data. Provide anything. A sequence of 100 numbers 4 for random. Time that is 10 years from now. Or even 30 yeas from now.
Make sure that your tests don't depend on anything. Because test Must Be Reproducible.
All these things, I know, are obvious to some, and not obvious to others.
So, if your code is written as something that retrieves this kind of data, to test your code, you should provide that data. Not just today, but try the time, like 10 years from now. As to "random", You provide the randomness. If your code cannot be fixed to behave as a function of those inputs, make your "random stream" or "time stream" not hard-coded, but substitutable. Mockable. And mock it in your tests. MAKE SURE that you don't provide just happy-path data. Provide anything. A sequence of 100 numbers 4 for random. Time that is 10 years from now. Or even 30 yeas from now.
Make sure that your tests don't depend on anything. Because test Must Be Reproducible.
All these things, I know, are obvious to some, and not obvious to others.
If you still have questions, ask. But don't argue. Because what I say is math. Unless you have another math (some people do), or another logic (there's plenty of them), please don't argue.
I'd be glad to see how all this changes if logic is e.g. linear.
How to test nondeterministic functions
Date: 2020-08-24 05:52 pm (UTC)What you describe as "FUNCTION", is usually called "deterministic function".
~~~~~~~~~~
https://www.google.com/search?q=deterministic+function
Deterministic functions always return the same result any time they are called with a specific set of input values and given the same state of the database.
~~~~~~~~~~
Why did you chose using non-standard "function" label for "deterministic function" concept?
> So, if your code is written as something that retrieves this kind of data, to test your code, you should provide that data.
Not necessarily.
It depends on what exactly we are testing.
For example, if it is sufficient for us to test that nondeterministic function output contains specific phrase that does not depend on random input -- why should we provide random data to that test?
> Make sure that your tests don't depend on anything.
Test that does not depend on anything - does not test production code.
Do you use non-standard definition of word "anything" or phrase "don't depend"?
Re: How to test nondeterministic functions
Date: 2020-08-24 06:23 pm (UTC)Oh, you found some idiots and their opinions. Congratulations.
Re: How to test nondeterministic functions
Date: 2020-08-24 08:14 pm (UTC)Re: How to test nondeterministic functions
Date: 2020-08-24 09:22 pm (UTC)People that are clueless regarding what is function.
Re: How to test nondeterministic functions
Date: 2020-08-24 09:39 pm (UTC)Re: How to test nondeterministic functions
Date: 2020-08-24 10:49 pm (UTC)You won't understand my answer. That's one of the signs.
"Idiots" sign
Date: 2020-08-24 11:24 pm (UTC)Re: "Idiots" sign
Date: 2020-08-24 11:40 pm (UTC)As if I care.
Whom here do you understand, name one.
Re: "Idiots" sign
Date: 2020-08-24 11:49 pm (UTC)I understand almost everyone, including you.
It is your [incorrect] opinion that I do not understand you.
But most of the time I do understand. I just do not always agree.
Or, sometimes, I misunderstand. But, most of the time, I understand correctly.
Re: "Idiots" sign
Date: 2020-08-25 01:23 am (UTC)No, you did not.
Sings of understanding
Date: 2020-08-25 03:24 pm (UTC)Re: Sings of understanding
Date: 2020-08-25 04:24 pm (UTC)You won't understand my answer either.
Re: Sings of understanding
From:Re: Sings of understanding
From:The book
From:Re: The book
From:Re: The book
From:Re: The book
From:Re: The book
From:Re: How to test nondeterministic functions
Date: 2020-08-25 07:20 am (UTC)Is "nondeterministic function" a useful concept
Date: 2020-08-25 04:01 pm (UTC)Your observation is incorrect.
https://www.google.com/search?q=%22deterministic+function%22
About 451,000 results
https://www.google.com/search?q=%22deterministic+function%22+-sql
About 524,000 results
Google's search count estimates are a bit weird here, but the main point is that there are plenty of "deterministic function" results with the word "SQL" in it.
> Even the second best result - google corrected the term to "deterministic algorithm"
It looks like you forgot to add quotes around "deterministic algorithm" in your search.
Re: Is "nondeterministic function" a useful concept
Date: 2020-08-25 05:58 pm (UTC)But in the end if you understood the substance of what juan gandhi said, bickering about the term is pointless. And if you did not understand the substance, bickering about the term is shallow.
Re: Is "nondeterministic function" a useful concept
Date: 2020-08-25 06:36 pm (UTC)I am not "bickering". I have a very specific question.
Such as -- why use more ambiguous term "function" instead of more specific and very searchable "deterministic function"?
Re: Is "nondeterministic function" a useful concept
Date: 2020-08-25 06:39 pm (UTC)Math uses terms. What people on the internets say, does not matter. Your opinion, e.g., does not matter. My neither.
Re: Is "nondeterministic function" a useful concept
Date: 2020-08-25 06:50 pm (UTC)True, but irrelevant to discussion about testing in programming.
> What people on the internets say, does not matter.
That is incorrect.
What people say on the internets -- matter, at least, to some degree.
> Your opinion, e.g., does not matter. My neither.
These are also incorrect statements.
Our opinions do matter.
Re: Is "nondeterministic function" a useful concept
Date: 2020-08-25 07:10 pm (UTC)I would rather you answered whether you understood the substance of the post.
If I cared.
Re: Is "nondeterministic function" a useful concept
Date: 2020-08-25 07:19 pm (UTC)If that specific question help to clarify the opponent's position -- then it is not bickering.
> whether you understood the substance of the post
What post?
Re: Is "nondeterministic function" a useful concept
Date: 2020-08-26 10:30 am (UTC)It doesn't look like you have anything of substance to say.
Usage of term "deterministic function"
Date: 2020-08-26 01:04 pm (UTC)Are you implying that you did not write "No one outside SQL community uses that term."?
Sweeping the uncomfortable facts under the carpet
Date: 2020-08-26 01:22 pm (UTC)But then who would expect an admission that yes, the term appears to be SQL-only and doesn't really cut it as a serious objection to the use of a certain well-established term. Diversion is so much easier to play.
Misunderstanding question
Date: 2020-08-26 02:48 pm (UTC)> I am not implying, I am plain telling you that you haven't even read what you've found
You did not really answer my question here.
I asked you about "No one outside SQL community uses that term" statement, not about me reading or finding something.
Did you misunderstand my question or did you pretend to misunderstand it?
> Diversion is so much easier to play.
Is that what you are doing? Diversion?
Re: "то есть" trick
Date: 2020-08-26 03:45 pm (UTC)I am not inclined to answer your questions because you are not inclined to answer mine. Although by saying this I've just answered one of yours.
> Is that what you are doing?
This is a "то есть" trick of yours, so the best I can do is ignore.
Expecting answers to unasked questions
From:Re: Expecting answers to unasked questions
From:Re: Expecting answers to unasked questions
From:Re: "то есть" trick
From: