Wednesday, October 3, 2018

7 Steps to Creating a Successful Test Strategy

What is the Test Strategy (TS)?
Test Strategy is the way you determine the test approach, what you want to achieve, and how you can achieve what you want.
In the strategy file, make a plan to approach the test object explicitly. This is one of the most important documents of QA. Writing effective TS is a skill that every tester should have. Thinking about TS thoroughly will help to identify the missing requirements. Activity before the test helps the team determine the test coverage and coverage of the test. It helps the test manager capture the status of the project at any time. The likelihood of a lack of test activity is low because of TS.
There are no test plans that have run the test case and will be less effective. There are teams writing TS but when the test does not look back. TS should be discussed with the whole team to unify responsibility, approach to the test.
Test Strategy vs Test Plan?
According to IEEE Standard 829-2008, TS is part of Test Plan. Test Plan includes the scope of the project and the test objectives. Simply, it will include: test what, features tested, features not tested, evaluation, test scheduling, test management resources. In the meantime, the TS provides guidance, a test approach to achieve goals and the performance of test types defined in the test plan. It includes test objectives, approach, test environment, tools and automation strategies (if any), hazard analysis and contingency planning. Summary, Test plan is what you want to achieve, Test Strategy is the plan to accomplish the goal you set out.
What is the Strategy Strategy?
1. Scope and Overview.  Project overview with information about who will use this material. Please add details about the reviewer and approve the TS. Define test activities and test periods with a clear timeline corresponding to the project timeline defined in the test plan.
2. Test approach. Determining the test progress, test level, roles and responsibilities of the project members. For each type of test (eg, unit, integration, system, regression, usability, load, performance, and security testing), describe why the test should be executed, when it comes to information. test, test, test approach, test automation strategy and auto test tools if available. When testing, there are many new bug fixes, how to prioritize bugs, assign bugs, test bugs, regression tests, UAT. You must define exactly what steps need to be taken for each activity. For each activity, include animations that describe things related to each activity, including the number of testers and who performed the activity. For example: Bug Management Cycle - Include a new process log bug that will include, where to log, new log bugs,
3. Environment Test.  The test environment includes information about the number of environments and settings needed for each type of environment. For example: 1 test environment A for functional testing, 1 environment B for UAT. You need to determine the number of user tests per environment, user access, hardware and software requirements such as operating system, memory, free space, etc. Defining the requirement to create test data is also important. In the TS, give instructions for creating test data explicitly. Finally, a back up and restore plan is needed to ensure no loss of data in the event of a code failure.
4. Test tool.  Identify test management tools and automation if available. With performance tests, load, and security testing, describe the approach and tools needed to execute. Note if the tool is open source or commercial, who can support it.
5. Control release.  Unplanned release will lead to many inadequacies: there will be too many different versions of the software and can not be tested and managed. Establishing a plan / tool / process for managing these releases will ensure that all builds are tested prior to release to the Customer.
6. Hazard Analysis.  List all the hazards you can think of. Provide clear plan to counter and reduce the damage if occurred with the project.
7. Review and approve.  When all the activities are listed in TS then it should be reviewed by the relevant individuals such as PM, dev department, admin system. If there are any corrections to this document, it should be noted at the beginning of the document, with the name of the approver, the time of editing, and a note if any. Test Strategy is a living document, which means it should always be reviewed and updated.
Summary:  TS is a reflection of the tester's performance in the software testing process. We should refer to this document when testing and follow the plan until release. When project close to release with customers, we often look at what was outlined in the TS. But we need to discuss with the project whether the abandonment of any test activity poses a threat or problem after release. Most Agile projects ignore TS writing because they focus on test execution rather than writing documentation. But setting out a simple TS document will help set a clear plan, minimizing possible hazards to the project.

9 tips to write clean code, nice code

