Что такое испытание с помощью дыма и что оно сделает для меня?

Это потому, что вы увеличиваете next_position на длину найденной подстроки, таким образом пропуская последнее совпадение.

def find_last(s, c):
    last_position = 0
    result = -1

    while True:
        next_position = s.find(c, last_position)
        if next_position == -1:
            break
        result = next_position
        #last_position = next_position + len(c)
        last_position += 1

    return result

print(find_last("aaaaa", "aa")) # -> 3

Вы также можете использовать встроенную функцию Python rindex() , которая будет возвращать первый индекс, считая с конца строки

print("aaaaa".rindex("aa")) # -> 3

44
задан Robert Harvey 6 June 2011 в 22:05
поделиться

6 ответов

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

65
ответ дан 26 November 2019 в 21:44
поделиться

Этот термин происходит из восстановления оборудования и применяется к программному обеспечению. Предполагается, что это будет быстрый тест, чтобы увидеть, «загорается» ли приложение при первом запуске. Как указано выше, это просто для того, чтобы вы не тратили кучу времени на людей, освобождая их от чего-то явно сломанного.

22
ответ дан Chris Nava 26 November 2019 в 21:44
поделиться

Мы используем термин «тест на дым» для обозначения тестирования, которое выполняет быстрые базовые тесты для приложения или продукта, чтобы сделать его пригодным для дальнейшего тестирования, такого как интеграционное тестирование или функциональное тестирование. Бесполезно проводить интеграционное тестирование или другое расширенное тестирование, если приложению не удается выполнить некоторые элементарные действия, необходимые для этого расширенного тестирования. Например, у нас есть веб-приложение, и мы проводим тест на дым, чтобы убедиться, что мы можем загрузить все веб-страницы, позволить пользователям входить / выходить из системы и т. Д. Это основные вещи, которые должны работать с приложением, чтобы сделать его тестируемым. Если страницы даже не загружаются или пользователи не могут даже войти в систему, мы не можем ничего сделать с функциональностью или интеграционным тестированием. Мы проводим тестирование дыма с каждой сборкой, за которым следуют функциональные и интеграционные тесты.

2
ответ дан msvcyc 26 November 2019 в 21:44
поделиться

Smoke testing isn't performance testing or regression prevention testing.

Smoke testing is a set of your highest priority fully automated tests. Even if your regular build succeeds, it's possible for your product to be broken in very fundamental ways that make it 100% unusable. Smoke tests are designed to test that level of core functionality. A build that doesn't pass smoke tests is very likely to fail a majority of all of your automated tests.

If a smoke test fails that generally means that you're losing productivity because the build is not usable, can't be tested, etc. Smoke test failures tend to require immediate fixes, on the order of hours not days.

The important aspect about smoke tests is that they can be run quickly. You should ALWAYS be running smoke tests of some sort. Many groups have sufficient resources to run a larger suite of tests on their daily or continuous integration builds (which is goodness), but smoke tests should be considered the bare minimum.

4
ответ дан Wedge 26 November 2019 в 21:44
поделиться

Дымовое тестирование - это первый шаг интеграционного тестирования. Как разработчик, вы собрали все части вместе и убедитесь, что ваше приложение будет работать, прежде чем отдать его своей команде QA для «настоящего» тестирования.

Я хотел написать больше, но MahdeTo побил меня до правильный ответ ...:)

1
ответ дан Benoit Miller 26 November 2019 в 21:44
поделиться

Страница википедии о дымовом тестировании на самом деле неплохая. Он включает указатель на статью Стива МакКоннела («Код завершен») в разделе лучших практик IEEE Software 13 (4), 1996 г. под названием «Daily Build and Smoke Test» .

Я бы сказал. Дымовое тестирование является предварительным условием для модульного и других форм тестирования: если дымовой тест не проходит, нет смысла даже запускать модульный тест.

4
ответ дан 26 November 2019 в 21:44
поделиться