2017년 5월 30일 화요일

What is cloud computing?

What is cloud computing?

Refers to providing a computing environment such as file repositories, databases, virtual servers, networks, and software via the Internet.
In other words, it can be thought that it is collectively referred to as all the functions that the personal computer, including the server, can have or serve through the Internet.

To service everything on the Internet, cloud computing should have the following characteristics.



  • Broad network access
Various user devices must be able to access the service through the Internet.

  • On-demand and Self-service
Resources such as servers, networks, and storage must be available at the request of the user at all times and must be user-controllable.

  • Resource pooling
The entire resource provided must be shared and reused by multiple users, and instead each user domain must remain independent until the resource is returned.
To do this, virtualization and multi-tenant must be implemented.

  • Rapid elasticity
The resources provided should be supplied with rapid elasticity.

  • Measured service
The user's service usage should be measured quantitatively and delivered to the user.



Cloud computing having the above characteristics can be classified as follows according to the service range.

Source : https://blogs.msdn.microsoft.com/eva/?p=1383

  • Packaged Software
With the advent of personal computers, a model has emerged in which individuals manage their own resources, from hardware to software.
The software was packaged, and users had to install the packaged software on their computers before they could use it.
Moreover, in order to access the internet, I had to apply for Internet service to the telecommunication service provider, and if the storage capacity was insufficient, I had to do all the work to increase the capacity of the hard disk (HDD).
The user was a model that had to be professional at the computer.


  • IaaS(Infrastructure as a Service)
The IaaS model of cloud computing is a model in which the infrastructure resources are provided as services and only the rest are managed by the user.
Therefore, the user does not directly select an Internet service provider or increase the capacity of a hard disk (HDD), but is provided as a service.
The user's task is to determine the speed of the Internet and the capacity of the hard disk to self-service and pay for it.
Early cloud computing developed services with the IaaS model.
At present, EC2 and S3 from Amazon (AWS), Azure and IBM from Microsoft both provide services for the IaaS model.


  • PaaS(Platform as a Service)
The PaaS model extends beyond the IaaS model to O / S and middleware as a service.
The user can receive not only the hardware resource (H / W Resource) but also the O / S and the middleware running on the O / S as a service request.
Ultimately, the user is only concerned with application development and data management.
Currently, cloud computing is expanding its IaaS model service to PaaS.
Amazon (AWS), the cloud computing leader, and Microsoft's Azure all offer PaaS model services.


  • SaaS(Software as a Service)
The SaaS model extends the scope of the PaaS model to provide both application and data management services.
The user's task is to develop a business model and select the services corresponding to the business model.
Current cloud computing providers are not yet fully supporting the SaaS model.



From the local computing age to the cloud computing age, the world is changing rapidly.
Cloud computing is also rapidly evolving from IaaS to PaaS.
Cloud computing will soon evolve in SaaS in PaaS.

2017년 5월 29일 월요일

Game story of the Jumping Frog

I would like to try to make a story about the birth of the Jumping Frog game because I would like to help some people who want to make the game a hobby like myself.

I am currently a software development freelancer.
I am currently working on testing related development, and I have 18 years of experience!

