5.5 Программаны тестілеу

Python-да программа жұмысының тиімділігін қалай анықтауға болады?

   Жаңа білім

Өткен тақырыптарда біз негізінен есепті шығару алгоритмін анықтау мен программасын құру жолдарына ерекше мән бердік. Бірақ берілген есептердің тек программасын құрумен бәрі бітпейді. Программа жазудағы жіберген қателерді анықтап, оларды жөндеу керек. Сонымен бірге программаның есепте қойылған шарттарға толық жауап беретінін анықтау мәселесі туындайды. Ол үшін құрастырған программаны тестілеуіміз керек

   Ойлан

  • Программаны тестілеу (сынау) дегеніміз не?
  • Программаны тексеруге арналған тестілердің қандай түрлері бар?

Тест (test – ағылшын сөзі, «сынау» деген мағынаны білдіреді) – алғашқы деректердің кейбір жиыны мен программа жұмысы кезінде осы деректерге сәйкес келетін алынуға тиісті барлық нәтижелердің дәл сипаттамасы.

Программаның қателерін жөндеу мен программаны тестілеу бірбіріне ұқсамайтын екі кезеңнен тұрады:

• жөндеу кезінде программадағы синтаксистік қателер жойылады;

• тестілеу кезінде программаның жұмыс істеу қабілеттілігі тексеріледі.

Тестілеу программа жұмысындағы қателіктің бар екендігін айқындаса, жөндеу программаның дұрыс жұмыс істемеуінің себептерін анықтайды. Программа қаншалықты жөнделгенімен, оның жұмысқа жарамдылығын анықтайтын кезең – программаны тестілеу процесі.

Егер программа таңдап алынған тестілік деректер жүйесінен өткенде, барлық жағдайда дұрыс нәтижелер берілсе, онда программаны шартты түрде дұрыс программа деп есептеуге болады.

Тестілеу тәсілін жүзеге асыру үшін олардың үлгі (эталон) нәтижелері даярлануы тиіс. Программаны тексеруге арналған үлгі нәтижелер компьютерде программаны орындау, нәтиже алу кезінде дайындалмауы керек. Керісінше, программа жұмысын тексерудің алдында дайындап қою керек.

Арнайы таңдап алынған тест жиынтығы көмегімен программа жұмысынан күтілетін нәтиже мен программаның нақты көрсеткен нәтижесі арасындағы сәйкестікті тексеру процесін программаны тестілеу деп айтады.

Тестілеу процесінің кезеңдері

Программаны тестілеу процесін үш кезеңге бөлуге болады.

1. Қалыпты жағдайларға тексеру. Программалардың жұмыс істеуінің нақты жағдайына тән алғашқы деректер негізінде тестілеу болжанады.

2. Төтенше (шегаралық) жағдайларға тексеру. Бұл тестілеу деректер шегаралық мәндерден құралады. Мысалы, программаны тестілеуге қолданатын деректер [0;1000000] арасындағы мәндердің бірі болсын. Онда программа жұмысын тексеруге экстремальды дерек ретінде өте кіші 0, 1 және өте үлкен дерек ретінде 999999, 1000000 мәндері қолданылады. Барлық программа қандай да бір шектеулі алғашқы деректер жиынын өңдеуге есептеліп жасақталатындығы белгілі.

3. Ерекше жағдайларға тексеру. Ерекше жағдайларға, айнымалының теріс және нөлдік мәндерін өңдеуге арналмаған программаға, қандай да бір кеткен қателіктің себептерінен дәл сол мәндерді өңдеуге тура келген жағдайды тексеру жатады. Программа өзі дұрыс өңдей алмайтын кез келген деректерді теріске шығаруы тиіс. Программаның тестілеуден толық өтпеуі программа құруда кеткен қателіктерден туындайды. Программаны тестілеумен бір мысалдың негізінде практикалық тұрғыдан танысайық.

Практикалық қолдану

Бағытқа ауысу