I have been writing code for 20 years. During that time, I worked with 17 different language development teams to build hundreds of projects. These include everything from a simple blog, to APIs that support 3,000 requests per second, to bestselling apps.
From these experiences, I believe the most important thing about code is that it's easy to read.
This is something that many developers still overlook or do not care about. Unfortunately, because the code readability will actually change and affect everything in your project. In this article, I will list 9 ways to help you write better and easier to read code.

Puzzled in choosing Format

Too many things are wasted when you keep thinking about formatting. It's a never-ending debate between Tab vs Space. Or Allman vs. K & R. Instead, apply a standard format to the codebase and automate it. Then, you can focus that energy on the code.

Code died

All commented blocks, unused variables and unreachable code are considered dead. Over time, they will kill your codebase so that you have to search and kill the dead code. While it does not have to be your main focus, always be a Scout.

Code heavy

The foundation of almost all code is logic. We write code to make decisions and calculate. This often leads to branches or loops that create cross-cube and nested code blocks. Thus, it makes the code complicated and unreadable. You can solve this problem with the return, guard clause or features of functional programming.

Use objects

Although this is the era of object-oriented programming, devs still write very bad code with long winding parameters, data clusters, and custom array / dictionary structures. However, they can be refactored into objects. This helps to unify the structure of the data.

The code is too long

When you determine that the code is too long, immediately recognize , regroup , and refactor it. This simple process allows you to define the context and complexity of the code so that you can refactor it to readability and less complexity.

To name

Certainly, naming is always a difficult task. But that is because we make it more complicated than necessary. There is a little trick that works well with many things in programming, including naming. That is, never let yourself be stuck for thinking about naming something. Instead, continue writing the code. Putting a name that is clear and simple and time-consuming to take care of the code will be more practical.

Leave a comment

Do not write code that you must constantly explain, instead, try to write code that is easy to understand and need as little comment as possible. As such, your writing skills will improve.

Use a reasonable return

You should try to return a reasonable value instead Null. Ideally, something that allows code to call to perform even in the case of a negative value. If there are really special cases, you still have better ways to handle them than they are null.

Symmetry - Symmetry

Symmetry represents the creative side of the text. It is the foundation of many other practices: naming, structure, objects, pattern. It may vary by language, codebase, and development team. However, once you start applying symmetry to your code, things will become clearer and easier to understand.

Saturday, September 29, 2018

Cloud's budget will reach $ 1.3 trillion by 2020

More than $ 1.3 trillion in IT spending will be driven directly or indirectly by the transfer to the cloud in 2022, according to Gartner.
It seems this is an important transition for traditional infrastructure vendors, as more and more businesses are switching to Cloud. According to a new study by Gartner, 28 percent of enterprise IT budgets will move to Cloud by 2022, up from 10 percent from 2018,
The budget for cloud services will grow faster than traditional, non-cloud solutions. However, these traditional projects will still account for 72% of revenue for the enterprise IT market by 2022.
Prior to 2018, the shift to Cloud took place primarily for application software, particularly in customer management (CRM). According to a Gartner spokesman, "CRM is currently exploding when the budget for the cloud is higher than traditional software. This trend will continue and expand to include application software, including office suites, content services, and collaboration services, by the year 2022. Application software will keep the highest Cloud conversion rates. during this period ".
More than $ 1.3 trillion in IT spending will be driven directly or indirectly by Cloud in 2022. Providers who are able to capture and anticipate this growth will benefit from long-term success. the next decade.
Gartner warns that technology vendors use cloud technology as a measure of market opportunity.
Michael Warrilow, vice president of research for Gartner, said: "The change in how your IT budget goes to cloud-based alternatives is irreversible. The transfer process on the cloud will open the door to more agility and agility, one of the most exciting benefits of this technology. "
"As cloud technology becomes more and more popular, it will greatly influence enterprise IT decisions, especially in system infrastructure."

How and where start with Big Data

