Ко всему прочему следует отметить, что автоматическое тестирование не является бесконтрольным процессом, и каждый раз тестировщиком проводится анализ отчетов, полученных при выполнении автоматических тестов.

В процессе анализа полученных результатов было выявлено, что преимущества при автоматизации регрессионного тестирования для текущего проекта существенно перевешивают недостатки. Таким образом, можно сделать вывод, что риск внедрения автоматических тестов минимальный в виду его ощутимой эффективности. Даже при наличии упущений значительных (major) дефектов, доля обнаруженных недочетов остается несоизмеримо большой.

Как уже было отмечено, автоматическое тестирование имеет свои преимущества и недостатки и не служит панацеей в погоне за выигрышем во времени.

Заключение

В ходе работы было установлено что, внедрение автоматического тестирования для регрессионных тестов элементов проверки соответствия значительно повышает производительность команды, начиная со второй версии тестируемого программного продукта, и освобождает ресурсы без потери качества тестирования. Освобожденные ресурсы могут быть направлены на решение других немаловажных задач проекта.

Также для автоматизации регрессионного тестирования элементов проверки соответствия были определены дальнейшие перспективы развития.

Запускаемый тестовый сценарий может быть применен для автоматизации другой – параллельно разрабатываемой – версии продукта. Используемый скрипт может быть оформлен как универсальный посредством некоторых изменений в его коде. Таким образом, существует возможность его применения на объектах не только разных версий, но и разных доменов коммуникационных сетей: WCDMA, LTE и SmallCell.

НЕ нашли? Не то? Что вы ищете?

Текущая загруженность тестировщика позволяет проводить регрессионное тестирование проверки соответствия в несколько раз чаще, что позволит более тщательно следить за развитием функционала программного обеспечения и наличием сопутствующей регрессии. Здесь необходимо обратить внимание на такое понятие как «стоимость ошибки»: чем позже обнаружен дефект, тем он «дороже». Если недочет, обнаруженный тестировщиком, может быть исправлен, то недочет, обнаруженный пользователем после официальной публикации приложения, останется до выхода следующей версии программного продукта, оказывая негативное влияние как на репутацию продукта, так и на репутацию команды тестировщиков.

Разработанный автоматический тест используется глобально внутри межнационального проекта и для других аналогичных программных продуктов заказчика.

В ходе работы над внедрение автоматизации регрессионного тестирования в текущем проекте были достигнуты следующие индивидуальные результаты:

·  знакомство с инструментом для автоматизированного тестирования Cucumber,

·  получение опыта автоматизации тестирования,

·  улучшение навыков написания тестовых сценариев на языке Ruby,

·  получение опыта анализа результатов автоматизированного тестирования и оценки целесообразности его применения.

Список литературы

1.  Bertolino, A. Software Testing Research: Achievements, Challenges, Dreams / A. Bertolino // Future of Software Engineering. – 2007. – pp. 83-105.

2.  Fewster, M. / Common Mistakes in Test Automation / M. Fewster // Grove Consultants. – 2001. – pp. 1-7.

3.  Gulechha, L. / Software Testing Metrics / L. Gulechha // Cognizant Technology Solutions Collection. – 2008. – pp. 1-17.

4.  Hartmann, J. / 30 Years of Regression Testing: Past, Present and Future / J. Hartmann // PNSQC. – 2012. – pp. 1-8.

5.  Lin, X. / Regression Testing in Research and Practice / X. Lin // University of Nebraska Collection. – 2003. – pp. 1-6.

6.  Ludewig, J. / Software Engineering in the year 2000 minus and plus ten / J. Ludewig // Informatics: 10 years back, 10 years ahead. – 2001. – pp. 102 - 111.

7.  Pettichord, B. / Seven Steps to Test Automation Success / B. Pettichord // STAR West. – 2001. – pp. 1-17.

8.  Economic Perspectives in Test Automation: Balancing Automated and Manual Testing with Opportunity Cost / R. Ramler [et la] // AST. – 2006. – pp. 85-91.

9.  Walia, M. / Realizin Efficiency & Effectiveness in Software Testing through a Comprehensive Metrics Model / M. Walia // Building Tomorrow’s Enterprise. – 2012. – pp. 1-24.

10.  Wynne, M. The Cucumber Book / M. Wynne, A. Hellesoy. – The Pragmatic Bookshelf, 2012. – 328 pp.

11.  Трудовой кодекс Российской Федерации [Электронный ресурс]: [федеральный закон: от 01.01.2001 г. , в ред. от от 01.01.2001 N 421-ФЗ]. – Режим доступа: www. consultant. ru (дата обращения: 21.01.2015).

12.  Винниченко, И. Автоматизация процессов тестирования / И. Винниченко. – СПб.: питерб 2005. – 203с. – ISBN 5-469-00798-7.

13.  Дастин, Э. Автоматизированное тестирование программного обеспечения. Внедрение, управление и эксплуатация / Э. Дастин, Д. Рэшка, Д. Пол; пер. с англ. Е. Молодцова, М. Павлов. – М.: ЛОРИ, 2003. – 589с. – ISBN 5-85582-186-2.

14.  Котляров, тестирования программного обеспечения: учебное пособие / , . – М.: Интернет-Ун-т Информ. Технологий, 2006. — 288с. – ISBN 5-94774-406-4.

