I often notice that people add a "TEST=" line to their changelists
that fix user-invisible bugs like compilation failures, Valgrind
reports or perf regressions.
However our presubmit scripts suggest to add this field if the change
"requires manual test instructions to QA team".
What's the recommended practice of using TEST=?
Is using it in every CL necessary?
Alex
Nico
> --
> Chromium Developers mailing list: chromi...@chromium.org
> View archives, change email options, or unsubscribe:
> http://groups.google.com/a/chromium.org/group/chromium-dev
>
If you don't have a TEST= line, does that mean you don't need tests,
or does it mean that you forgot to add the TEST= line?
TEST=none means that you don't need tests. I've also seen
TEST=waterfall , which seems appropriate for changes which target
waterfall feedback.
-scott
--
Don
On Thu, Oct 20, 2011 at 4:35 AM, Alexander Potapenko> What's the recommended practice of using TEST=?
> Is using it in every CL necessary?If you don't have a TEST= line, does that mean you don't need tests,
or does it mean that you forgot to add the TEST= line?
For compilation failures or performance regressions, the TEST= might
be obvious from the rest of the checkin message, so “TEST=green” or
“TEST=perf graph” might seem redundant. One thing I would like to see,
and that I don’t think people are good enough at doing, is explicitly
stating which checkin caused the problem, which build failed, and
which performance test regressed. Ideally, the checkin message should
contain something that points to a specific buildbot build that
failed. The person who has to unravel your work tomorrow thanks you.
I think BUG= lines are even more important than TEST=, because we
track so many things by bugs. Really, any nontrivial change should
have a BUG=. If you’re fixing a build or performance regression, it’s
OK to recycle the BUG= from the original change that caused the
problem. This helps tie changes together and helps figure out if
subsequent fixes need to be merged to other branches when the original
change was. It also provides a place to set blocking and for
post-commit discussion if a change breaks anything or people have
other concerns. New bugs are cheap and easy to file, and don’t need
much new information—it’s OK to reuse your commit message. Often you
can reuse an existing bug number or file a single bug for related work
that spans multiple check-ins.
--
(I mainly work on Chromium-OS so my view may be slightly different and its possibly CrOS has a different policy).From submitting CL's and responding to reviewer feedback I've always treated the TEST= line as a list of what tests were run. And given that occasionally a CL of mine has a problem or unintended side effect I often notice a few months later, being able to go back and see how I actually tested the bug really helps me in tracking down regression.For example, I made a change to a value in make.conf to enable a feature that wasn't ready to be used. ~1 month later when I tried to use that feature it didn't work. Looking back at my original CL and the test cases I ran it was easy to see why it wasn't working (the tests I'd ran only checked for inclusion of a new value being propagated and didn't realize that the old values got clobbered). If I didn't have this, I'd have spent a lot more time trying to track down and see why it worked when I checked it in but didn't work now.It also seems to me like directions to verify/fix belong in the bug, not the CL. QA is testing based on bugs, I doubt they are trying to individually verify every CL that goes in.
Please see comments lilineOn Mon, Oct 31, 2011 at 7:55 AM, Jonathan Kliegman <kli...@chromium.org> wrote:
(I mainly work on Chromium-OS so my view may be slightly different and its possibly CrOS has a different policy).From submitting CL's and responding to reviewer feedback I've always treated the TEST= line as a list of what tests were run. And given that occasionally a CL of mine has a problem or unintended side effect I often notice a few months later, being able to go back and see how I actually tested the bug really helps me in tracking down regression.For example, I made a change to a value in make.conf to enable a feature that wasn't ready to be used. ~1 month later when I tried to use that feature it didn't work. Looking back at my original CL and the test cases I ran it was easy to see why it wasn't working (the tests I'd ran only checked for inclusion of a new value being propagated and didn't realize that the old values got clobbered). If I didn't have this, I'd have spent a lot more time trying to track down and see why it worked when I checked it in but didn't work now.It also seems to me like directions to verify/fix belong in the bug, not the CL. QA is testing based on bugs, I doubt they are trying to individually verify every CL that goes in.QA has a tool that parses the CL, for every build , and lists all the bugs that have TEST=. QA then verifies those bug fixes(which have steps). TEST= some times have info like... Look at bug for instructions... This is also very helpful. So please use TEST=.
On Mon, Oct 31, 2011 at 11:18 AM, Anantha Keesara <ana...@chromium.org> wrote:Please see comments lilineOn Mon, Oct 31, 2011 at 7:55 AM, Jonathan Kliegman <kli...@chromium.org> wrote:
(I mainly work on Chromium-OS so my view may be slightly different and its possibly CrOS has a different policy).From submitting CL's and responding to reviewer feedback I've always treated the TEST= line as a list of what tests were run. And given that occasionally a CL of mine has a problem or unintended side effect I often notice a few months later, being able to go back and see how I actually tested the bug really helps me in tracking down regression.For example, I made a change to a value in make.conf to enable a feature that wasn't ready to be used. ~1 month later when I tried to use that feature it didn't work. Looking back at my original CL and the test cases I ran it was easy to see why it wasn't working (the tests I'd ran only checked for inclusion of a new value being propagated and didn't realize that the old values got clobbered). If I didn't have this, I'd have spent a lot more time trying to track down and see why it worked when I checked it in but didn't work now.It also seems to me like directions to verify/fix belong in the bug, not the CL. QA is testing based on bugs, I doubt they are trying to individually verify every CL that goes in.QA has a tool that parses the CL, for every build , and lists all the bugs that have TEST=. QA then verifies those bug fixes(which have steps). TEST= some times have info like... Look at bug for instructions... This is also very helpful. So please use TEST=.They list all the bugs that have TEST=? Or all CL's that have TEST=?Sine bugs already have BUG=???? which links to bugs, shouldn't the data on verifying the fix be in the bug?
On Mon, Oct 31, 2011 at 8:28 AM, Jonathan Kliegman <kli...@chromium.org> wrote:On Mon, Oct 31, 2011 at 11:18 AM, Anantha Keesara <ana...@chromium.org> wrote:Please see comments lilineOn Mon, Oct 31, 2011 at 7:55 AM, Jonathan Kliegman <kli...@chromium.org> wrote:
(I mainly work on Chromium-OS so my view may be slightly different and its possibly CrOS has a different policy).From submitting CL's and responding to reviewer feedback I've always treated the TEST= line as a list of what tests were run. And given that occasionally a CL of mine has a problem or unintended side effect I often notice a few months later, being able to go back and see how I actually tested the bug really helps me in tracking down regression.For example, I made a change to a value in make.conf to enable a feature that wasn't ready to be used. ~1 month later when I tried to use that feature it didn't work. Looking back at my original CL and the test cases I ran it was easy to see why it wasn't working (the tests I'd ran only checked for inclusion of a new value being propagated and didn't realize that the old values got clobbered). If I didn't have this, I'd have spent a lot more time trying to track down and see why it worked when I checked it in but didn't work now.It also seems to me like directions to verify/fix belong in the bug, not the CL. QA is testing based on bugs, I doubt they are trying to individually verify every CL that goes in.QA has a tool that parses the CL, for every build , and lists all the bugs that have TEST=. QA then verifies those bug fixes(which have steps). TEST= some times have info like... Look at bug for instructions... This is also very helpful. So please use TEST=.They list all the bugs that have TEST=? Or all CL's that have TEST=?Sine bugs already have BUG=???? which links to bugs, shouldn't the data on verifying the fix be in the bug?This is the whole point of the TEST= line. There are many bugs where it's not clear to QA how to verify correctness (e.g. the bug is hard to reproduce or the language in the bug is just vague).IMO, we should rename it to QA-INSTRUCTIONS and then there would be no confusion.
IMO, we should rename it to QA-INSTRUCTIONS and then there would be no confusion.
On Mon, Oct 31, 2011 at 8:28 AM, Jonathan Kliegman <kli...@chromium.org> wrote:On Mon, Oct 31, 2011 at 11:18 AM, Anantha Keesara <ana...@chromium.org> wrote:Please see comments lilineOn Mon, Oct 31, 2011 at 7:55 AM, Jonathan Kliegman <kli...@chromium.org> wrote:
(I mainly work on Chromium-OS so my view may be slightly different and its possibly CrOS has a different policy).From submitting CL's and responding to reviewer feedback I've always treated the TEST= line as a list of what tests were run. And given that occasionally a CL of mine has a problem or unintended side effect I often notice a few months later, being able to go back and see how I actually tested the bug really helps me in tracking down regression.For example, I made a change to a value in make.conf to enable a feature that wasn't ready to be used. ~1 month later when I tried to use that feature it didn't work. Looking back at my original CL and the test cases I ran it was easy to see why it wasn't working (the tests I'd ran only checked for inclusion of a new value being propagated and didn't realize that the old values got clobbered). If I didn't have this, I'd have spent a lot more time trying to track down and see why it worked when I checked it in but didn't work now.It also seems to me like directions to verify/fix belong in the bug, not the CL. QA is testing based on bugs, I doubt they are trying to individually verify every CL that goes in.QA has a tool that parses the CL, for every build , and lists all the bugs that have TEST=. QA then verifies those bug fixes(which have steps). TEST= some times have info like... Look at bug for instructions... This is also very helpful. So please use TEST=.They list all the bugs that have TEST=? Or all CL's that have TEST=?Sine bugs already have BUG=???? which links to bugs, shouldn't the data on verifying the fix be in the bug?This is the whole point of the TEST= line. There are many bugs where it's not clear to QA how to verify correctness (e.g. the bug is hard to reproduce or the language in the bug is just vague).IMO, we should rename it to QA-INSTRUCTIONS and then there would be no confusion.
On Mon, Oct 31, 2011 at 11:36 AM, Ojan Vafai <oj...@chromium.org> wrote:On Mon, Oct 31, 2011 at 8:28 AM, Jonathan Kliegman <kli...@chromium.org> wrote:On Mon, Oct 31, 2011 at 11:18 AM, Anantha Keesara <ana...@chromium.org> wrote:Please see comments lilineOn Mon, Oct 31, 2011 at 7:55 AM, Jonathan Kliegman <kli...@chromium.org> wrote:
(I mainly work on Chromium-OS so my view may be slightly different and its possibly CrOS has a different policy).From submitting CL's and responding to reviewer feedback I've always treated the TEST= line as a list of what tests were run. And given that occasionally a CL of mine has a problem or unintended side effect I often notice a few months later, being able to go back and see how I actually tested the bug really helps me in tracking down regression.For example, I made a change to a value in make.conf to enable a feature that wasn't ready to be used. ~1 month later when I tried to use that feature it didn't work. Looking back at my original CL and the test cases I ran it was easy to see why it wasn't working (the tests I'd ran only checked for inclusion of a new value being propagated and didn't realize that the old values got clobbered). If I didn't have this, I'd have spent a lot more time trying to track down and see why it worked when I checked it in but didn't work now.It also seems to me like directions to verify/fix belong in the bug, not the CL. QA is testing based on bugs, I doubt they are trying to individually verify every CL that goes in.QA has a tool that parses the CL, for every build , and lists all the bugs that have TEST=. QA then verifies those bug fixes(which have steps). TEST= some times have info like... Look at bug for instructions... This is also very helpful. So please use TEST=.They list all the bugs that have TEST=? Or all CL's that have TEST=?Sine bugs already have BUG=???? which links to bugs, shouldn't the data on verifying the fix be in the bug?This is the whole point of the TEST= line. There are many bugs where it's not clear to QA how to verify correctness (e.g. the bug is hard to reproduce or the language in the bug is just vague).IMO, we should rename it to QA-INSTRUCTIONS and then there would be no confusion.While I don't think its enforceable via git cl or gerrit, would making the bugs require a QA-INSTRUCTIONS or TEST= section be preferable? It really feels to me like this is the right place for it. Or is it too likely without reminders/nag notices people will forget to include?
https://sites.google.com/a/chromium.org/dev/developers/contributing-code?pli=1
<quote>
If there's an associated bug file, you should also add a
BUG=bug_number line so they can find the associated bug. Multiple bugs
can be listed, comma separated.
If you have manual test instructions that you want to pass to the test
team so that they can validate the fix, add TEST=how_test_test at the
end of the description. Do not use the TEST= file to indicate that you
added automated tests (or unit tests), or that the existing tests
cover the change.
If there is no bug or test, leave out the lines. Do not create the
lines but leave the values blank or set them to None (i.e., don't use
BUG= or BUG=None).
Example:
Increase the goat teleporter timeout threshold to 100 because the old
value of 10 caused problems for extremely overweight goats. Tests show
that the largest goat in existence should be teleported in 50ms, so...
BUG=31337,2754
TEST=Try loading an overweight goat and confirm the teleporter works.
</quote>
Obviously, we can change TEST= to something else if we reach a
consensus on that. Do people agree that the rest of the wording
reflects the consensus (not that you necessarily agree with it)?
-- Dirk
Only a small fraction of "bugs" on crbug.com need to give explicit instructions to the test team, so we shouldn't require boilerplate TEST=X lines on all bugs.
lol yeah. My preference is for REPRO.
If there is no bug or test, leave out the lines. Do not create the
lines but leave the values blank or set them to None (i.e., don't use
BUG= or BUG=None).
On Mon, Oct 31, 2011 at 9:01 AM, John Abd-El-Malek <j...@chromium.org> wrote:
Only a small fraction of "bugs" on crbug.com need to give explicit instructions to the test team, so we shouldn't require boilerplate TEST=X lines on all bugs.I haven't checked but I feel like a huge fraction (40%+) of my changes have test instructions.
Maybe it's just that I work on UI where almost all my changes are user-visible, but I try hard to write appropriate test instructions on any change where it's at all possible to manually test it, and in all other cases I put TEST=none to show that I thought about whether the change is testable.This is also what I've checked for in my reviews since we added TEST= back in... 2007 or so? It doesn't seem hard. I'm confused why you're so opposed to being consistently explicit about this sort of thing. It's not like we're writing WebKit ChangeLog entries here that have a whole verbose boilerplate format, require merge conflict resolution any time you check in, etc. This is literally two seconds of typing. Less if we make the tools auto-prefill TEST=.
On Mon, Oct 31, 2011 at 12:01 PM, Ojan Vafai <oj...@chromium.org> wrote:
lol yeah. My preference is for REPRO.REPRO is much less clear than TEST. Please do not change the name to this.I agree with John that changing the name in general is not a good idea.On Mon, Oct 31, 2011 at 12:21 PM, Dirk Pranke <dpr...@chromium.org> wrote:
If there is no bug or test, leave out the lines. Do not create the
lines but leave the values blank or set them to None (i.e., don't use
BUG= or BUG=None).This is certainly not consensus. Personally I disagree pretty strongly with this. It's also in conflict with the presubmit check AFAIK.
The presubmit check will warn if you are missing BUG= or TEST= lines,
but not fail. I would prefer it if there was some way to not get these
messages (see also, below).
I am not surprised that you disagree. Perhaps consensus is the wrong
word (majority vote?).
Personally, I agree that BUG=X and TEST=X should always be present,
and that BUG=None should be used if there is no bug associated with
the change, and TEST=bots (or green, or waterfall, or something, or
list of specific automated tests) should be used. I don't think
BUG=<blank> or TEST=<blank> is good. That said, I don't think the
majority agrees with you and I.
However, I don't think deleting this line is the right thing to do. If
we are going to allow these lines to be optional, we should say so. If
we are going to allow TEST=<blank> or TEST=None, we should say what
they should be used for as well.
John, it looks like you've reverted my change completely. Did you do
so because you thought the original text did accurately represent the
consensus (or at least was better written than what I had), or rather
that you'd prefer to leave the original text as-is until a consensus
is reached?
-- Dirk
-- Dirk
This is also what I've checked for in my reviews since we added TEST= back in... 2007 or so? It doesn't seem hard. I'm confused why you're so opposed to being consistently explicit about this sort of thing. It's not like we're writing WebKit ChangeLog entries here that have a whole verbose boilerplate format, require merge conflict resolution any time you check in, etc. This is literally two seconds of typing. Less if we make the tools auto-prefill TEST=.
Since we all agree TEST= are instructions to test team, I still fail to see the need to tell them to do nothing.
Personally, I agree that BUG=X and TEST=X should always be present,and that BUG=None should be used if there is no bug associated with
the change, and TEST=bots (or green, or waterfall, or something, or
list of specific automated tests) should be used. I don't think
BUG=<blank> or TEST=<blank> is good. That said, I don't think the
majority agrees with you and I.
However, I don't think deleting this line is the right thing to do. If
we are going to allow these lines to be optional, we should say so. If
we are going to allow TEST=<blank> or TEST=None, we should say what
they should be used for as well.
Okay, perhaps you, Peter, and I should attempt to come up with a
different suggestion off-list and report back?
-- Dirk
On Mon, Oct 31, 2011 at 1:16 PM, John Abd-El-Malek <jabde...@google.com> wrote:
This is also what I've checked for in my reviews since we added TEST= back in... 2007 or so? It doesn't seem hard. I'm confused why you're so opposed to being consistently explicit about this sort of thing. It's not like we're writing WebKit ChangeLog entries here that have a whole verbose boilerplate format, require merge conflict resolution any time you check in, etc. This is literally two seconds of typing. Less if we make the tools auto-prefill TEST=.Since we all agree TEST= are instructions to test team, I still fail to see the need to tell them to do nothing.
We're not telling the test team to do nothing. We're telling the CL reviewers that we thought about how this change could be tested and decided it cannot be tested. The absence of TEST= is ambiguous, the presence of TEST=none is not. This is why I enforce that all changes I review have a TEST= line and have done so for years.
Requiring TEST= lines that nobody’s using is busywork.
Requiring TEST= lines only for people to leave them empty or
“TEST=none” is noise.
The above applies only to TEST=, not to BUG=.
I think it's obvious that there are big disagreements here. The test team asked for this to be added long time ago. Since then, some people have used it for another meaning (message to other developers, and not to test team). Now people in the latter camp are wanting to force everyone to adopt their usage.
https://docs.google.com/document/d/1r0wVoYmcAMfDQr5kp43hKVv8fLOY3NlXGHU6aJ4jq0A/edit
Feel free to read that over and see what you think. It's largely an
exercise in pedantry, but if we miraculously can agree on some
improvements, there may end up being value in this.
-- Dirk
I think there isn't any new stuff in this email, so I feel like we're going in circles.
--