diff --git a/tests.aconversion.sh b/tests.aconversion.sh
index e32ddafe2f4a14803f6f0591c3ecc0d2c41c5fef..d2bd8dc192c34ad4120c3a6823fe4c05dceb010c 100755
--- a/tests.aconversion.sh
+++ b/tests.aconversion.sh
@@ -1,5 +1,7 @@
 #!/usr/bin/env bash
 
+set -o pipefail
+
 TESTCASE_ITERATIONS=200
 TESTCASE_TIMEOUT=5
 LOGFILE="log_tests.txt"
@@ -40,82 +42,90 @@ function compare {
 	return $RET
 }
 
+# $1 = file to store nfa
+function generateNFA {
+	./arand -d $RAND_DENSITY -n $(( $RANDOM % $RAND_STATES + 1 )) -a $(( $RANDOM % $RAND_ALPHABET + 1 )) > $1 2>/dev/null
+}
+
 # $1 = command for conversion. Output of such command must be (eps-)NFA !!
 function runTest2 {
 	TMPNFA="nfa.xml"
 
-	./arand -d $RAND_DENSITY -n $(( $RANDOM % $RAND_STATES + 1 )) -a $(( $RANDOM % $RAND_ALPHABET + 1 )) > $TMPNFA
+	$(generateNFA $TMPNFA)
+	if [ $? -eq 139 ]; then
+		return 3
+	fi
 
-	TMP=$(timeout $TESTCASE_TIMEOUT bash -c "cat $TMPNFA | $1")
+	TMP=$(timeout $TESTCASE_TIMEOUT bash -c "cat $TMPNFA | $1" 2>/dev/null)
 	RETTMP=$?
+
+	# segfault
+	if [ $RETTMP -eq 139 ]; then
+		return 3
+	fi
+
+	# timeout
 	if [ $RETTMP -ge 123 ]; then
 		return 2
 	fi
-	
+
 	mDFA1=$(mDFA "$(cat $TMPNFA)")
 	mDFA2=$(mDFA "$TMP")
 
+	# as pipefail bash option is turned on, first non-zero exit value of any program in pipe sequence is return code of whole sequence
 	CMP=$(compare "$mDFA1" "$mDFA2")
-	if [ $? == 0 ]; then 
-		rm nfa.xml
+	if [ $? == 0 ]; then
+		rm $TMPNFA
 		return 0
 	else
 		echo "-----------------------------------------" >> $LOGFILE
 		echo "$1" >> $LOGFILE
 		echo "$CMP" >> $LOGFILE
-		echo $(cat nfa.xml) >> $LOGFILE 
-		rm nfa.xml
+		echo $(cat $TMPNFA) >> $LOGFILE
+		rm $TMPNFA
 		return 1
 	fi
 }
 
+# $1 - aconversion sequence
 function runTest {
-	ITERS=$TESTCASE_ITERATIONS
 	RES_GOOD=0
-	RES_BAD=0
+	RES_FAIL=0
 	RES_TIMEOUT=0
-
-	if [ $# == 0 ] || [ $# -gt 2 ]; then
-		echo "Invalid runTest call."
-		exit
-	elif [ $# == 2 ]; then
-		ITERS=$2
-	fi
-
+	RES_SIGSEGV=0
 
 	echo $1
 	echo -ne "\t"
-	for i in $(seq 1 $ITERS );
+	for i in $(seq 1 $TESTCASE_ITERATIONS );
 	do
-
 		runTest2 "$1"
-		RETTEST=$?
+		TEST_EXITVALUE=$?
 
-		if [ $RETTEST == 0 ]; then
+		if [ $TEST_EXITVALUE == 0 ]; then
 			echo -n "."
 			RES_GOOD=$((RES_GOOD + 1))
-		elif [ $RETTEST == 1 ]; then
+		elif [ $TEST_EXITVALUE == 1 ]; then
 			echo -n "x"
-			RES_BAD=$((RES_BAD + 1))
-		elif [ $RETTEST == 2 ]; then
+			RES_FAIL=$((RES_FAIL + 1))
+		elif [ $TEST_EXITVALUE == 2 ]; then
 			echo -n "T"
 			RES_TIMEOUT=$((RES_TIMEOUT + 1))
-		elif [ $RETTEST == 3 ]; then
+		elif [ $TEST_EXITVALUE == 3 ]; then
 			echo -n "F"
-			RES_BAD=$((RES_BAD + 1))
+			RES_SIGSEGV=$((RES_SIGSEGV + 1))
 		else
 			echo -n "?"
 		fi
 	done
 
 	echo -ne "\n\t"
-	echo "RES: GOOD:" $RES_GOOD ", BAD:" $RES_BAD ", TIMEOUT:" $RES_TIMEOUT
+	echo "RES: GOOD:" $RES_GOOD ", BAD:" $RES_FAIL ", TIMEOUT:" $RES_TIMEOUT ", SIGSEGV:" $RES_SIGSEGV
 	echo ""
 }
 
 # FA -> RG -> FA
 # covers: FA -> LRG, FA -> RRG, RRG <-> LRG, RRG -> FA, LRG -> FA
-runTest "./aconversion -t RRG | ./aconversion -t LRG | ./aconversion -t FA" 
+runTest "./aconversion -t RRG | ./aconversion -t LRG | ./aconversion -t FA"
 runTest "./aconversion -t LRG | ./aconversion -t RRG | ./aconversion -t FA"
 
 # FA -> RE -> FA