while read in; do chmod 755 "$in"; done < file.txt
Автор: admin
Проблемы с Callgraph
После установки xhprof и Graphviz на windows столкнулся с проблемой. При обращении к Callgraph выдавалась ошибка:
Format: "png" not recognized. Use one of:
Вылечил запуском командной строки от имени администратора и выполнением команды:
dot -c
Пирамида тестирования
Автор: Мартин Фаулер
Дата публикации: 1 мая 2012
Оригинал: https://martinfowler.com/bliki/TestPyramid.html
Пирамида тестирования — это концепция того, как различные виды автоматизированных тестов должны использоваться должны использоваться для создания сбалансированного портфеля. Её основная идея заключается в том, что у вас должно быть гораздо больше низкоуровневых модульных тестов (unit tests), чем высокоуровневых сквозных тестов (broad-stack tests), выполняемых через графический интерфейс пользователя.

На протяжении большей части моей карьеры автоматизация тестирования означала тесты, которые управляли приложением через его пользовательский интерфейс. Такие инструменты часто предоставляли возможность записать взаимодействие с приложением, а затем воспроизвести это взаимодействие, проверяя, что приложение возвращает те же результаты. Такой подход работает хорошо поначалу. Легко записывать тесты, и записывать их могут люди без знания программирования.
Но такой подход быстро приводил к проблемам, превращаясь в «рожок мороженого» (ice-cream cone). Тестирование через пользовательский интерфейс подобным образом происходит медленно, увеличивая время сборки. Часто это требует установленных лицензий на программное обеспечение для автоматизации тестирования, что означает, что тесты можно запускать только на определённых машинах. Обычно такие тесты невозможно легко запустить в режиме без графического интерфейса (headless mode), управляемом скриптами для включения в правильный пайплайн деплоя.