The explosion of data from the Internet and the need to exploit un-structured data in addition to the in-house data have set the stage for hard-to-find mathematical data storage, processing and management. So, Big Data was born.
Big Data is a term used to refer to a very large set of data and is so complex that traditional data processing tools and applications can not handle it. But Data you know is big enough to handle Big Data. And are you sure that you are using the smart data wisely, not "using a knife to slice bananas"?
Ask questions, ask questions around the problems, algorithms to be applied, career opportunities will be answered by experts through the event "STARTING STUDIES U BIGDATA FROM HERE AND HOW" Quickly register today!

IBM launches a tool to detect "lying" AI?

IBM has launched a software service that scans AI systems as they work to detect bias and provides explanations for decisions made by AI.
The new IBM Cloud-based reliability and transparency model works with models built from a variety of machine learning frameworks and AI-including IBM's own Watson technology, as well as Tensorflow, SparkML, AWS SageMaker. and AzureML.
SaaS (fully automated) helps explain decision making and whether AI is biased - so when decisions are made - it will be possible to identify possible outcomes. not fair.
It will also automatically suggest data to add to the model to minimize any deviations that have been detected.
The explanatory power of AI decisions includes identifying the factors that influence decision-making; confidence in the proposal; and the factors behind that confidence.
IBM also said that the software keeps track of the accuracy, performance and fairness of the AI ​​model, along with the pedigree of the AI ​​system - meaning that it can be easily retrieved and retrieved if needed. For service or to comply with regulations and requirements.
For an example of compliance, the EU's GDPR framework relies on automatic decision making and includes the right to be heard explaining in detail how algorithms operate in a number of fields. Incidentally - that means businesses may need to check their AI.
The IBM AI scanner tool provides an automated decision analysis through dashboards - so you do not have to have IT skills to read them.
IBM is also not the first company to discover business opportunities around AI bias. A few months ago Accenture released a tool to identify and fix AI to help them be more fair.
In addition to launching the AI ​​payment engine, IBM said its research division will launch a suite of open sourcing tools to detect and mitigate bias in AI - with the aim of encouraging process "global cooperation to solve this problem".
"IBM is currently leading the industry in establishing reliable and transparent guidelines for the development of new AI technology. We are bringing new solutions to AI businesses that face a lot of potential risks to any wrong decision. "- David Kenny, SVP of Cognitive Solutions at IBM said in a statement.

What is needed to become a Software Architect

What is Software Architect?

Before going into specific SA is what we see the definition of SA:
A software architect is a software expert who makes high-level design choices and dictates technical standards, including software coding standards, tools, and platforms. The leading expert is referred to as the chief architect. (Source: Wikipedia: Software Architect)
Software Architect (SA) is a professor who is responsible for designing the framework for the system, how to divide and interact between components, write architecture overview papers, coding convention, and direction. Let developers develop detailed designs for each function. So if you work with 1 SA well, when adding new features, the complexity of the software will not increase much.
What is the role of Software Architect?

To the necessary skills of an SA, we must first understand what their job is. It includes the following:
  • technology decisions and development platforms
  • Generate architectural documents (coding standards, tools, review processes, ...)
  • Understand business requirements
  • System design based on requirements.
  • Follow dev to check / review code and system.

What are the essential skills of Software Architect?

1. Design

  • Basic knowledge of design patterns : Design pattern is one of the important things that SA must have to develop and maintain a system. With design patterns you can reuse to solve some of the problems encountered before.
  • Dive Into Patterns and Anti-Pattern : Once you know some basic patterns, you should deepen your understanding of the software design pattern. The author has introduced the book  Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions  .
  • Know the quality rating : That's why documentation and coding standards are outlined above to apply. Doing so will lead to a system that is easy to maintain, secure, reliable, ... (which everyone wants).
What is the theory?
  • Experience and understand the different technology stack : This is the most important action if you want to become a good SA. Try a new technology experience because each technology will have different design aspects. Nor does it necessarily have to know all the technology but be aware of the important things that your field.
  • Analyze and understand the pattern that applies : Take the example that is the Angular framework. When you use it you can learn a variety of patterns such as Observables, Dependency Injection, etc. Try to understand how they apply to the framework. And if you already understand, you can learn more about how the code works.

