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