Нахождение ошибок путем деления пополам (ищущей) истории пересмотра и непригодных для тестирования фиксаций (изменения)

React Navigation , новый проект на этой территории. Лично я нахожу это лучше, чем React Native Router Flux, который больше не поддерживается.

React Navigation имеет много полезных функций с соответствующей документацией. Его популярность быстро растет. AFAIK, ребята из сообщества разработчиков React, стоят за этим проектом. Проверьте это, вам, вероятно, понравится.

РЕДАКТИРОВАТЬ: React Navigation теперь является официальной навигационной библиотекой.

5
задан Jakub Narębski 6 June 2009 в 20:19
поделиться

3 ответа

What's been checked in, obviously, cannot be helped. The large code bases I've worked on required all check-ins to actually build. This was done by having developers submit their change to check-in server which would have a queue of changes waiting to go in. Each change is built for all target platforms in the order it is submitted. If the build fails, the check-in is rejected. If it succeeds, a suite of automated regression / unit tests are run. If any test fails, the check-in is rejected. If it succeeds, the check-in is committed to the repository.

If you have such a system in place, it dramatically reduces the number of unbuildable / untestable revisions. Bad builds are limited to depot administrators doing wacky things outside the check-in server.

In environments where such an option isn't present, I have no hard statistical analysis, but I've found that anecdotally unbuildable revisions occur in pockets. One check-in will mess up a ton of stuff and then there is a series of small check-ins attempting to correct the mess. Then things are generally fine for awhile.

3
ответ дан 15 December 2019 в 06:33
поделиться

Just an idea: I know one of the other issues you're thinking about is testing in the presence of noise. One way to think of skips would be to treat them as randomly responding good/bad, and use a bisection algorithm that is robust to such errors, eg: http://www.disp.uniroma2.it/users/grandoni/FGItcs.pdf "Optimal resilient sorting and searching in the presence of memory faults". I. Finocchi, F. Grandoni, and G. F. Italiano.

The effect of applying that algorithm to git-bisect would be to bisect away from skip points, and re-run the search when it is discovered that the wrong branch has been followed. Unlike in the paper above, you know which points were unreliable, so you could just backtrack.

0
ответ дан 15 December 2019 в 06:33
поделиться

Вы можете переопределить отдельные элементы вашего алгоритма биссектрисы / двоичного поиска, чтобы они были диапазонами ревизий со смежными «неизвестными» состояниями вместо отдельных ревизий.

Другими словами, если во время двоичного поиска вы обнаруживаете неизвестное состояние, вы начинаете выполнять субпоиск вперед и назад, чтобы найти границы диапазона ревизий, которые дают однозначные ответы для вас. Вероятно, это будет линейный поиск в обоих направлениях, поэтому он будет немного медленнее, вы должны предположить, что большинство ревизий не являются непроверяемыми.

В конечном итоге это приведет к выводу диапазона ревизий, в которых появилась ошибка , например где-то между ревизией (58,63).

0
ответ дан 15 December 2019 в 06:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: