> On Sep 16, 2020, at 7:12 AM, surkov.a...@gmail.com 
> <surkov.alexan...@gmail.com> wrote:
> 
> Better test coverage is the best. Agreed, having a policy to force developers 
> to add tests must be an efficient way to improve test coverage. I worried 
> though it may reduce amount of contributions from the community since it 
> complicates the development process: sometimes you have to spend more time to 
> create a test than to fix a bug.

I think this is similar to the issue raised by mccr8 and discussed upthread. 
People who aren't familiar with a particular area of the codebase should still 
feel free to write a patch without a test to fix a bug. It's then up to the 
reviewer to either provide instructions to write a test, write a test 
themselves, or grant an exception. 

> Also it could make developers (intentionally or unintentionally) to pick up 
> tasks that don't need tests. The worse thing is perhaps you cannot 
> effectively measure these side affects of the change.

The exceptions are meant to at least partially address these points (see also 
ekr's point (2) above).

Brian

> Thanks,
> Alexander.
> 
> On Tuesday, September 15, 2020 at 11:03:45 AM UTC-4, Brian Grinstead wrote:
>> (This is a crosspost from firefox-dev) 
>> 
>> Hi all, 
>> 
>> We’re rolling out a change to the review process to put more focus on 
>> automated testing. This will affect you if you review code that lands in 
>> mozilla-central. 
>> 
>> ## TLDR 
>> 
>> Reviewers will now need to add a testing Project Tag in Phabricator when 
>> Accepting a revision. This can be done with the “Add Action” → “Change 
>> Project Tags” UI in Phabricator. There's a screenshot of this UI at 
>> https://groups.google.com/g/firefox-dev/c/IlHNKOKknwU/m/zl6cOlT2AgAJ. 
>> 
>> We’ve been piloting the policy for a few weeks with positive feedback from 
>> reviewers. Still, there may be some rough edges as we roll this out more 
>> widely. I’d like to hear about those, so please contact me directly or in 
>> the #testing-policy channel in Slack / Matrix if you have feedback or 
>> questions about how the policy should apply to a particular review. 
>> 
>> We’re working on ways to make this more convenient in the UI and to prevent 
>> landing code without a tag in Lando. In the meantime if you'd like a 
>> reminder to add the tag while reviewing code, Nicolas Chevobbe has built a 
>> WebExtension that automatically opens up the Project Tags UI when 
>> appropriate at https://github.com/nchevobbe/phab-test-policy. 
>> 
>> ## Why? 
>> 
>> Automated tests in Firefox and Gecko reduce risk and allow us to quickly and 
>> confidently improve our products. 
>> 
>> While there’s a general understanding that changes should have tests, this 
>> hasn’t been tracked or enforced consistently. We think defining an explicit 
>> policy for including automated tests with code changes will help to achieve 
>> those goals. 
>> 
>> Also, we’ll be able to better understand exactly why and when tests aren’t 
>> being added. This can help to highlight components that need new testing 
>> capabilities or technical refactoring, and features that require increased 
>> manual testing. 
>> 
>> There are of course trade-offs to enforcing a testing policy. Tests take 
>> time to write, maintain, and run which can slow down day-to-day development. 
>> And given the complexity of a modern web browser, some components are 
>> impractical to test today (for example, components that interact with 
>> external hardware and software). 
>> 
>> The policy below hopes to mitigate those by using a lightweight enforcement 
>> mechanism and the ability to exempt changes at the discretion of the code 
>> reviewer. 
>> 
>> ## Policy (This text is also located at 
>> https://firefox-source-docs.mozilla.org/testing/testing-policy/) 
>> 
>> Everything that lands in mozilla-central includes automated tests by 
>> default. Every commit has tests that cover every major piece of 
>> functionality and expected input conditions. 
>> 
>> One of the following Project Tags must be applied in Phabricator before 
>> landing, at the discretion of the reviewer: 
>> 
>> * `testing-approved` if it has sufficient automated test coverage. 
>> * One of `testing-exception-*` if not. After speaking with many teams across 
>> the project we’ve identified the most common exceptions, which are detailed 
>> below. 
>> 
>> ### Exceptions 
>> 
>> * testing-exception-unchanged: Commits that don’t change behavior for end 
>> users. For example: 
>> * Refactors, mechanical changes, and deleting dead code as long as they 
>> aren’t meaningfully changing or removing any existing tests. Authors should 
>> consider checking for and adding missing test coverage in a separate commit 
>> before a refactor. 
>> * Code that doesn’t ship to users (for example: documentation, build scripts 
>> and manifest files, mach commands). Effort should be made to test these when 
>> regressions are likely to cause bustage or confusion for developers, but 
>> it’s left to the discretion of the reviewer. 
>> * testing-exception-ui: Commits that change UI styling, images, or localized 
>> strings. While we have end-to-end automated tests that ensure the frontend 
>> isn’t totally broken, and screenshot-based tracking of changes over time, we 
>> currently rely only on manual testing and bug reports to surface style 
>> regressions. 
>> * testing-exception-elsewhere: Commits where tests exist but are somewhere 
>> else. This requires a comment from the reviewer explaining where the tests 
>> are. For example: 
>> * In another commit in the Stack. 
>> * In a followup bug. 
>> * In an external repository for third party code. 
>> * When following the [Security Bug Approval 
>> Process](https://firefox-source-docs.mozilla.org/bug-mgmt/processes/security-approval.html)
>>  tests are usually landed later, but should be written and reviewed at the 
>> same time as the commit. 
>> * testing-exception-other: Commits where none of the defined exceptions 
>> above apply but it should still be landed. This should be scrutinized by the 
>> reviewer before using it - consider whether an exception is actually 
>> required or if a test could be reasonably added before using it. This 
>> requires a comment from the reviewer explaining why it’s appropriate to land 
>> without tests. Some examples that have been identified include: 
>> * Interacting with external hardware or software and our code is missing 
>> abstractions to mock the interaction out. 
>> * Inability to reproduce a reported problem, so landing something to test a 
>> fix in Nightly. 
>> 
>> Thanks, 
>> Brian
> _______________________________________________
> dev-platform mailing list
> dev-platform@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-platform

_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to