Главная страница

Тестирование ПО. Тестирование. Реферат актуальность. Основной всплеск интереса к теме тестирования пришёлся на 90е годы и начался в сша. Бурное развитие систем автоматизированной разработки


Скачать 2.21 Mb.
НазваниеРеферат актуальность. Основной всплеск интереса к теме тестирования пришёлся на 90е годы и начался в сша. Бурное развитие систем автоматизированной разработки
АнкорТестирование ПО
Дата17.01.2023
Размер2.21 Mb.
Формат файлаpdf
Имя файлаТестирование.pdf
ТипРеферат
#890900
страница12 из 12
1   ...   4   5   6   7   8   9   10   11   12
Шаги:
 срабатывает повторяющийся код - открывается страница "Данные об организации";
 заполняются поля "название организации, ОПФ, ОВД;
 нажимается кнопка "Далее";
 после перехода на новую страницу нажимается кнопка "Назад";
 проверка, что все поля заполнены старыми значениями.
Весь набор тест кейсов для данной страницы можно посмотреть в приложении Б.
В итоге, данный проект сильно ускорил регрессионное тестирование и выпуск обновлений.
Скорость прохождения тестов увеличена почти в 2 раза. Перед каждым апдейтом тесты проходят на тестовой площадке и только после их успешного выполнения происходит обновление на "боевой".

111
ЗАКЛЮЧЕНИЕ
В ходе выполнения работы был изучен процесс тестирования программного обеспечения в
IT-компаниях. Были рассмотрены большинство видов дефектов в ПО, причины возникновения и способы их отслеживания, с помощью систем отслеживания ошибок. Также изучены способы создания и применения тест кейсов для черного ящика.
Данный материал можно использовать как для учебных целей, так и для успешного прохождения технического собеседования для устройства на работу в качестве тестировщика.
Также по данному материалу можно оформить методическое пособие для студентов и включить в программу обучения в качестве дополнительного курса "Тестирование ПО".
Во второй части работы рассмотрены программы для нагрузочного тестирования. C помощью программы JMeter проведено нагрузочное тестирование веб-сервиса "Эксперт", в котором было обнаружено слабое звено в системе.
Были разработаны 2 проекта по автоматизированному функциональному тестированию.
Первый проект учебный и несет ознакомительный характер. Он нацелен на пользу начинающему тестировщику — автоматизатору, помочь быстро создать первый авто-тест и продолжить автоматизировать.
Второй, - проект по авто-тестам для веб-сервиса "Эксперт", который сейчас используется на боевом сервере. Он сильно ускорил регрессионное тестирование и выпуск обновлений. Перед каждым апдейтом тесты проходят на тестовой площадке и только после их успешного выполнения происходит обновление на "боевой".

112
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Библиотека MSDN. Источник информации для разработчиков, использующих средства, продукты, технологии и службы корпорации Майкрософт. [Электронный ресурс]. – Режим доступа: http://msdn.microsoft.com
2. КиберФорум. Форум начинающих и профессиональных программистов, системных администраторов, администраторов баз данных. [Электронный ресурс]. – Режим доступа: http://cyberforum.ru
3. ИНТУИТ. Интернет университет информационных технологий. [Электронный ресурс]. –
Режим доступа: http://intuit.ru
4. Клуб программистов. [Электронный ресурс]. – Режим доступа: http://www.cyberguru.ru/
5. ВикипедиЯ. Свободная энциклопедия. [Электронный ресурс]. – Режим доступа: http://ru.wikipedia.org/wiki
6. Тестирование и качество ПО. [Электронный ресурс]. - Режим доступа: http://software-testing.ru/
7. Про тестинг. [Электронный ресурс]. Режим доступа: http://www.protesting.ru/
8. SQA Days. [Электронный ресурс]. Режим доступа: http://sqadays.com/
9. Software testing training and stoftware testing services. [Электронный ресуср]. Режим доступа: http://www.rbcs-us.com/
10. Уиттакер Д., Арбон Д., Каролло Д. Как тестирует Google.: Пер. с англ. - Спб.: Издательский дом "Питер", 2014.-320с
11. Савин Р. Тестирование Дот Ком, или Пособие по жесткому обращению с багами в интернет- стартапах. - М.: Дело, 2007. - 312с
12. Хабрахабр. [Электронный ресурс]. Режим достуа: http://habrahabr.ru/
13. Code Project. Сообщество разработки программного обеспечения. [Электронный ресурс]. –
Режим доступа: http://codeproject.com
14. Apache Software Foundation. [Электронный ресурс]. - Режим доступа: http://jmeter.apache.org/
15. SeleniumHQ Browser Automation. [Электронный ресурс]. - Режим доступа: http://docs.seleniumhq.org/

