Как утверждать в Генеративном Тестировании?

Я новичок в тестировании. Я разработал модуль, который принимает около 14 переменных и вывод True/False, Для тестирования я использовал случайно сгенерированные тесты с использованием Quickcheck.

Однако 14 переменных генерируются случайным образом (так как количество тестовых случаев было огромным для написания вручную), я понятия не имею о значении истинности, так как я могу утверждать и проверять результат моего модуля.

Это инженерный вопрос: как люди утверждают, когда пишут генеративные тестовые примеры?

2 ответа

Насколько я знаю - утверждения в генеративном тестировании делаются с использованием валидаторов. Валидаторы имеют доступ к генератору, коду и вашим выходным значениям. Очень простой валидатор для утверждения предоставлен в этом постэповерном потоке. Что такое инфраструктура генеративного модульного тестирования?

Вы не упомянули, какой язык программирования вы используете. Это полезно? defspec внутренне использует Quickcheck

(ns spec.gen-test.explore
 (:require [clojure.test                    :refer :all]
      [clojure.spec                    :as spec]
      [clojure.test.check.generators   :as gen]
      [clojure.test.check.properties   :as prop :include-macros true]
      [clojure.test.check.clojure-test :refer [defspec]]))
(def languages-set #{"clojure" "haskell" "erlang" "scala" "python"})

(spec/def ::jvm-languages 
(spec/and string?
 languages-set))

;;Generative test case for jvm-languages spec:
(defspec jvm-languages-positive-generative-test
 5
 (prop/for-all [language (gen/elements ["clojure" "haskell" "erlang" 
 "scala" "python"])]
            (println "Testing for language:" language)
            (spec/valid? ::jvm-languages language)))

(defspec jvm-languages-negative-generative-test
  100
  (prop/for-all [language (gen/such-that
                           #(not (contains? languages-set %))
                           (gen/one-of
                             [ gen/string
                               (gen/elements ["" nil])
                               gen/int
                               gen/keyword
                               gen/char-alphanumeric
                               gen/double ]))]
            (println "Testing for language:" language)
            (not (spec/valid? ::jvm-languages language))))
(run-tests)
Другие вопросы по тегам