Wednesday, March 18, 2020

The Behavior Driven Three Amigos



The Three Amigos” refers to a meeting of the minds of the three primary roles involved in producing software:
1.     Business – Often named the “business analyst” (BA) or “product owner” (PO), the business role provides what problem must be solved. They provide requirements for the solution. Typically, the business role is non-technical.
2.     Development – The developer role provides how the solution to the problem will be implemented. They build the software and must be very technical.
3.     Testing – The testing role, sometimes named “quality assurance” (QA), verifies that the delivered software product works correctly. They also try to find defects. The tester role must be somewhat technical.

During software development, The Three Amigos should meet regularly to discuss how the product will be developed. It is a shift left practice to avoid misunderstandings, thus improving quality and avoiding missed deadlines. The discussions should include only the individuals who will actually work on the specific deliverable, not the whole team.

While The Three Amigos seems most popular in Agile, it can be applied to any software development process. Some advocate regularly scheduled formal meetings. Others interpret it as an attitude instead of a process, in which the roles continuously collaborate. Regardless of implementation, The Three Amigos need to touch base before development begins.

Applying BDD

The Three Amigos fits perfectly into behavior-driven development, especially as part of BDD with Agile. Behavior scenarios are meant to foster collaboration between technical and non-technical roles because they are simple, high-level, and written in plain language. Given-When-Then provides a common format for discussion.

Ideally, when The Three Amigos meet during grooming and planning, they would formalize acceptance criteria as Gherkin features. Those feature files are then used directly by the developer for direction and the tester for automation. They act like a receipt of purchase for the business role – the feature file says, “This is what you ordered.”

Since BDD relies on feature files as artifacts, The Behavior-Driven Three Amigos must be more than just an attitude. The point of the collaboration is to produce feature files early for process efficiency. Less formal meetings could quickly devolve into all-talk-no-action.



Saturday, January 25, 2020

My Key Skills 2019

Languages/Frameworks

C#.NET, ADO.NET, Entity Framework, ASP.NET Web Forms, ASP.NET MVC, Web API, .NET Core.

Web Technologies

HTML5, CSS3, Bootstrap, JavaScript, jQuery, AJAX, JSON, XML, Angular, Vue.js

Databases

MS SQL Server 2017, MySQL, NoSQL Mongo

IDE Tools

Visual Studio IDE 2017, Visual Studio Code, NetBeans, Eclipse

Tracking / Source control

Azure DevOps (TFS), JIRA, Git, GitHub, Office 365

Testing

Test Automation, Selenium IDE, Selenium Web Driver, Katalon, MS Test Manager, Appium.

Software Methodologies

OOP, Design patterns, CMMI, Agile, Scrum, Test Driven Development, Data Driven Development, DevOps, Cloud computing, Continuous Integration

Operating systems

Windows 10, Windows server 2016, Android, Linux Ubuntu

Saturday, December 28, 2019

Computer Science: Microprocessors Course Topics

- x86 Processor Architecture

*Architecture Details

*Memory Management

*I/O System

*Components of a Typical x86 Computer

- Assembly Language Fundamentals

*Basic Elements of Assembly Language

*Instruction sets

*Assembling, Linking, and Running Programs

*Defining Data

*Symbolic Constants

- Assembly Language Instructions

*Data Transfer Instructions

*Addressing

*Arithmetic Instructions

*Addition and Subtraction

*Data-Related Operators and Directives

*JMP and LOOP Instructions

*Boolean and Comparison Instructions

*Conditional Structures

*Shift and Rotate Instructions

*Multiplication and Division Instructions

*Procedures

*Strings and Arrays

*Structures and Macros

Tuesday, December 24, 2019

Physics: Digital Logic Circuits Topics

        * Digital Logic Circuits Introduction

- Digital systems

- Computer instructions

- Information representation

- Computer hardware

- Computer software

* Number systems and codes

- Number Systems

- Arithmetic

- Base Conversions

- Signed Number Representation

- Computer Codes

* Logic Circuits

- Boolean Algebra

- Switching Functions

- Switching Circuits

- Simplification

- Analysis of Combinational Circuits

- Synthesis of Combinational Logic Circuits

* Modular Combinational Logic

- Top-Down Modular Design

- Encoders and Decoders

- Multiplexers and de-multiplexers

- Binary Arithmetic Elements

- Comparators

- Prograrmmable Logic arrays and memories

* Sequential Devices

- Models for Sequential Circuits

- Memory Devices

- Flip-Flops

- Timing Circuits

* Modular Sequential Logic

- Shift Registers

- Counters

- Modulo-N Counters

- Multiple-sequence Counters

- Digital Fractional Rate Multipliers

- Analysis of Synchronous Sequential Circuits

- Simplification

- Synthesis of Synchronous Sequential Circuits

- Asynchronous Sequential Circuits

- Prograrmmable Logic arrays

* Logic Circuit Testing

 - Digital Logic Circuit Testing

 - Fault Models

 - Combinational Logic Circuit Testing

 - Sequential Logie Circuit Testing

 - Design For Testability

 - Built-in Self-test

 - Board and system-level Boundary Scan

Sunday, December 15, 2019

Computer Science: Compilers Topics

 

- Language Processors

- The Structure of compiler

- Lexical Analysis

- Synatax Analysis

- Semantic Analysis

- Syntax-Directed Translation

- Intermediate-Code Generation

- Run-Time Environments

- Code Generation

- Symbol-table Management

- Machine-Independent Optimizations

- Instruction-level Parallelism

- Optimizing for Parallelism and Locality

- Interprocedural Analysis



Friday, December 6, 2019

Computer Science: Operating Systems Topics

- Overview

*Introduction

*Operating-System Structures

- Process Management

*Processes

*Threads & Concurrency

*CPU Scheduling

*Process Synchronization

*Deadlocks

- Memory Management

*Main Memory

*Virtual Memory

- Storage Management

*Mass-Storage Structure

*I/O Systems

- File System

*File-System Interface

*File-System Implementation

*File-System Internals

- Protection and Security

*Protection

*Security

- Virtual Machines

*Types of VMs

*Virtualization

- Networks and Distributed Systems

*Network Structure

*Communication Structure

*Distributed Operating Systems

*Distributed File Systems

*Remote File Access

- Real Operating Systems

*UNIX System

*Linux System

*Windows System

Monday, December 2, 2019

Test Frameworks per programming Language


C#
MSTest
NUnit
SpecFlow
xUnit.net

Java
Cucumber-JVM
JBehave
JUnit
Serenity BDD
TestNG

JavaScript
CucumberJS
Jasmine
Karma
Mocha
Protractor
Serenity/JS

C++
Catch
Google Test

Ruby
Cucumber
RSpec
Shoulda
Test::Unit

Perl
Test Anything Protocol
Test::More
Test::Simple

PHP
Behat

Python
behave
pytest
unittest

Scala
ScalaTest