0

I am a novice in testing. I have developed a module which takes around 14 variables and output True/False. For testing I have used randomly generated test cases using 'Quickcheck'.

However the 14 variables are generated randomly (since number of test cases were huge to write manually), I have no idea about the truth value, so how could I assert-verify the result of my module.

It is an engineering question: How do people assert when they write generative test cases?

Mangat Rai Modi
  • 4,649
  • 5
  • 37
  • 67

2 Answers2

0

As far as I know - assertions in generative testing are done using validators. Validators have access to generator, code and your output values. A very simple validator for assertion is provided on this stackoverflow post- What is a Generative Unit Test Framework?

Community
  • 1
  • 1
vvvvaib
  • 336
  • 5
  • 16
0

You didn't mentioned which programming language you were using. Is this Helpful? defspec internally uses 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)