programming

autoit 랜덤 테스트 데이터 만들기


by Kitle · 2021. 01. 19.



안녕하세요. 오늘은 autoit으로 랜덤 테스트 데이터를 만들어 보겠습니다.

autoit은 매크로나 자동화 테스트를 사용할때 많이 활용하는데요. 자주 사용하는 부분이 회원가입 테스트나 반복적인 데이터 입력 부분입니다.

회원가입 같은 경우는 전화번호, 아이디, 생년월일등 필드 validation에 맞지 않게 임의의 값을 입력하면 오류가 발생하여 다음 스텝으로 진입할 수 없습니다.

그렇다고 같은 데이터만 반복적으로 테스트 하자니, happy case만 매번 통과하게 되므로, 랜덤으로 다양한 값을 테스트 해보고 싶다라는 관점에서 다음과 같이 테스트 데이터를 만들 수 있겠습니다.


오토잇으로 생년월일 랜덤 데이터 만들기

Func RndDoB()

$subtract_date = int(Random(-36500,0))

Local $sNewDate = _DateAdd('d', $subtract_date, _NowCalcDate())

$aDate = StringSplit($sNewDate,"/")

$newDate = $aDate[1]&$aDate[2]&$aDate[3]

return $newDate

EndFunc

생년월일은 시점에 영향이 있습니다. 오늘 맞지 않는 생년월일은 내일이면 맞게 됩니다. 따라서 약간의 트릭을 이용하여 날짜 계산을 위해 오늘 날짜를 기준으로 오늘로부터 100년 사이의 근사치를 빼고 생년월일을 만들겠습니다. -값을 사용하여 만듭니다.

_NowCalcDate 를 사용하고 계산된 값을 더해서 새로운 날짜를 만듭니다. 이때 구해진 값은 sNewDate 는 년월일이 /기호로 구분되어 있으므로 이 /기호를 제거합니다. $aDate = StringSplit($sNewDate,"/") 부분을 통해 문자열을 나누어 주고, 다시 $newDate = $aDate[1]&$aDate[2]&$aDate[3] 로 합쳐서 yyyymmdd 형식으로 만들 수 있습니다.


랜덤 전화번호 만들기

여러 규칙이 있겠지만 여기서는 간단하게 010-0000-0000 방식으로 만들어보겠습니다.

Func rand_phone_number()

   Local $phonetext = "010-"

   For $i = 1 To 4

    $phonetext &= Chr(Random(48, 57, 1)) ;0-9

   Next

 $phonetext &= "-"

For $i = 1 To 4

    $phonetext &= Chr(Random(48, 57, 1)) ;0-9

Next

   return $phonetext

EndFunc

random으로 Char 문자열을 추출합니다. 0~9까지중에 랜덤하게 추출하면 됩니다. 010- 뒤에 숫자 4자리를 연결하고 - 붙이고 그뒤에 또 숫자 4자리를 연결하면 됩니다. -가 필요 없다면 위 구문에서 "-"를 제거하면 됩니다.

다만 이 테스트에서 주의할 점은 실제 존재하는 전화번호가 될 수도 있기 때문에 문자발송이나 관련 테스트에 사용하면 안됩니다. 그런 경우를 방지하기 위해서는 실제 사용하지 않는 110- 등의 앞자리를 바꿔 사용하는 방법도 있겠습니다.


오토잇으로 랜덤 한글이름 만들기

한글 이름 같은 경우는 유니코드 범위를 사용하여 만들 수도 있지만 귨갹궥 등 이렇게 이름같지 않은 이름으로 사용되는 경우가 많습니다. 물론 이 경우도 invalid 케이스로 테스트 할때 필요한 데이터지만, 마치 실제 사람같은 이름을 만들기 위해서는 그냥 몇가지 샘플을 조합하는게 낫습니다. 위키 자료를 이용하여 인기 있는 이름 여러가지와 국내 성씨를 적절히 섞어 만들어주겠습니다.

한글이름 같은 경우 외자, 4자 등 특수 케이스들이 있으므로 이부분은 임의로 채워주시면 될것 같습니다.

 Func KorString ($selectsex)