2. Decide

A SA must be able to make decisions and lead the project or team in the right direction
  • Know what is important / necessary : Do not waste time on things that are not important. Learn to appreciate what is important because no book teaches you that. Personally, I usually use two characteristics to evaluate that:
(1) Conceptional Integrity : If you decide to do something in a certain way, focus on doing it that way, although it may be better to do it in a different way. Often this leads to a simple concept, easy to understand and maintain.
(2) Uniformity : If you define and apply a naming convention, it is not just a matter of capital letters, but apply the same way anywhere.
  • Priority : Some decisions are made early. If it is not taken into account sooner or later, it will often be difficult to separate it later and be a maintenance nightmare or worse, the dev will have to stop working until the decision is taken. In some cases, making a provisional decision (probably not good) is better than doing nothing. But first consider the priority of the upcoming decisions. There are many ways to do this, I think you should look at the  Weighted Shortest Job First (WSJF) model, which is often used in the Agile development model.
  • Know your power : Do not make decisions about things that do not belong to you. This is important because it affects your job position if not taken into account. It's a good idea to clarify to everyone about your responsibilities and role. If you are involved in a project with more than 1 SA, you should consider proposing ideas or ideas instead of making a decision.
  • Consider multiple choices : Always list more than one option before making a decision. In most cases where I have participated, more than one option is feasible (really good).

3. Simplify

Remember the principles of Occam's Razor. Can explain this principle as follows: If you have too many assumptions about a problem to solve, to solve the problem you may think wrong or lead to other complex solutions. These assumptions should be minimalist (think simple) to be able to work out a good solution.
  • Shake the solution To solve the simplest solution, we will usually connect the solutions together and see the problem from different positions. Try to figure out how to deal with top-down or bottom-up. If you have a data flow or a process, first think in the direction from left to right and vice versa.
  • Take a step back : After long debates, often a complex solution will be the result. But they are not the end result. So stop and think is it really meaningful? then review the problem and refactor. The debate may be going on the next day, but at least we have time to think about a better and simpler solution.
  • Devide and conquer : Simplify the problem by dividing for the rule. Split the problem and solve each one. After validating, match them and have the most overview
  • Refactoring is not evil : Accepting problem solving is a bit complicated if there is no better solution at present. We can think about that later. Prior to refactoring, we should have: an automated tests to ensure that system functions work correctly and are agreed by the stackholders.

4. Code

As a SA you should at least know what your dev is doing, do it right, etc. If you do not know then it can lead to 2 situations:
  1. Your dev does not respect what you say
  2. You do not understand the difficulties or dev issues that need support
  • Have a side project : The purpose of the side project is to experience the new technology. Practice makes perfect. Reading the tutorial or the good and the bad aspects of a particular technology is just a matter of reading books.
  • Find the right things to try out : As the past has said above, you do not need to know everything (all technologies). Because that is quite time consuming and seems to be countless. One page I frequently visit is  Technology radar . They are divided into the categories of technologies, tools, platforms, languages, and frameworks into 4 categories:  Adopt,  Trial,  Assess and  Hold. With categories so divided it is easy to get the most overview and the reader easily assess the trend to find out.

5. Document

Architectural documentation is sometimes very important, for example, in the case of code guidelined. The original documentation will usually be required before the code starts and should be adjusted regularly, constantly. Some other documents are automatically generated by code such as: UML class diagrams, API doc, ...
  • Clean Code : Code can be considered the best document if it is written properly. A SA needs to review and distinguish good / bad code. That reference is the book Clean code
  • Generate documentation where possible : The system can change constantly (spec change is a common occurrence) and it is difficult to update doc continuously. For example, the API will often update or add new updates regularly, so updating the doc by the rice is hard. So some tools such as Swagger or RAML is one of the tools to help in this.

