07 - Висновки з TDD, погляд початківця - Віталій Зінченко - IT Event 2013 (5)
Буде розглянуто підхід розробки програмного забезпечення та тестів, який дозволить досягти наступних цілей:
- глибокий та детальний аналіз вимог;
- одне розуміння функціональності продукту для усіх членів команди;
- хороша взаємодія між командами розробників та тестувальників;
- високий рівень покриття продукту тестами;
- скорочення часу необхідного для тестування;
Результатом виконання перелічених пунктів стане налагоджений процес розробки продукту, порозуміння між учасниками команди і найголовніше - якісне ПЗ.
Віталій Зінченко
http://itevent.if.ua/lecture/visnovki-z-tdd-poglyad-pochatkivtsya
01 an environment for application development tools that help you keep it t...Igor Bronovskyy
01 - An environment for application development tools that help you keep it together - Krzysztof Konwisarz - ITEvent 2013 (5)
You might think that a few guys working on an IT project does not need a lot of tools for doing software except for their own computers and an SCM.
Although a lot can be achieved with this approach, the development process can be made cheaper and more steady with use of a few tools.
This presentation will be about why continuous integration, code review, functional testing and few other things are what you want to use from the beginning of the project.
Session will be in English.
Krzysztof Konwisarz
http://itevent.if.ua/lecture/environment-application-development-tools-help-you-keep-it-together
11 - Розробка програмного забезпечення для вбудованих систем - Дмитро Андреєв - IT Event 2013 (5)
.NET Micro Framework -- реалізація платформи Microsoft .NET для створення вбудованих додатків для 32 та 64 розрядних мікроконтролерів, що не потребують наявності операційної системи.
Протягом доповіді я познайомлю вас із цією технологією та дам змогу пересвідчитись у можливості легко та якісно створювати програмне забезпечення для вбудованих систем, що можуть використовувати датчики, сенсорні екрани, стек TCP/IP, Ethernet, WiFі.
Дмитро Андреєв
http://itevent.if.ua/lecture/rozrobka-programnogo-zabezpechennya-dlya-vbudovanikh-sistem-z-vikoristannyam-microsoft-net-m
03 - chomu prohramisty ne testuiut - yurii chulovskyi - it event 2013 (5)Igor Bronovskyy
Чи траплялася вам ситуація, коли на ретроспективі, ви домовилися що будете писати тести. І всі розуміють яку користь вони дадуть. Але й після цього тести пишуться дуже рідко.
Ця презентація є спробою знайти причини і роздумом на тему: “Які технічні знання, зміни в технічному і соціальному середовиці необхідні для покращення тестів”.
Юрій Чуловський
http://itevent.if.ua/lecture/chomu-programisti-ne-testuyut
Joomla 3. Що нового для розробників у новій версії - Віталій МаренковIgor Bronovskyy
З того часу як Joomla 1.0 відокремилась від CMS Mambo, вона пройшла шлях
від мішанини ООП і функціонального програмування із міксом PHP з HTML,
де часто, заради дрібних правок доводилось правити код самої системи, до
системи на базі MVC-фреймворка. Версія 1.5 принесла нам MVC, систему
подій та зручну шаблонізацію, завдяки яким поняття “хак” практично
зникло. 1.6 та 1.7 стали проміжними на шляху до наступної LTS-версії —
2.5. Цього разу ключовою зміною стало відокремлення Joomla CMS і Joomla
Platform. Joomla 3.0 знову є перехідною, перед виходом 3.5. Перше, що
можна в ній помітити — це направленість на мобільні пристрої та
впровадження Twitter Bootstrap, а разом з ним і jQuery. Також, нарешті,
добавлено модульне тестування. А “під капотом” криється нова концепція
MVC — HMVC.
http://itevent.if.ua/lecture/joomla-3-shcho-novogo-dlya-rozrobnikiv-u-novii-versiyi
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)Igor Bronovskyy
09 - Express Nodes on the right Angle - Vitaliy Basyuk - IT Event 2013 (5)
60 вузлів під правильним кутом - миттєва розробка програмних додатків використовуючи Node.js + Express + MongoDB + AngularJS.
Коли ми беремось за новий продукт, передусім ми думаємо про пристрасть, яка необхідна йому, щоб зробити користувача задоволеним і відданим нашому баченню. А що допомагає нам здобути прихильність користувачів? Очевидно, що окрім самої ідеї, також важлими будуть: зручний користувацький інтерфейс, взаємодія в реальному часі та прозора робота з даними. Ці три властивості ми можемо здобути використовучи ті чи інші засоби, проте, коли все лиш починається, набагато зручніше, якщо інструменти допомагають втілити бажане, а не відволікають від головної мети.
Ми розглянемо процес розробки, використовуючи Node.js, Express, MongoDB та AngularJS як найбільш корисного поєднання для отримання вагомої переваги вже на старті вашого продукту.
Віталій Басюк
http://itevent.if.ua/lecture/express-nodes-right-angle-rapid-application-development-using-nodejs-express-mongodb-angular
01 an environment for application development tools that help you keep it t...Igor Bronovskyy
01 - An environment for application development tools that help you keep it together - Krzysztof Konwisarz - ITEvent 2013 (5)
You might think that a few guys working on an IT project does not need a lot of tools for doing software except for their own computers and an SCM.
Although a lot can be achieved with this approach, the development process can be made cheaper and more steady with use of a few tools.
This presentation will be about why continuous integration, code review, functional testing and few other things are what you want to use from the beginning of the project.
Session will be in English.
Krzysztof Konwisarz
http://itevent.if.ua/lecture/environment-application-development-tools-help-you-keep-it-together
11 - Розробка програмного забезпечення для вбудованих систем - Дмитро Андреєв - IT Event 2013 (5)
.NET Micro Framework -- реалізація платформи Microsoft .NET для створення вбудованих додатків для 32 та 64 розрядних мікроконтролерів, що не потребують наявності операційної системи.
Протягом доповіді я познайомлю вас із цією технологією та дам змогу пересвідчитись у можливості легко та якісно створювати програмне забезпечення для вбудованих систем, що можуть використовувати датчики, сенсорні екрани, стек TCP/IP, Ethernet, WiFі.
Дмитро Андреєв
http://itevent.if.ua/lecture/rozrobka-programnogo-zabezpechennya-dlya-vbudovanikh-sistem-z-vikoristannyam-microsoft-net-m
03 - chomu prohramisty ne testuiut - yurii chulovskyi - it event 2013 (5)Igor Bronovskyy
Чи траплялася вам ситуація, коли на ретроспективі, ви домовилися що будете писати тести. І всі розуміють яку користь вони дадуть. Але й після цього тести пишуться дуже рідко.
Ця презентація є спробою знайти причини і роздумом на тему: “Які технічні знання, зміни в технічному і соціальному середовиці необхідні для покращення тестів”.
Юрій Чуловський
http://itevent.if.ua/lecture/chomu-programisti-ne-testuyut
Joomla 3. Що нового для розробників у новій версії - Віталій МаренковIgor Bronovskyy
З того часу як Joomla 1.0 відокремилась від CMS Mambo, вона пройшла шлях
від мішанини ООП і функціонального програмування із міксом PHP з HTML,
де часто, заради дрібних правок доводилось правити код самої системи, до
системи на базі MVC-фреймворка. Версія 1.5 принесла нам MVC, систему
подій та зручну шаблонізацію, завдяки яким поняття “хак” практично
зникло. 1.6 та 1.7 стали проміжними на шляху до наступної LTS-версії —
2.5. Цього разу ключовою зміною стало відокремлення Joomla CMS і Joomla
Platform. Joomla 3.0 знову є перехідною, перед виходом 3.5. Перше, що
можна в ній помітити — це направленість на мобільні пристрої та
впровадження Twitter Bootstrap, а разом з ним і jQuery. Також, нарешті,
добавлено модульне тестування. А “під капотом” криється нова концепція
MVC — HMVC.
http://itevent.if.ua/lecture/joomla-3-shcho-novogo-dlya-rozrobnikiv-u-novii-versiyi
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)Igor Bronovskyy
09 - Express Nodes on the right Angle - Vitaliy Basyuk - IT Event 2013 (5)
60 вузлів під правильним кутом - миттєва розробка програмних додатків використовуючи Node.js + Express + MongoDB + AngularJS.
Коли ми беремось за новий продукт, передусім ми думаємо про пристрасть, яка необхідна йому, щоб зробити користувача задоволеним і відданим нашому баченню. А що допомагає нам здобути прихильність користувачів? Очевидно, що окрім самої ідеї, також важлими будуть: зручний користувацький інтерфейс, взаємодія в реальному часі та прозора робота з даними. Ці три властивості ми можемо здобути використовучи ті чи інші засоби, проте, коли все лиш починається, набагато зручніше, якщо інструменти допомагають втілити бажане, а не відволікають від головної мети.
Ми розглянемо процес розробки, використовуючи Node.js, Express, MongoDB та AngularJS як найбільш корисного поєднання для отримання вагомої переваги вже на старті вашого продукту.
Віталій Басюк
http://itevent.if.ua/lecture/express-nodes-right-angle-rapid-application-development-using-nodejs-express-mongodb-angular
12 - Gradle. Еволюція систем автоматичної збірки - Святослав Бабич - IT Event 2013 (5)
Gradle - нова система збірки та інтеграційний засіб нового покоління. У доповіді ми ознайомимося з можливостями цього інструменту, порівняємо його з Ant та Maven, а також розглянемо випадки, у яких мінімальними зусиллями можна перетворити складний і незрозумілий процес складання великого проекту - на просту і прозору процедуру.
Святослав Бабич
http://itevent.if.ua/lecture/gradle-evolyutsiya-sistem-avtomatichnoyi-zbirki-porivnyannya-iz-ant-ta-mavenom
"Distributed graphs and microservices in Prom.ua", Maksym KindritskyiFwdays
The current architecture of Prom.ua is built on microservices and GraphQL API, but it was not always like that. In this talk, I'll tell you how far we've come and how we've made using graphs in a microservice architecture convenient and simple. I will talk about the problems we faced and how we overcame them, made our development process more accessible, deployments faster, and the remains of the monolith less loaded.
Практика студентів на складі одягу H&M у Польщіtetiana1958
Пропонуємо студентам Державного біотехнологічного університету активно поринути у аспекти логістики складу одягу H&M.
Метою практики є не тільки отримання теоретичних знань, а й їх застосування практично.
More Related Content
Similar to 07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013 (5)
12 - Gradle. Еволюція систем автоматичної збірки - Святослав Бабич - IT Event 2013 (5)
Gradle - нова система збірки та інтеграційний засіб нового покоління. У доповіді ми ознайомимося з можливостями цього інструменту, порівняємо його з Ant та Maven, а також розглянемо випадки, у яких мінімальними зусиллями можна перетворити складний і незрозумілий процес складання великого проекту - на просту і прозору процедуру.
Святослав Бабич
http://itevent.if.ua/lecture/gradle-evolyutsiya-sistem-avtomatichnoyi-zbirki-porivnyannya-iz-ant-ta-mavenom
"Distributed graphs and microservices in Prom.ua", Maksym KindritskyiFwdays
The current architecture of Prom.ua is built on microservices and GraphQL API, but it was not always like that. In this talk, I'll tell you how far we've come and how we've made using graphs in a microservice architecture convenient and simple. I will talk about the problems we faced and how we overcame them, made our development process more accessible, deployments faster, and the remains of the monolith less loaded.
Практика студентів на складі одягу H&M у Польщіtetiana1958
Пропонуємо студентам Державного біотехнологічного університету активно поринути у аспекти логістики складу одягу H&M.
Метою практики є не тільки отримання теоретичних знань, а й їх застосування практично.
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...tetiana1958
29 травня 2024 року на кафедрі зоології, ентомології, фітопатології, інтегрованого захисту і карантину рослин ім. Б.М. Литвинова факультету агрономії та захисту рослин Державного біотехнологічного університету було проведено відкриту лекцію на тему «Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випробувань пестицидів: шлях до підвищення якості та надійності досліджень» від кандидата біологічних наук, виконавчого директора ГК Bionorma, директора Інституту агробіології Ірини Бровко.
Участь у заході взяли понад 70 студентів та аспірантів спеціальностей 202, 201 та 203, а також викладачі факультету та фахівці із виробництва. Тема лекції є надзвичайно актуальною для сільського господарства України і викликала жваве обговорення слухачів та багато запитань до лектора.
Дякуємо пані Ірині за приділений час, надзвичайно цікавий матеріал та особистий внесок у побудову сучасного захисту рослин у нашій країні!
Регіональний центр євроатлантичної інтеграції України, що діє при відділі документів із гуманітарних, технічних та природничих наук, підготував віртуальну виставку «Допомога НАТО Україні».
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013 (5)
1. Висновки з TDD
погляд початківця
Трішки лірики про процес
Приклад реалізації тесту
Віталій Зінченко
zinchenko.vitaliy@gmail.com
2. Чому виникло бажання про це розповісти?
Подяки:
• http://xpinjection.com
• Микола Аліменков
• Володимир Цукур
• Einar Ingebrigtsen
• Jasson Huggins
• Simon Steward
3. Робочий процес
розробника
аналіз вимог
виділення неподільних елементів
визначення вхідних параметрів і результату
розробка функціоналу
перевірка
створення тестової версії
виправлення помилок
4. Робочий процес
тестувальника
аналіз вимог
виділення неподільних елементів
визначення вхідних параметрів і результату
розробка тестових сценаріїв
перевірка тестової версії
звітування про помилки
5. Що тут не так?
Давайте вирішувати проблеми, ще до їх появи
ізольований аналіз вимог та їх уточнення
питання - як воно працює?
питання - як воно перевіряється?
Результат:
багато дрібних помилок
уточнення після реалізації
витрачений час
6. Єдина задача - єдина команда
Реалізація пліч-о-пліч:
аналіз і уточнення вимог
виділення функціональних частин
створення макету продукту
реалізація функціоналу
написання і розробка тестів
збереження робочих даних в одному місці
8. Перевірки при такому підході
менше запитань і узгоджень після реалізації
менше помилок-багів
розробник використовує тести в процесі написання
функціоналу
тестувальник займається створенням тестів, а не їх
проходженням
частіші та однакові регресивні перевірки
9. Як це все виглядає:
Unit Test, Visual Studio 2012 + NuGet
WebDriver + Selenium
10. Клас BaseObject
using OpenQA.Selenium;
using Selenium;
Using OpenQA.Selenium.Support.PageObjects;
Using OpenQA.Selenium.Support.UI;
namespace FaceBookTest
{
public class BaseObject
{
public static IWebDriver Driver;
public static DefaultSelenium Selenium;
public static void InitPage<T>(T pageClass) where T : BaseObject
{
PageFactory.InitElements(Driver, pageClass);
}
}
}
11. Клас BaseTest
using Nunit.Framework; using OpenQA.Selenium.Firefox; using OpenQA.Selenium.IE;
using OpenQA.Selenium.Chrome; using Selenium;
namespace FaceBookTest
{ public class BaseTest : BaseObject
{
[TestFixtureSetUp]
public void beforeClass(){
Driver = new FirefoxDriver();
//for IE Driver = new InternetExplorerDriver(@"<DOWNLOAD AND SPECIGY PATH
//TO IEDERIVERSERVER HERE(//code.google.com/p/selenium)>");
Selenium = new WebDriverBackedSelenium(Driver, TestTools.homePage);
Selenium.Start()
}
[SetUp]
public void beforeTest(){
Driver.Navigate().GoToUrl(TestTools.homePage);
}
[TestFixtureTearDown]
public void afterClass(){
Driver.Close();
Selenium.Close();
} } }
12. Клас TestTools
using NUnit.Framework;
namespace FaceBookTest
{ class TestTools : BaseObject
{
public static string homePage = "http://www.facebook.com";
private const int DEFAULT_TIMEOUT = 60;
public static void WaitingForElement(string locator, int timeOut =
DEFAULT_TIMEOUT) {
for (int i = 0; i < timeOut; i++){
if (Selenium.IsElementPresent(locator)){
return;
}
else{
System.Threading.Thread.Sleep(1000);
}
}
Assert.Fail("Element with '" + locator + "' not found");
} } }
13. Елементи на Login-сторінці
public class LoginPage : BaseObject
public const string USER_NAME_FIELD = "//input[@id='email']";
public const string PASSWORD_FIELD = "//input[@id='pass']";
public const string LOGIN_BUTTON = "//label[@id='loginbutton']/input";
public const string FAILED_LOGIN_TEXT = "//div/p[contains(text(),'The password
you entered is incorrect')]";
[FindsBy(How = How.XPath,Using = USER_NAME_FIELD)]
public IWebElement userNameField;
[FindsBy(How = How.XPath, Using = PASSWORD_FIELD)]
public IWebElement passwordField;
[FindsBy(How = How.XPath, Using = LOGIN_BUTTON)]
public IWebElement loginButton;
14. Події на Login-сторінці
public static LoginPage GetLoginPage() {
LoginPage loginPage = new LoginPage();
InitPage(loginPage);
return loginPage; }
public LoginPage EnterUserName(string userName){
userNameField.SendKeys(userName);
return GetLoginPage(); }
public LoginPage EnterPassword(string password){
passwordField.SendKeys(password);
return GetLoginPage(); }
public UserHomePage ClickLoginButton() {
loginButton.Click();
return UserHomePage.GetUserHomePage(); }
public LoginPage IsLoginFailed(){
TestTools.WaitingForElement(FAILED_LOGIN_TEXT);
return GetLoginPage();}
15. Тестові методи для Login-сторінки
namespace FaceBookTest
{ class LoginPageTools
{ private LoginPage loginPage = new LoginPage();
private UserHomePage userHomePage = new UserHomePage();
public LoginPageTools AssertUserName(string userName){
UserHomePage.AssertUserName(userName);
return this; } }
public LoginPageTools AssertLoginFailed(){
loginPage.IsLoginFailed();
return this;}
public LoginPageTools PleaseLogin(string userName, string password){
BaseObject.InitPage(loginPage);
loginPage.
EnterUserName(userName).
EnterPassword(password).
ClickLoginButton();
return this;
} } }
16. Елементи та події на HomePage
public const string DISPLAYED_USER_NAME =
"//img[contains(@id,'profile_pic_header')]/../span[contains(text(),'#')]";
public const string USER_NAVIGATION_MENU = "//*[@id='userNavigationLabel']";
public const string LOGOUT_BUTTON = "//input[@value='Log Out']";
[FindsBy(How = How.XPath, Using = USER_NAVIGATION_MENU)]
public IWebElement userNavigationMenu;
[FindsBy(How = How.XPath, Using = LOGOUT_BUTTON)]
public IWebElement logoutButton;
public static UserHomePage GetUserHomePage(){
UserHomePage userHomePage = new UserHomePage();
InitPage(userHomePage);
return userHomePage;
}
public UserHomePage AssertUserName(string testUserName){
TestTools.WaitingForElement(DISPLAYED_USER_NAME.Replace("#",
testUserName));
return GetUserHomePage();
}
17. Тестові методи для HomePage
namespace FaceBookTest
{
class UserHomePageTools
{
private UserHomePage userHomePage = new UserHomePage();
public UserHomePageTools PleaseLogOut()
{
BaseObject.InitPage(userHomePage);
userHomePage.userNavigationMenu.Click();
userHomePage.logoutButton.Click();
return this;
}
}
}
18. Тест
namespace FaceBookTest
{ public class LoginPageTest : BaseTest
{
private static LoginPageTools loginPageTools = new LoginPageTools();
private static UserHomePageTools userHomePageTools = new
UserHomePageTools();
[Test]
public static void UserIsAbbleToLogin(){
loginPageTools.
PleaseLogin(“fbuser@mail.com”, “fb!password13”).
AssertUserName(“FBtest User”);
UserHomePageTools.PleaseLogOut();
}
[Test]
public static void UserIsNotAbbleToLogin(){
PleaseLogin(“fbuser@mail.com”, “incorrectPassword”).
AssertLoginFailed();
}
}
}
21. Код тесту
namespace FaceBookTest
{ [Binding]
public class LoginFeatureSteps : BaseTest
{ private static LoginPageTools loginPageTools = new LoginPageTools();
private static UserHomePageTools userHomePageTools = new
UserHomePageTools();
[AfterScenario()]
public void TearDown()
{ afterClass(); }
[Given(@"FaceBook Login Page is opened")]
public void GivenFaceBookLoginPageIsOpened()
{ specFlowInit();}
[When(@"Enter credentials (.*)/(.*) and press Login button")]
public void WhenEnterCredentialsAndPressLogin(string p0, string p1)
{ loginPageTools.PleaseLogin(p0, p1); }
[Then(@"User Name (.*) is displayed on the Home Page")]
public void ThenUserNameIsDisplayedOnTheHomePage(string p0)
{ loginPageTools.AssertUserName(p0);
userHomePageTools.PleaseLogOut(); }
} }
Додати в BaseTest.сs
public void specFlowInit()
{beforeClass();
beforeTest();}