113
ПРИЛОЖЕНИЕ А
Программный код, описывающий инфраструктуру страницы "Данные об организации":
package
pages.fa_pages
import
pages._
import
intro_pages._
import
org.openqa.selenium.WebDriver
import
queries._
import
expert_elements._
import
org.scalatest.Matchers
import
common._
import
popups_and_lightboxes._
import
utils.StringEnumeration
import
pages.pages_constants.SkipperConstants
import
org.scalatest.selenium.WebBrowser
import
pages.pages_constants._
object
OrgTypes
extends
StringEnumeration {
val
empty
= StringValue(
"…"
)
val
OOO
= StringValue(
"Общество с ограниченной ответственностью"
)
val
OAO
= StringValue(
"Открытое акционерное общество"
)
val
ZAO
= StringValue(
"Закрытое акционерное общество"
)
val
UP
= StringValue(
"Унитарное предприятие"
)
val
ODO
= StringValue(
"Общество с дополнительной ответственностью"
)
val
PT
= StringValue(
"Полное товарищество"
)
val
TV
= StringValue(
"Товарищество на вере"
)
val
PK
= StringValue(
"Производственный кооператив"
)
val
KKH
= StringValue(
"Крестьянское (фермерское) хозяйство"
)
val
NKO
= StringValue(
"Некоммерческая организация"
)
val
IP
= StringValue(
"Индивидуальный предприниматель"
)
val
OBPUL
= StringValue(
"Организация без прав юридического лица"
)
}
trait
FaCompanyInfoPageBackground[Intro <: ExpertPage, Result <: ExpertPage]
extends
BackgroundPageComponent {
type
BackgroundPage = FaCompanyInfoPage[Intro, Result]
val
backgroundPageConstructor
= implicitly[Constructable[FaCompanyInfoPage[Intro,
Result]]].construct
}
trait
FaCompanyInfoPageSaved[Intro <: ExpertPage, Result <: ExpertPage]
extends
SavedPageComponent {
type
SavedPage = FaCompanyInfoPage[Intro, Result]
val
savedPageConstructor
=
new
FaCompanyInfoPage[Intro, Result](_ : String)
}
class
FaOnvdSelector[Intro <: ExpertPage, Result <: ExpertPage]()(
implicit
val
driver
:
WebDriver)
extends
OnvdSelectorLightBoxComponent
with
FaCompanyInfoPageBackground[Intro, Result]
with
FaCompanyInfoPageSaved[Intro, Result] {
val
lightbox
=
new
OnvdSelectorLightBox(_)
}
/*
* YearDependentPage ‐ if 2010, then Fa2010BalancePage, otherwise ‐ FaBalancePage
*/