Қаладағы автобус жетіспеушілігін жою мақсатында екі жаңа автобус бағытын ашу туралы шешім қабылданды. Бұл екі автобус бағыты өзара қиылысуы да, қиылыспауы да мүмкін. Автобус тоқтайтын аялдамалар 1 мен 100 аралығындағы сандармен берілген. Бір автобустан екіншісіне ауысуға болатын аялдамалардың санын анықта. Енгізу деректері ретінде а және b бірінші автобустың «бастапқы – соңғы», одан кейін c және d екінші автобустың «бастапқы – соңғы» аялдамалары берілген (1-сурет).

Мысалы

Нәтиже

1

3   6   4   2

2

2

3   1   5   10

0

1-кесте. Үлгі тест

Программа жұмысын тестілеуге арналған үлгі тест деректеріндегі а , b, c, d -лердің мәні

Тестілеу 

кезеңдері

Программа 

жұмысына 

күтілеті нәтиже

1

1 2 3 4

Төтенше

0

2

2 4 3 5

Төтенше

2

3

35 17 10 42

Қалыпты

19

4

30 10 45 80

Қалыпты

0

5

4 50 4 50

Қалыпты

47

6

1 99 97 100

Төтенше

3

Жоғарыда айтылғандай, есептің программа кодын жазар алдында, есептің шартында қойылған талаптар бойынша тестілеу нұсқаларын дайындап алуымыз керек (1-кесте).

Есептің программасын құру идеясы: Программаға енгізілетін тестілеу деректері, яғни автобустың «бастапқы – соңғы» аялдамалары ретсіз берілген.

2-сурет. If операторымен орындалған программа коды
3-сурет. Программа кодын жазудың тағы бір әдісі

Мысалы, 1-тестіден байқасақ, бірінші бағыттағы автобус 3- аялдамадан 6-аялдамаға бара жатса, екінші бағыттағы автобус 4-аялдамадан 2-аялдамаға қайтып келе жатыр. Есептің шарты бойынша екі бағыттың қиылысатын аялдамалар санын табу жеткілікті. Демек есептің дұрыс шешімін табу үшін екі бағыттағы аялдамаларды өсу ретімен реттеп алу керек. Есептің шарт тексеру операторы арқылы орындалған программа коды 2-суретте, Python-ның мүмкіндіктерін тиімді пайдаланып, max және min фукциялары арқылы орындалған программа коды 3-суретте берілген. Екі программада да есепті шығару идеясы бір болғанымен, программалық тұрғыдан жүзеге асыру жолы әртүрлі.

Талдау

Практикалық жұмыс арқылы 2 және 3-суреттерде берілген программа кодтарының құрылу жолдарын салыстыра отырып, талда.

1) Қай программа кодының жазылу құрылымы ұнады? Себебін түсіндір.

2) 1-кестедегі үлгілік тестілерді талда. Олар екі тестілеу кезеңінің бірінің қатарына жатқанымен, оларды туындайтын шарттарына қарай топтарға жікте.

1. Программаны тестілеу дегеніміз не? Ол қандай кезеңдерден тұрады?

2. Тестілеудің программа жұмысына қандай әсері бар?

3. Программаны тестілеу не үшін маңызды?

1-тапсырма

Шахмат тақтасының торкөздері берілген. Берілген екі торкөздің координаттарына қарап, олардың түстері бірдей немесе бірдей еместігін анықта. Егер торкөздердің түстері бірдей болса – «Ia», әйтпесе «Joq» сөздері экранға шықсын. Тестілеу кезеңдерін пайдаланып, есептің дұрыстығын анықтауға арналған 5 түрлі тест дайында.

Мысалы

Нәтиже

2    1    3     2

Ia

  • Ерекше жағдайларға тексеру.
  • Төтенше (шегаралық) жағдайларға тексеру.
  • Қалыпты жағдайларға тексеру.

Бағдарламаны тестілеу процесін неше кезеңге бөлуге болады?

  • 3
  • 4
  • 2
  • 5

 – алғашқы деректердің кейбір жиыны мен программа жұмысы кезінде осы деректерге сәйкес келетін алынуға тиісті барлық нәтижелердің дәл сипаттамасы.

Өтінемін күте тұрыңыз