What is DevOps?
DevOps is a term used to refer a set of practices that emphasize the collaboration and communication of software developers and Information technology(IT) professional while automating the process of software delivery and infrastructure changes. It aims at establishing a culture and environment where building. Testing and releasing software can happen at a high velocity and more reliably.
Note that it does not comprises of any one tool neither it excludes any one activities that we do in traditional delivery model.
One of the goal of DevOps is to having an environment where releasing more reliable application can happen more frequently.
To implement DevOps we may need many tools. Many of the tools we already used in one or the other activities.
Under a DevOps model, development and operations teams are no longer “siloed.” Sometimes, these two teams are merged into a single team where the engineers work across the entire application lifecycle, from development and test to deployment to operation. Testing/QA and security teams also become more tightly integrated with development and operations. They use different set of tool which help them operate and evolve applications quickly and reliably. These tools also help engineers independently accomplish tasks (for example, deploying code or provisioning infrastructure)
Benefits of DevOps
- Shorter time to Market
- Rapid Delivery
- Improved collaborations
Transitioning to DevOps requires a change in culture and mindset. At its simplest, DevOps is about removing the barriers between two traditionally siloed teams, development and operations. In some organizations, there may not even be separate development and operations teams; engineers may do both. With DevOps, the two teams work together to optimize both the productivity of developers and the reliability of operations. They strive to communicate frequently, increase efficiency, and improve the quality of services they provide to customers.
What are DevOps essential practices?
- Frequent but small updates
- Continuous integration
- Continuous Deployment/Delivery
- Infrastructure as a Code
- Configuration management
- Policy as a code
- Monitoring and Logging
- Communication and collaboration
DevOps tool set
There are no single tools that can achieve all practices. We need different set of tools. Some of the tool categories are listed below.
- Code — Code development and review, version control tools, code merging [ eg: GitHub, TFS ]
- Build — Continuous integration tools, build status [ eg: TFS, Jenkins]
- Test — Test and results determine performance [ eg: TFS test tools, Selenium etc]
- Package — Artifact repository, application pre-deployment staging
- Release — Change management, release approvals, release automation
- Configure — Infrastructure configuration and management, Infrastructure–as–Code tools [Eg: Docker, Puppet, Vagrant ]
- Monitor — Applications performance monitoring, end–user experience [ eg: NewRelic, Azure Application Insights]
For more details on DevOps refer the following sites.
There are many ways to make a Li-ion power bank. We will here use 3.7v Li-ion rechargeable battery and few other modules. You can purchase the battery from ebay or Aliexpress or extract from your old laptop battery. This power bank can be used for charging smartphones.
What all you need ?
Following are the components/module required to make your own Li-ion power bank. In the below project I have used only one battery of capacity 2600 mAH. You can add more battery in parallel to increase the capacity of your Li-ion power bank.
- Li-ion 3.7 volt battery of type 18650 and 2600mAh
- 5V Mini MICRO USB 1A TP4056 Lithium Battery Charging Charger Module
- DC-DC Boost Converter Step Up Module 1-5V to 5V
- A case of your choice
- USB connectors
- Connect Li-ion battery positive and negative to charger module B+ and B- respectively. The charging module has mini usb connector which can be used as input 5 v charging voltage. You can also connect In+ and In- to Solar panel (optional)
- Connect DC-DC boost converter to Battery via a switch. IN+ and IN- of boost converter should be connected to battery.
- Connect Ground and 5v to USB connector as output.
The battery charger module, is designed around a dedicated lithium-ion battery charger TP4056 chip. The onboard charge controller chip handles BATT.1 charging operation by processing the 5V DC input supply received through the USB socket (or through IN+ and IN- terminals). Output terminals (BAT+ and BAT-) can be directly connected to BATT.1. Two onboard SMD LEDs located on top of the circuit board provide charging-status indications.
BATT is used as the power reservoir. Since only 3.7V DC supply is available from BATT, DC-DC boost converter is used to cater to the stable 5V DC supply at output. If input voltage of 0.9V to 5V DC is available, this converter gives stable 5V DC output through its USB socket. When the battery is fully charged, a blue-coloured LED will turn on. You may remove the charger connected at USB-IN.
Time management has become absolute necessity in todays world. Its well know now that we are probably busier than we ever have been. We have started using lot of time saving devices from vacuum cleaners to microwave ovens to computers. But what technology gives also takes away. As we have increased the numbers of time saving devices and products to make our lives easier we have found ways to fill the time.
And a chronic lack of time leads to stress.
There are ways to mange your times effectively. Some of the time management tips to manage time effectively are listed below.
Make a time diary
This is very simple. Note down time spent each day in a week. Be honest and note each any every time. If you are watching 10 hours TV in a week mention it. Try to detail out each activity of the day like gym time, driving/commuting time, eating time, meeting time etc. Most of the time you will find out where you are spending more time. Next action will be strike off those activities where you should stop spending time. For example you may be spending 2-3 hours daily chatting with others.
Learn to say “NO”
When someone asks you to do something that you really don’t have time to do, say so, politely, but firmly. And don’t allow yourself to feel guilty. One reason we are feeling so busy all the time is that we are worse at setting personal boundaries around what we’ll say ‘no’ to. You should focus on your goals. Your time diary can help in this regard. Once you’ve blocked time for important, but often not scheduled activities, sign on for only those things that are important, family, friends and health. Once you know exactly what you have time to do, turning down things that don’t fit into your priorities is easier.
Time based to-do list
Create a to-do list that includes how much time you will spend on each item on the list. Lists are very helpful and helps prioritize on how you should go about the tasks. When you prioritize tasks you naturally focus on those that you can do immediately.
We all combine several activities into one all the time. Some multitasking is dangerous. Talk on the phone while driving and your chances of being involved in traffic accident is high. But there are lots of activities that can be effectively combined Listen to books while commuting, paying bills when watching television.
Don not be a perfectionist
There is nothing wrong with being ordinary. Perfectionism, otherwise known as paying excessive attention to every detail, important or not, is a kind of procrastination. Set rational goals for yourself. It is a fine thing to strive to be your best. It is counter productive to try to be the very best. Setting unattainable expectations of yourself just adds stress to your life.
Finally do not let any progress however small go unrewarded.
In nutshell – Use your time diary to make decisions about how you want to organize your time better. As you make progress in prioritizing and saying ‘no,’ let yourself enjoy that. It does not have to be a big reward, maybe it can be as simple as spending some time by yourself or getting a massage. It is important to acknowledge and enjoy your success.
Pre amplifier using LM358
- R1 – 10k
- R2 – 47k
- R3 – 10k
- R4 – 10k
- 1M POT
- C1 -4.7 μf
- C2 – 10 μf
This is a simple mic pre amplifier using LM358. The circuit is self explanatory and is based on LM358 op-amp.
The main function of a pre amplifier is to amplify small and weak signals. The pre amplifier amplifies signal with very high gain but does not have the drive current or current gain to drive the output. hence the boasted signal from pre amplifier is given to power amplifier where the current is amplified. You can connect to amplifier using LM386 described in my previous post or any other amplifier that you have.
In this post, a simple timer circuit switch for light is designed that will turn on a high power LED for a particular duration.
Timer is a switch that is operated by a timer system. The switch is turned on or off by the timer only after the preset time. One of the best examples of a timer switch is the sleep mode in televisions and computers. If no key is pressed for a particular duration, the television or computer will automatically go to sleep mode where the device enters a low power consumption mode or may even be switched off.
- T1 – BC337
- T2 – BC547
- D1 – 1N4007
- R1-270 Ω
- R2 -12 k
- R3 -10k
- R4 -220Ω
- R5 -1k
- VR1 -100k pot
- C1 -1000 μf
- Push switch
It’s a transistor based electronic timer. The design of the timer switch is very simple. A push switch triggers the light. The timer is based on the charging and discharging of the capacitor in the RC network. The circuit is very simple and self-explanatory.
How it works
When the switch is closed, the transistor BC547 is turned on. The 1000µF capacitor will charge at the same time through 220Ω resistor.
As BC547 is turned on and its emitter is connected to the base of BC337 through 12K resistor, it will trigger BC337 and it starts conducting.
As the LED is connected to collector of BC337, it is turned on. R1 acts as the current limiting resistor for the LED. When the switch is opened or button is released, BC547 will stay turned on due to the charge from the capacitor. The time of discharge of capacitor through 10KΩ resistor and 100KΩ POT can be set by adjusting the variable resistor.
A 1KΩ resistor acts as a protection resistor when the resistance of variable resistor is completely reduced.
The timer switch in this project will keep the LED turned on for a maximum of approximately 2 minutes.
As a tester what value add we provide? To answer this we need to answer few questions like
What is a business value of testing?
What is cost of quality?
Running tests by itself has no value add. Testing has value when it connects with some other goals or objective of the organization.
Some of the goals are listed below:
- Finding must-fix defects before release. This will reduce long term defect related cost.
- Finding less critical defects which have workaround. These workaround can be documented and reduce tech support and helpdesk cost.
- Reduce risk by running tests and giving confidence to delivery manager in releasing it to customer. This will give an assurance that the software will also pass the test on customer environments and probability of failure is less.
To measure the quantitative value add and efficiency of testing we need to look into Cost of Quality.
Cost of quality can be understood as cost of poor quality. Cost of quality shows that cost of poor quality is more and that good quality saves money. Cost of quality can be classified as
- Cost of prevention – Cost incurred to prevent bugs from happening. Example: training to development team.
- Cost of detection – Expense incurred in finding bugs and would include even if we do not find bugs. Examples: Test planning, design and execution etc.
- Cost of internal defects/failures – Expense incurred in re-work / bug fixing and expense of re-testing.
- Cost of external failures – Expenses we incurred because we did not found and removed all defects before release and there are defect leakages.
Spending effort on external failures are less if we spend more effort in defect prevention, detection and internal failures. It increases confidence that probability of external failures is less.
So it’s very clear that cost of quality is high if there is no internal testing. To phrase it correctly, no proper internal testing as you may argue that developers do testing. By Proper I mean complete end to end testing and not just unit level testing.
We clearly see that there is a need of testers and some value that testers can provide.
Also as a testers we should move out of our comfort zone and think ourselves as an independent advisor to customer and provide trusted advice to customer in terms of quality and quality improvement process.
Feel free to provide your thoughts on this.