114
class
FaCompanyInfoPage[Intro <: ExpertPage, Result <: ExpertPage]
(url : String,
val
isPeriodSelected
: Boolean =
false
)(
implicit
val
driver
: WebDriver)
extends
FaFormPage(url)
with
BreadCrumbs[Intro]
with
Matchers
with
IncompleteSaver
with
ExpertEventually {
val
companyTitle
=
new
ExpertInput(ByJQ(
"input#company_title"
))
val
orgType
: ExpertSelect[OrgTypes.
type
] =
new
ExpertSelect(ByJQ(
"select#org_type"
))
val
onvd
=
new
ExpertText(ByJQ(
"#selected_business_type_title"
))
protected
lazy
val
faOnvdSelector
=
new
FaOnvdSelector[Intro, Result]
lazy
val
onvdCodeSelectorLink
=
new
ExpertLink(ById(
"select_business_type"
))
with
Connector[
faOnvdSelector
.OnvdSelectorLightBox] {
val
construction
= faOnvdSelector lightbox
}
lazy
val
onvdSelectedCodeSelectorLink
=
new
ExpertLink(ById(
"change_business_type"
))
with
Connector[
faOnvdSelector
.OnvdSelectorLightBox] {
val
construction
= faOnvdSelector lightbox
}
val
wizardStepPage
=
"Данные об организации"
val
companyNameValidation
=
"Укажите название"
val
orgTypeValidation
=
"Заполните поле"
val
onvdCodeValidation
=
"Укажите основной вид деятельности"
lazy
val
moneyUnitValidation
=
"Переключение единиц измерения невозможно — значения должны быть целыми числами"
def
checkCompanyNameValidation() = checkText(ByJQ(
"label[for='company_title']"
), companyNameValidation
)
def
checkOrgTypeValidation() = checkText(ByJQ(
"label[for='org_type']"
), orgTypeValidation
)
def
checkOnvdCodeValidation() = checkText(ByJQ(
"label[for='onvd_code']"
), onvdCodeValidation
)
private
def
checkText(textElementSelector: ExpertQuery, expectedText: String) {
new
ExpertText(textElementSelector).text should be
(expectedText)
}
override
def
accept() { checkText(ByJQ(
"div#company_info h1"
), wizardStepPage
) currentStep should be
(
"Данные об организации"
)
}
lazy
val
moneyUnitElement
=
new
ExpertText(ByJQ(
".units‐error"
))
lazy
val
unitOfMeasure
=
new
ExpertSelect[UnitsOfMeasure.
type
](ById(
"units"
))
def
chooseThousandsUnit : FaCompanyInfoPage[Intro, Result] = { unitOfMeasure
.select(UnitsOfMeasure.
thousands
)
new
FaCompanyInfoPage(url)
}
def
chooseMillionsUnit : FaCompanyInfoPage[Intro, Result] = { unitOfMeasure
.select(UnitsOfMeasure.
millions
)
new
FaCompanyInfoPage(url)
}
def
checkMoneyValidation() { moneyUnitElement
.text should be
(
moneyUnitValidation
)
}
lazy
val
nextPageInactive
=
new
ExpertButton(ByJQ(
"#buttons_pane a.b‐button‐small"
))
}

115
object
FaCompanyInfoPage
extends
WebBrowser {
type
CompanyPageTypeConstructor[Intro <: ExpertPage, ResultPage[_ <: ExpertPage] <:
ExpertPage] =
FaCompanyInfoPage[Intro, ResultPage[Intro]]
def
apply[Intro <: ExpertPage, Result <: ExpertPage, YearDependentPage <: ExpertPage](url :
String)
(
implicit
driver : WebDriver) =
new
FaCompanyInfoPage[Intro, Result](url)
implicit
def
FaCompanyInfoPageToConstructable[Intro <: ExpertPage, Result <: ExpertPage]
(
implicit
driver : WebDriver) =
new
Constructable[FaCompanyInfoPage[Intro, Result]] {
def
construct =
new
FaCompanyInfoPage[Intro, Result](_ : String)
}
def
FaCompanyInfoPageDefault[Intro <: ExpertPage, Result <: ExpertPage](url : String)
(
implicit
driver: WebDriver) =
new
FaCompanyInfoPage[Intro, Result](url)(driver)
type
DefaultType[Intro <: ExpertPage, Result <: ExpertPage] = FaCompanyInfoPage[Intro,
Result]
implicit
def
FaCompanyInfoPageToNextStep[Intro <: ExpertPage, Result <: ExpertPage]
(current : FaCompanyInfoPage[Intro, Result])(
implicit
driver : WebDriver) =
new
FaCompanyInfoPage[Intro, Result](current.
url
)
with
WizardNextStep[FaCompanyInfoPage[Intro, Result], FaBalancePage[Intro, Result]] {
override
val
nextPageConstructor
= implicitly[Constructable[FaBalancePage[Intro,
Result]]].construct
}
implicit
def
FaCompanyInfoPageToPrevStep[Intro <: ExpertPage : Constructable, Result <:
ExpertPage]
(current : FaCompanyInfoPage[Intro, Result])(
implicit
driver : WebDriver) =
new
FaCompanyInfoPage[Intro, Result](current.
url
)
with
WizardPrevStep[FaCompanyInfoPage[Intro, Result], Intro] {
override
protected
val prevPageConstructor
= implicitly[Constructable[Intro]].construct
}
}