6. Communicate

From my observation, this is one of the least appreciated skills. If you are quite good at design but can not express your ideas, your thinking seems to have less effect or even fail.
  • Learn how to Communicate Your ideas : A SA you will not only participate in one meeting where you will be operating normally and moderate it. So learning to express your thoughts and ideas is very important
  • Give talks to large groups : Expressing ideas in a small team or as a group can help you cultivate this. If you feel this is a bit difficult then start by saying it to your best friend. This can only be done when you leave your comfort zone. Be patient, it takes time to improve.
  • Find the right level of communication : Every person shall have the attention and look for a different problem. So, you need to solve the problem of each individual. For example, a dev would usually be interested in a particular solution to a problem, while a manager would usually be interested in the most cost-effective solution.
  • There are always questions from people around you that you need to answer right away. Make regular slideshows of Q & A that you can show and explain to people.

7. Estimate and Evaluate

  • Know the basic project management principles : As an SA or team leader, you always have to estimate the time spent on workloads: how long it takes, how much work is needed, what skills are needed, and so on. answer the questions "management" on. Remember that time estimation is not just about implementations but also includes activities like tests and fix bugs.
  • Evaluate "unknown" architecture : You need to evaluate which architecture is appropriate for each context. This is not easy, so you can prepare it by creating a set of questions that are common to all architectures. Some ideas for these questions:
(1)  Design practices : Which architecture systems follow this pattern? Are they often used and used properly? Does the design follow a red line or have any development out of control? Is the structure clear and separate?
(2)  Development practices : How do you follow the Code guidelines? How to manage code versions? Deployment practices?

Conclusion

If you intend to become a Software Architect, your career path will usually look like this:  Junior Developer -> Developer -> Senior Developer -> Team Leader -> Software Architect. To be a good SA you need to cultivate a lot of things as listed above. Hopefully the article can help people to have a look at the SA location (not leisure, simply drawing the deer way as people usually think).

The 10 most sought after skills in 2020

In a world increasingly dominated by robots, artificial intelligence and virtual reality, you will need to firmly grasp the skills that employers are looking for.
Here are the top 10 skills that technology companies most "aspire" by 2020:

Flexible thinking

This involves creativity, logical reasoning, and problem identification. In other words, it involves flexible communication. Employers want to know you have the ability to think seriously, to listen deeply and to be able to communicate well.

Negotiation skills

This has a particularly high demand for such things as computing and mathematics, such as data analysis and software development. It will also be very important in art and design.

Teamwork spirit

This means actively seeking ways to help others. You support people in your team, superiors and everyone in your industry

Ability to evaluate and make decisions

In the Bigdata era there will be greater demand for those who can analyze and use it to make intelligent decisions. Good judgment also involves knowing how to make a good proposal for the manager.

Delicate in communication

Robots can do a lot of things, but they still can not read human emotions. Employers will appreciate people who are capable of capturing the emotions of others.

Co-operate

Again, this is related to social skills. It involves being able to collaborate, work in a group of individuals.

HRM

This includes being able to motivate people, develop the skills of the staff, and choose the best people for a job. This will be especially important for management positions in the communications and energy industry.

Creation

By 2015, creativity ranks 10th on the list. But by 2020 it is one of the top three skills employers will look for. Why? Because when technology is evolving at a rapid pace, employers want creators to be able to apply it to new products and services.

Critical thinking

As automation is becoming more and more popular, the demand for human resources can be used in logic and reasoning. This, in part, because machines must be used optimally. That is why the company always wants people who can use them thoroughly to benefit the company.

Problem solving 

Technology can make life easier, but it can also make things more complicated. For example, you can use your device to view the information you need. But without a human being analyzing those results, you will almost certainly not be able to get the insights you need.
The report finds that 36 percent of jobs in the industry will require the ability to solve the problem by 2020.