Приложение

Сценарий.rb файл (Приложение 1)

Сценарий – файл с расширением. rb, применяемый для автоматизированного регрессионного тестирования элементов проверки соответствия в текущем проекте.

# encoding: utf-8

begin require 'rspec/expectations'; rescue LoadErr; require 'spec/expectations'; end

require 'cucumber/formatter/unicode'

require 'Conf'

require 'ConsElementSession'

require 'ConsElement'

Given /^I have an (.*) specified$/ do |ConsElementId|

@ConsElementSession = Cucumber::ConsElementSession. new()

@ConsElementSession. enableListingOrderInsensitiveness()

@ConsElementId = ConsElementId

end

When /^I load version (.*) with (.*)$/ do |Conf, Model|

@Confpath = "data/dir/Confs/" + Conf

@Conf = Cucumber::Conf. new(@ConsElementSession. getServiceDirectory())

@Conf. openConf(@Confpath)

end

Then /^I run all ConsElements on the (.*) with (.*)$/ do |@ConfElementId, @Fix|

@etap = @ConsElementSession. runOneConsElement(false,@ConfElementId,@ConsElementId)

end

Then /^I can receive a (.*) and (.*) MESAND (.*) describe in (.*) MESAND (.*) MESAND (.*) MESAND (.*) MESAND (.*) MESAND (.*)$/ do |Severity, nbMsg, nbAuMsg, Msg1,Msg2,Msg3,Msg4,AuMsg1,AuMsg2|

Msgs = Array. new

for i in 1..nbMsg. to_i() do

Msgs. push(eval("Msg"+i. to_s()))

end

@ConsElementSession. runOneConsElement(false,@ConfElementId,@ConsElementId)

if (Severity == "WARN" )

@ConsElementSession. ConsElementMsgs("WARN", Msgs)

if (@Fix=="true")

@ConsElementSession. runOneConsElement(@Fix,@ConfElementId,@ConsElementId)

if (nbAuMsg!= "0")

@ConsElementSession. runOneConsElement(false,@ConfElementId,@ConsElementId)

AuMsgs = Array. new

for i in 1..nbAuMsg. to_i() do

AuMsgs. push(eval("AuMsg"+i. to_s()))

end

@ConsElementSession. ConsElementMsgs("WARN", AuMsgs)

else

@ConsElementSession. runOneConsElement(false,@ConfElementId,@ConsElementId)

@ConsElementSession. failWithWarns(@ConfElementId)

end

end

elsif (Severity == "ERR")

@ConsElementSession. ConsElementMsgs("ERR", Msgs)

if (@Fix=="true")

@ConsElementSession. runOneConsElement(@Fix,@ConfElementId,@ConsElementId)

if (nbAuMsg!= "0")

@ConsElementSession. runOneConsElement(false,@ConfElementId,@ConsElementId)

AuMsgs =Array. new

for i in 1..nbAuMsg. to_i() do

AuMsgs. push(eval("AuMsg"+i. to_s()))

end

@ConsElementSession. ConsElementMsgs("ERR", AuMsgs)

else

@ConsElementSession. runOneConsElement(false,@ConfElementId,@ConsElementId)

@ConsElementSession. failWithErrs(@ConfElementId)

end

end

elsif (Severity == "INFO")

@ConsElementSession. ConsElementMsgs("INFO", Msgs)

if (@Fix=="true")

@ConsElementSession. runOneConsElement(@Fix,@ConfElementId,@ConsElementId)

if (nbAuMsg!= "0")

@ConsElementSession. runOneConsElement(false,@ConfElementId,@ConsElementId)

AuMsgs = Array. new

for i in 1..nbAuMsg. to_i() do

AuMsgs. push(eval("AuMsg"+i. to_s()))

end

@ConsElementSession. ConsElementMsgs("INFO", AuMsgs)

else

@ConsElementSession. runOneConsElement(false,@ConfElementId,@ConsElementId)

@ConsElementSession. failWithInfos(@ConfElementId)

end

end

else

@ConsElementSession. failWithWarns(@ConfElementId)

@ConsElementSession. failWithErrs(@ConfElementId)

@ConsElementSession. failWithInfos(@ConfElementId)

end

end

Instruction for Performing of Automotive Regression Testing (Приложение 2)

1.  Prepare folders with. feature files and configuration files (XML) remained from regression testing of previous version.

2.  (Optional) Make required changes in. rb and/or .feature files. The possible changes:

-  formats of. feature and/or. rb files were changed;

-  @confpath in. rb file should contain the valid configurations location.

3.  Add. feature files and configuration files (XML) to the appropriate folders of test-project.

4.  (Optional) Archive configuration file to ZIP because of size.

5.  Launch Cucumber tool of the latest version.

6.  Configure Cucumber tool with appropriate jars, plugins, paths to mentioned files, JVM arguments.

7.  Run CucumberRunner. mwe2.

8.  Save report with testing result after test completion.

[1] Трудовой кодекс Российской Федерации [Электронный ресурс]: [федеральный закон: от 01.01.2001 г. , в ред. от 01.01.2001 N 421-ФЗ]. – Режим доступа: www. consultant. ru (дата обращения: 21.01.2015).

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5