Kokybės užtikrinimo priemonės
description
Transcript of Kokybės užtikrinimo priemonės
Kokybės užtikrinimo priemonės
Darius Kučinskas
Kodo kokybės užtikrinimo priemonės
o Programinės įrangos kokybėo Statinė analizė ir kodo metrikoso Išeities kodo peržiūros (ang. code reviews)o Apkrovos testavimas (ang. performance testing)
PĮ kokybė?
PĮ kokybė?
o Tai ką jūs pirmiausiai bandote sukurti kurdami programinę įrangą yra vertė (PĮ vartotojui)
o Kokybė yra vienas iš vertės aspektų, taip pat kaip ir kaina, bei kiti faktoriai
Statinė analizė?
Statinė analizė
o PĮ kokybės užtikrinimo priemonėo Atliekama neįvykdant pačios programoso Vykdoma automatinių įrankiųo Objektas programos išeities arba objektinis kodaso Sudėtingumas svyruoja nuo individualių sakinių
nagrinėjimo iki viso kodo analizės
Statinė analizė
o Rezultate gali nurodyti programavimo klaidas arba formaliais metodais matematiškai įrodyti tam tikras programos savybes (pvz., jos atitikimą specifikacijai)
o PĮ metrikų rinkimas taip pat laikomas viena iš statinės analizės formų
Statinė analizė įrankiai?
Statinė analizė įrankiai
o C# kompiliatorius (C#)o StyleCop (C#)o ReSharper (C#, JavaScript, HTML, CSS)o NCover o JSHint (JavaScript)o VisualStudio
C# kompiliatorius
o Įjungti aukščiausią įspėjimų lygį (ang. warning level)
o Įspėjimą traktuoti kaip klaidą (angl. treat warnings as errors)
o Esant nors vienam įspėjimui, projektas turi nesikompiliuoti
StyleCop
o Atviro kodo statinės analizės įrankis o Pagamintas Microsoft'o kompanijoso Galima parsisiųsti iš http://stylecop.codeplex.com
svetainės
o Analizuoja programos išeities kodąo Tikrina ar kodas atitinka rekomenduojamą
programavimo stilių bei Microsoft NET Framework dizaino gaires
StyleCop
o Taisyklės skirstomos į šias kategorijas:o Dokumentacijao Išdėstymaso Priežiūra (ang. Maintainability)o Pavadinimai (ang. Naming)o Skaitomumas (angl. Readability)o Savos sukurtos taisyklės
StyleCop
o Taisyklės pritaikytos būtent mūsų organizacijai, gali skirtis projekto lygmenyje
o Taisyklės saugomos centralizuotai, prieinamos kiekvienam programuotojui
o Pažeidus taisyklę projektas nesikompiliuoja
ReSharper
o Komercinis įrankis skirtas kodo pertvarkymuio Pagamintas JetBrains kompanijoso Integruotas į VisualStudio kaip išplėtimas
o Palaiko C#, VB, JavaScript, CSS, HTMLo Kodo taisyklių tikrinimas, rezultatai pateikiami
klaidų, įspėjimų, pasiūlymų ir patarimų pavidaluo Automatizuotas klaidų taisymas ir kodo
optimizavimaso Palaiko kodo pertvarkymą (angl. code
refactoring)
ReSharper
o Taisyklės pritaikytos būtent mūsų organizacijai, gali skirtis projekto lygmenyje
o Taisyklės saugomos centralizuotai, prieinamos kiekvienam programuotojui
o Pažeidus taisyklę projektas nesikompiliuoja
JSHint
o Įrankis, skirtas aptikti klaidas ir galimas problemas JavaScript kode
o Gali būti naudojamas siekiant užtikrinti programavimo konvencijų laikymosi
o Taisyklės nustatomos vieno failo lygyje
NCover
o Kodo padengimo įrankis skirtas .NETo Kodo padengimas yra priemonė, naudojama
programinės įrangos testavime, nusakanti iki kokio laipsnio programos kodas yra ištestuotas
VisualStudio
o Visi aukščiau paminėti įrankiai integruoti į programuotojo darbo aplinką (šiuo atveju į VisualStudio)
o Integruotas kodo metrikų apskaičiavimo įrankis
Kodo metrikos?
Kodo metrikos - eilučių skaičius
o Kodo eilučių skaičius - nurodo apytikslį kodo eilučių skaičių
o Labai didelis eilučių skaičius galimai rodo, kad tipas ar metodas bando daryti per daug
o Jis turėtų būti suskaidytaso Kitaip jį bus sunku palaikyti ir plėsti
Kodo metrikos – klasių susiejimas
o Ang. Class Couplingo Apibrėžia klasių tarpusavio susiejimo lygįo Gero dizaino požymis yra mažas klasių susiejimo
lygiso Didelis susiejimas reiškia, kad tokį kodą bus
sunku palaikyti ir plėtoti
Kodo metrikos – paveldėjimo gylis
o Rodo klasių apibrėžimų skaičių iki klasių hierarchijos šaknų
o Kuo gilesnė hierarchija, tuo sunkiau gali būti suprasti, kur yra apibrėžti konkretūs metodai ir laukai
o Didelis susiejimas reiškia, kad tokį kodą bus sunku palaikyti ir plėtoti
Kodo metrikos – ciklomatinis sudėtingumas
o Ang. Cyclomatic Complexityo Priemonė apibrėžianti programos valdymo srauto
struktūrinį sudėtingumąo Didelė reikšmė reiškia, kad bus sunku palaikyti ir
plėtoti
Kodo metrikos – priežiūros indeksas
o Ang. Maintainability Indexo Programos palaikymo sudėtingumo indeksas
o Programinės įrangos išeities kodo kokybės rodikliai stipriai koreliuoja su kodu dydžio (bent jau taip pat stipriai kaip ir su klaidų lygiu)
o Iš kodo dydžio galima prognozuoti jo kokybę
Išeities kodo peržiūros
o Ang. Code reviewo Kiekvienas baigtas projektas patenka į peržiūrąo Ar laikomasi organizacijos nustatytų
programavimo konvencijųo Ar teisinga projekto struktūrao Ar teisingai parinkti sluoksniaio Ar naudojami teisingi dizaino šablonai (ang.
design patterns)
Išeities kodo peržiūros
o Ar yra unit testaio Ar yra duomenų bazės sukūrimo / atnaujinimo
skriptaio Ar projaktas įtrauktas į nuolatinės integracijos
aplinkąo Programos kodas turi turėti atskiras šakas
vįstymui / testavimuio Turi būti paruoštas bent minimalus aprašas
Apkrovos testavimas
o Projektas neatiduodamas klientui neatlikus apkrovos testavimo
Apkrovos testavimas - įrankiai
o Apache - Jmetero Redgate - Performance Profilero Chrome - Developer Toolso Firefox - Firebug
Apkrovos testavimas - Performance Profiler
Redgate - Performance Profiler