Local $iMax=150

Local $lastname[$iMax] = [40,"김","이","박","최","정","강","조","윤","장","임","한","오","서","신","권","황","안","송","류","전","홍","고","문","양","손","배","백","허","유","남","심","노","하","곽","성","차","주","우","구","남궁"]

Local $firstname1[$iMax] = [139,"영자", "순자", "영숙", "미경", "미영", "지영", "지혜", "유진", "서연", "서연", "서연", "서연", "정자", "영자", "정숙", "미숙", "은정", "은정", "지은", "민지", "민서", "민서", "민서", "서윤", "순자", "정순", "영희", "경희", "은주", "미영", "수진", "수빈", "서현", "지민", "서현", "지우", "춘자", "정숙", "명숙", "경숙", "은영", "현정", "혜진", "지원", "수빈", "서현", "지우", "서현", "경자", "영숙", "경숙", "영숙", "현주", "은주", "은지", "지현", "유진", "서윤", "서윤", "민서", "옥자", "영순", "순자", "미영", "은경", "은영", "지영", "지은", "민지", "예은", "지민", "윤서", "명자", "정자", "정희", "영미", "지영", "현주", "아름", "현지", "서영", "하은", "수빈", "채원", "숙자", "영희", "순옥", "정희", "미경", "선영", "지현", "은지", "지원", "지우", "하은", "하윤", "정순", "정희", "영순", "정숙", "현정", "지연", "지연", "예진", "수민", "수빈", "예은", "지아", "화자", "옥순", "현숙", "현숙", "미정", "혜진", "보람", "예지", "예원", "윤서", "윤서", "은서", "현숙", "현숙", "미정", "혜진", "보람", "예지", "예원", "윤서", "윤서", "은서", "린", "민", "현","안","미","윤","왕빛나","빛나리","은진서"]

Local $firstname2[$iMax] = [127,"영수", "영수", "영수", "성호", "정훈", "정훈", "지훈", "동현", "민준", "민준", "민준", "민준", "영호", "영호", "영철", "영수", "성호", "성훈", "성민", "지훈", "현우", "지훈", "지후", "서준", "영식", "영식", "영호", "영호", "성훈", "상훈", "현우", "성민", "동현", "현우", "지훈", "주원", "정웅", "영철", "영식", "영철", "성진", "성진", "정훈", "현우", "준혁", "준서", "준서", "예준", "영길", "정수", "성수", "정호", "정호", "지훈", "동현", "준호", "민재", "우진", "현우", "시우", "영일", "종수", "성호", "영진", "상훈", "성호", "준영", "민석", "도현", "건우", "예준", "준서", "정수", "정식", "상철", "병철", "성민", "정호", "민수", "민수", "지훈", "예준", "건우", "도윤", "정남", "정호", "종수", "진호", "영진", "준호", "준호", "준혁", "준영", "현준", "현준", "현우", "광수", "영환", "경수", "성수", "상현", "성민", "상현", "준영", "현준", "도현", "민재", "건우", "중수", "광수", "상호", "재호", "준호", "민수", "진우", "승현", "승민", "동현", "우진", "지훈","훈","민","현","찬","빈","아름다","그저빛"]


if $selectsex == 1 Then

   return $lastname[Random(1, $lastname[0], 1)]&$firstname1[Random(1, $firstname1[0], 1)]

Else

   return $lastname[Random(1, $lastname[0], 1)]&$firstname2[Random(1, $firstname2[0], 1)]

함수 파라미터에 성별을 주고 성별에 따른 이름을 만들어 줍니다. 원하는 이름이 있으면 해당 이름으로 바꿔도 됩니다. 자주 나오기를 원한다면 여러번 반복해서 써도 됩니다. 여기서는 성별을 1로 주면 여자이름이 나오고 성별을 2로 주면 남자이름이 나옵니다. 그냥 아무거나 나오길 원한다면 함수를 변형해서 쓰면 되겠죠?

오토잇 뿐만아니라 다양한 언어에서도 쉽게 변형하여 활용할 수 있습니다.

이상으로 포스팅을 마칩니다.