116
ПРИЛОЖЕНИЕ Б
Программный код, который содержит набор тест кейсов для страницы "Данные об организации":
package
test_cases.fa_tests
import
test_cases._
import
pages.intro_pages._
import
pages.fa_pages._
import
expert_elements._
import
queries._
import
pages.pages_constants._
class
FaCompanyInfoSpec
extends
ExpertSpec {
protected
def
setup = {
IntroPage().
new_fa
.proceed().chooseManual.selectPeriod(Years.
year2013
, PeriodTypes.
year
)
}
"Click next with empty fields than fill onvd code ‐ all fields"
should
"be valid"
in {
val
companyInfoPage
= setup companyInfoPage nextPageInactive
.click() companyInfoPage
.checkCompanyNameValidation() companyInfoPage
.checkOnvdCodeValidation() companyInfoPage
.checkOrgTypeValidation() companyInfoPage onvdCodeSelectorLink
.proceed().checkOnvd(
"15"
) withWait() {
new
ExpertText(ByJQ(
"label[for='company_title']"
))} withWait() {
new
ExpertText(ByJQ(
"label[for='org_type']"
))} withWait() {
new
ExpertText(ByJQ(
"label[for='onvd_code']"
))}
}
"Fill all fields except onvd ‐ validation"
should
"appear on onvd field"
in {
val
companyInfoPage
= setup companyInfoPage companyTitle
.text = OrgName.
name companyInfoPage orgType
.select(OrgTypes.
ODO
) companyInfoPage nextPageInactive
.click() companyInfoPage
.checkOnvdCodeValidation()
}
"Fill all fields, click next than return back ‐ all fields"
should
"be filled"
in {
val
companyInfoPage
= setup companyInfoPage companyTitle
.text = OrgName.
name companyInfoPage orgType
.select(OrgTypes.
ODO
) companyInfoPage onvdCodeSelectorLink
.proceed().checkOnvd(
"15"
).
nextPage
.proceed().
backwardLin k
.proceed() companyInfoPage companyTitle
.text should be
(OrgName.
name
) companyInfoPage orgType
.getSelected should be
(OrgTypes.
ODO
.toString()) companyInfoPage onvd
.text should be
(
"15. Производство пищевых продуктов, включая напитки"
)
}
"Click next with empty fields, fill OrgType than reset and select again OrgType ‐ all fields"
should
"be valid"
in {
val
companyInfoPage
= setup

117
companyInfoPage nextPageInactive
.click() companyInfoPage orgType
.select(OrgTypes.
ODO
) withWait() {
new
ExpertText(ByJQ(
"label[for='company_title']"
))} withWait() {
new
ExpertText(ByJQ(
"label[for='org_type']"
))} withWait() {
new
ExpertText(ByJQ(
"label[for='onvd_code']"
))} companyInfoPage orgType
.select(OrgTypes.
empty
) companyInfoPage nextPageInactive
.click() companyInfoPage orgType
.select(OrgTypes.
ODO
) withWait() {
new
ExpertText(ByJQ(
"label[for='company_title']"
))} withWait() {
new
ExpertText(ByJQ(
"label[for='org_type']"
))} withWait() {
new
ExpertText(ByJQ(
"label[for='onvd_code']"
))}
}
}
1   ...   4   5   6   7   8   9   10   11   12


написать администратору сайта