This is the first time when I started making games in 2013.
I used the Opensource game engine that supports Cross-Platform libGDX (https://libgdx.badlogicgames.com/).
It was remembered that it was developed with 0.9.3 version at the time, but today I check it and release until 1.9.6.



The main reason I chose libGDX was because it supports Cross-Platform, so I was able to test it in Windows environment while developing.
I do not need to use the slow emulator of Android.
I remember that I was very impressed with the way Android runs in a Windows environment without any work.


Then, in March 2015, I received an article saying that Unity (https://unity3d.com) was provided free of charge.



I started studying Unity at the end of 2015 and made my first game in June of 2016.


  • First game: Follow Me

This is an arcade side-scrolling game.
The operation method should adjust the Leader bird by touching the button.
The goal of the game is to fly as many birds as possible to their destination.



This game failed to launch.
It was a game that I made while learning so the touch sense control failed. 
Also, the effect was not gorgeous, so I could not give the game a fun factor.
However, it means that I have tried to improve the understanding of Unity engine and the game with the feeling of ink painting.



  • Launch "Jumping Frog - Leaf Cleaner" to Android
The Jumping Frog (https://play.google.com/store/apps/details?id=com.kimssoft.jumpingfrog) is a puzzle game using a brush stroke.
The goal of the game is to get the frog to the destination with all the leaves removed.



As the genre of the game is a puzzle, I am not expected that it would be downloaded to many users.
Nonetheless, the reason I chose the puzzle genre was in character design.
I was so hard and time consuming to draw a picture.



So what I thought was a tile-based puzzle game.
The tile-based puzzle game only seems to be able to reuse tiles on all stages after only a few types of tiles.
Fortunately, the forecast was right, and the time spent on the picture was reduced a lot.
But a few downloads.



Of the 250 downloads currently available, 50 are acquaintances and the remaining 200 are paid advertisers.
Eventually, the number of downloads of the first game was disappointing.

If I am looking for meaning, it is my first release and I have created all the features that I want to create.
I used Unity's IAP library to add items to the item purchase function, and also included video ads using Unity Ads.
Admob ads were also attached for banner and full screen ads.
I also released both free and paid games.






  • Second launch "Jumping Frog - Dark River" to Android

The goal of the game is to avoid the obstacles (Tornado) in the dark river and reach the target point.



From "Jumping Frog - Dark River", I began to add a subtitle to the game.
The original title of "Jumping Frog - Leaf Cleaner" was just "Jumping Frog".
The second game was based on the theme of a frog, so I added a subtitle.
So I added a sub-title "Leaf Cleaner" to the first game.

You would have expected.
I was so hard to paint again that I had to find a way to recycle the design of the first game.
And I decided to make a second game with the idea of making a game with the Jumping Frog series.



The "Dark River" was better than the "Leaf Cleaner".
Within a few days of starting the ad, the number of downloads reached 450.
Download Country Rankings is Iraq -> Mongolia -> Bangladesh.



The "Dark River" and "Leaf Cleaner" spent $ 50 each on advertising campaigns on Google Play.
The "Dark River" then had twice as many downloads as the "Leaf Cleaner".
I do not know why the "Dark River" has twice as many downloads recorded.
However, I guess the game icon seems to be more obvious.



I am currently preparing for the Jumping Frog 3 and this time I am trying to make a game out of the puzzle genre.

2017년 5월 28일 일요일

All types of software tests

Learn about the types of software testing.

The types of tests can be divided into various categories according to various classification criteria.
In this article, I will classify and organize the test types as shown below.


  • Black Box Test vs White Box Test 
Black Box Test
Regardless of the internal structure of the software, it is tested only on the basis of external phenomena.

White Box Test
A person who understands the internal structure of the software tests the functions that are not exposed.


  • Functional Test vs Non-functional Test 
Functional Test
Tests to verify the functionality of the software.

Non-functional Test
Test nonfunctional things besides software functions. For example, performance or stability is tested.



If you divide the test into four areas and deploy each test, you can classify it as shown below.




  • Acceptance Test

It is a test that confirms whether the customer's requirements are met.
So analyze the requirements and extract the test items.
Acquisition testing should be managed from the beginning of the project as it is an important criterion that determines the end of the project later.



  • System Test

Perform tests from the perspective of the entire system.
The system test includes all of the requirements for satisfying the customer's requirements.
However, it is not a white box test like an integration test, but a test item is extracted from a black box view and tested.



  • Integration Test

It is a test to check for bugs that can occur while integrating each component developed.
When testing only individual components, it is a test to identify areas that can not be identified.



  • Unit Test

This is a test to check for the unit function.
Test each function of the function created by the developer.
That's why the code writer who best understands the code is mainly testing.



  • User Interface Test

It is a test to check each user interface function.
Check if the target UI component is operating normally.
UI testing is included both in the acceptance test and the system test.



  • Scenario Test

If the UI test is a test for a development UI component, then the scenario test is a combination of UI tests.
Create a test scenario based on your usage scenario and perform the test.
Scenario testing is included both in the acquisition test and in the system test.



  • Performance Test

This test confirms that the performance of the software meets the criteria.
So, it is very important to set a performance criterion. If performance is defined in the requirement, it should be based on the requirement.
If performance is not defined in the requirements, the performance criteria should be defined early in development by agreement with the customer.
For example, the response rate of a Web page should not exceed 5 seconds. " And so on.



  • Stability Test

It is a test to confirm that the software meets the stability criteria.
If the stability criterion is defined in the requirement, it should be based on the requirement, otherwise the standard should be agreed with the customer based on the general performance.
For example, "Do not let the system go down even if you use up to 1000 simultaneous connections for 24 hours." And the like can be said as a standard of stability.



  • Smoke Test

Smoke is a test that simulates smoke on a hardware board.
In other words, it is a test that confirms very basic functions.
Therefore, if you can not talk to the smog test, you can assume that other tests are not worth doing.
So a smog test is a test that precedes all tests.



  • Monkey Test

It is a test comparing monkeys touching the touch screen randomly.
It is a test to check if system error occurs by sending click event to UI component randomly.
Therefore, the test execution is performed for a predetermined time, and it is judged whether or not an error has occurred in the system in the meantime to determine a pass and a failure.



  • Usability Test

Usability tests are tested from the UX (User Experience) perspective.
In other words, it is not a test of functional parts, but a test that finds parts that the user may feel uncomfortable with.
That's why test automation is almost impossible, and a professional UX engineer has to perform tests.



  • Stress Test

It is a test to check the limits of the software.
The stress test is a test to confirm the specification of the product rather than the purpose of satisfying the requirement.
For example, increase the number of concurrent users to software and test and record the response rate of a web page.
The recorded web page response rate can be a reference for improving the performance of software or hardware.
Therefore, the stress test is often performed with irregular event.



  • Interface Test

Test whether data is coming or going properly between each module.
This is a test that checks for errors that occur when the individual developed modules are integrated and connected.



  • Regression Test

It is a test to see if an issue that has already been resolved occurs again.
It is a test that comes out of the idea that once an error has occurred is likely to happen again.
So it is the largest range of functional tests.
If any bugs occur and are resolved, there must be a test entry to see if the same bug is occurring.
So if you have an existing test, you should put a Regression label on it, otherwise add a new test item and put a label on it.
You should put labels on them and perform periodic tests regularly.



  • Memory leak Test

This is a test to see if a memory leak occurs in the software.
Long-term software is left unattended or combined with UI, Scenario, and Monkey tests to check for memory leaks. Memory leaks can lead to fatal software problems, so they are detected in advance through these tests.



  • Positive Test

It is a test that checks whether normal result is obtained by substituting normal value.
In a unit test, a test is performed by inserting only normal values into a function to be tested.
If a positive test results in a failure, the function is not implemented.



  • Negative Test

This is a test to check whether error handling is done properly by assigning an abnormal value.
In a unit test, a test is performed by assigning only abnormal values to a function to be tested.
If a negative test results in a failure, the function will need further error handling.



  • Boundary Test

Test with a boundary value, a value smaller than the boundary value, or a value larger than the boundary value.
In the unit test, it is a test to check whether the function responds properly by assigning values near the boundary value to the function to be tested.
This test is based on the idea that bugs near the threshold are likely to occur.




I have tried to summarize my own software test.
Each test is categorized based on its experience.
So there may be some arbitrary interpretations.

For example, I classified the Stability Test as Non-functional in the Acceptance Test.
However, if the Monkey Test and the Stress Test are interpreted as one type of the Acceptance Test, the scope of the stability test will vary.

This sort of classification is my personal idea because it can be classified differently according to the interpretation.












2017년 5월 22일 월요일

Software testing is....

Let's think about software testing.

Let's see how we define software testing at Wikipedia(www.wikipedia.org).

Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test.[1] Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. Test techniques include the process of executing a program or application with the intent of finding software bugs (errors or other defects), and verifying that the software product is fit for use.

Wikipedia defines software testing as "an investigation conducted to provide stakeholders with information about the quality of the product or service under test."
In addition, "an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation." It tells the value of the test.
Finally, "Test techniques include the process of executing a program or application with the intent of finding software bugs." The scope of the test.


The definition of Wikipedia for testing is not wrong.
But it is too comprehensive.
So I redefined to the following.

"Software testing is the process of making from risk to issue."

The risk is a potential risk and the issue is happened risk.
Both are dangerous, but risk has not happened yet, the issue has occurred.
The risk may not occur forever.




We can define test performing easy from definition of testing.

"Testing software is an activity that identifies the risks and determines whether the identified risks are issues."

In other words, the test activity can be diagrammed as follows.



2017년 5월 21일 일요일

Start my blog ....

I have been a programmer for nearly 20 years.
For 20 years, the internet has been the most helpful tool in my work life.
I wrote this article to express a little gratitude to the Internet.

When I first dreamed of a programmer and studied, I was able to get all the knowledge from the book.

But now I am learning more knowledge on the Internet than books.
In particular, blogs and Q & A posts have become indispensable tools for doing business.
The programmer's skill is called Internet search skill.

In this way, I was getting a lot of help from the unspecified number through the internet.
I was very grateful when I saw the well-organized blog posts and the sincere answers.
So I do not always get help, but I think I should return as much as I can.
So I am going to start this blog.

I do not know what value my writing will have.
But if you can give someone a little help, I will be happy with it.



So I will try to write according to the following principles.


1) Write easily!
    Sentences should be written in short sentences.
    Use tables or lists to make it easier to identify key content.
    Areas that need emphasis are have colored or bold effect.

2) Take advantage of pictures and sample code!
    Use pictures rather than text.
    Use some sample programs.


I will write a blog thinking about the above principles.