Что наиболее важно — такие тесты очень хрупкие. Улучшение системы может легко привести к поломке множества таких тестов, которые затем придётся перезаписывать. Вы можете уменьшить эту проблему, отказавшись от инструментов записи-воспроизведения, но это сделает написание тестов более сложным. Даже при соблюдении хороших практик написания, сквозные тесты более подвержены проблемам недетерминированности, что может подорвать доверие к ним. Короче говоря, тесты, которые выполняются сквозным образом через пользовательский интерфейс:
- хрупкие
- дорогие в написании
- требуют много времени для выполнения
Поэтому пирамида утверждает, что вы должны выполнять гораздо больше автоматизированного тестирования через модульные тесты, чем через традиционное тестирование на основе графического интерфейса.
Пирамида также выступает за промежуточный уровень тестов, которые работают через слой сервисов приложения, что я называю подкожными тестами (subcutaneous tests). Они могут предоставить многие преимущества сквозных тестов, но избежать многих сложностей работы с UI-фреймворками. В веб-приложениях это соответствовало бы тестированию через слой API, в то время как верхняя UI-часть пирамиды соответствовала бы тестам, использующим что-то вроде Selenium или Sahi.
Пирамида тестирования часто всплывает в кругах Agile-тестирования, и хотя её основное послание верно, есть гораздо больше, что можно сказать о построении хорошо сбалансированного портфеля тестов. Распространённая проблема заключается в том, что команды смешивают концепции сквозных тестов, UI-тестов и клиентских тестов. Все это независимые (orthogonal) характеристики. Например, богатый JavaScript UI должен иметь большую часть своего UI-поведения протестированным с помощью модульных JavaScript-тестов, используя что-то вроде Jasmine. Сложный набор бизнес-правил может иметь тесты, представленные в клиентском виде, но выполняться только на соответствующем модуле, как это делают модульные тесты.
Я всегда утверждаю, что высокоуровневые тесты — это вторая линия защиты тестирования. Если вы получаете сбой в высокоуровневом тесте, это означает не только наличие бага в вашем функциональном коде, но и отсутствующий или некорректный модульный тест. Таким образом, я советую перед исправлением бага, обнаруженного высокоуровневым тестом, воспроизвести его с помощью модульного теста. Тогда модульный тест гарантирует, что баг останется исправленным.
Дополнительное чтение
Google Testing Blog раскрывает, почему вам не следует полагаться на сквозные тесты.
Adrian Sutton объясняет опыт LMAX, который показывает, что сквозные тесты могут играть большую и ценную роль.
Некоторые авторы утверждают, что пирамида не является хорошим распределением тестов, предпочитая больше интеграционных тестов и меньше модульных тестов. Но разница, вероятно, иллюзорна из-за различных определений понятия “модульный тест”.
Благодарности
Кевин Дишман подал мне идею добавить стрелки стоимости и скорости на иллюстрацию.
Этимология
Большинство людей знают о пирамиде тестирования благодаря Майку Кону (Mike Cohn), который описал её в своей книге 2009 года “Succeeding with Agile”. В книге он называет её “пирамидой автоматизации тестирования” (Test Automation Pyramid), но на практике она обычно называется просто “пирамидой тестирования” (test pyramid). Он впервые нарисовал её в разговоре с Лизой Криспин (Lisa Crispin) в 2003-2004 годах и описал на scrum-встрече в 2004 году. Джейсон Хаггинс (Jason Huggins) независимо пришёл к той же идее около 2006 года.
GIT fatal: inflateInit: out of memory
Delta compression using up to 24 threads.
fatal: inflateInit: out of memory (no message)
Помогло сокращение трэдов упаковки
git config --global pack.threads 1
Убрать при помощи awk ведущий пробельный символ строки
cat filename | awk '{$1=$1}1'
PMBOK 9 Knowledge Areas to 5 Process Group Mapping
| Project Management Process Groups | |||||
| Knowledge Areas | Initiating Process Group | Planning Process Group | Executing Process Group | Monitoring & Controlling Process Group | Closing Process Group |
| 4. Project Integration Management | 4.1 Develop Project Charter | 4.2 Develop Project Management Plan | 4.3 Direct and Manage Project Execution | 4.4 Monitor and Control Project Work 4.5 Perform Integrated Change Control |
4.6 Close Project or Phase |
| 5. Project Scope Management | 5.1 Collect Requirements 5.2 Define Scope 5.3 Define WBS |
5.4 Verify Scope 5.5 Control Scope |
|||
| 6. Project Time Management | 6.1 Define Activities 6.2 Sequence Activities 6.3 Estimate Activity Resources 6.4 Estimate Activity Durations 6.5 Develop Schedule |
6.6 Control Schedule | |||
| 7. Project Cost Management | 7.1 Estimate costs 7.2 Determine Budget |
7.3 Control Costs | |||
| 8. Project Quality Management | 8.1 Plan Quality | 8.2 Perform Quality Assurance | 8.3 Perform Quality Control | ||
| 9. Project Human Resource Management | 9.1 Develop Human Resource Plan | 9.2 Acquire Project Team 9.3 Develop Project team 9.4 Manage Project team |
|||
| 10. Project Communications Management | 10.1 Identify Stakeholders | 10.2 Plan Communications | 10.3 Distribute Information 10.4 Manage Stakeholder Expectations |
10.5 Report Performance | |
| 11. Project Risk Management | 11.1 Plan Risk Management 11.2 Identify Risks 11.3 Perform Qualitative Risk Analysis 11.4 Perform Quantitative Risk Analysis 11.5 Plan Risk Responses |
11.6 Monitor and Control Risks | |||
| 12. Project Procurement Management | 12.1 Plan Procurements | 12.2 Conduct Procurements | 12.3 Administer Procurements | 12.4 Close Procurements | |
Read more from PMBOK, Process Groups PMBOK
SoapClient не передает заголовки Basic Authentication
SOAP-ERROR: Parsing WSDL: Couldn’t find
Поставил сниффер на машину с сервером. Оказалось, что SoapClient, которому в options задавались логин и пароль не передавал заголовок Authentication. Причем было это, как я уже сказал, только на production сервере, где стояла Gentoo. Проблема была решена сменой версии php
5.3.8-pl0-gentoo на 5.3.25-pl0-gentoo
Вероятно, к этой версии баг был пропатчен.
ZF2 skeleton
composer create-project --repository-url="http://packages.zendframework.com" --stability=dev zendframework/skeleton-application test
WordPress 2.6.1 под php 5.3
Пришлось перетаскивать старый сайт сделанный на WordPress 2.6.1. Тут же повылетали сообщения, что передача по ссылке уже запрещена. Обновляться до новой версии 3 не хотелось, поскольку может обернуться необходимостью тратить еще кучу времени на фиксирование несовместимостей, а времени особо нет.
Починил пока при помощи sed:
find -name *.php -exec sed -i 's/=&/=/g' {} ;
Осталось пофиксить ругань на eregi в админке, а так, вроде запустилось.
Ошибка в меню Joomla
При переходе на php5.3 сайт на старой Joomla стал выкидывать warning.
modMainMenuHelper::buildXML() expected to be a reference, value given
Лечится простым фиксом в /modules/mod_mainmenu/helper.php. Меняем:
function buildXML(&$params)
на
function buildXML($params)
