Monday, September 5, 2016

New Project - Bullet Hell Game

So a few weeks ago I was talking to a friend at work and I found out that he has some experience working on games. We started talking about working on a game, and that's what he have done. We aren't going to sell it or anything, since I am a student and I'm using student licenses on most of the software I use.

He is going to do most of the engineering work on the game, and I will work on the art along with a friend I am in the progress of asking her to join us. We have an idea of creating a base ship, and then as the player progresses, more pieces will be added on to the base ship to show progress... "modular design" if you will.

I have been working on the base ship for a few days now, on and off. And I have now finished the first rough draft of the model. Here is a quick render from Maya:


As you can see, there is not much detail on the sides and most of the detail is on the gun or the top of the ship since this is the camera angle the player will look at the ship from. There is no point on adding detail where the player won't see it or might be too small to make a difference. The rest of the detail will come from the diffuse map and normal map.

Anyways, I am really excited to work on a game after so long. We are using Unity for it, and I will try to work on this as much as I can. Thanks for reading!

Tuesday, August 16, 2016

Texture Tuesday - Aug 16, 2016

With school starting next week, I am going to try and keep making these textures as much as possible. Hopefully it won't be just these two.

Anyways, this week I followed a different guy on YouTube since I didn't feel like making a wet metal texture like the next one on the playlist from last week. This time I found another guy that showed how to make a brick texture, and I also like it a lot: 


At the end I took a stab trying to make it a little unique instead of just following the tutorial. I like the outcome, but I think I messed up somewhere since it doesn't pop as much as the one from last week. Here are my renders from Marmoset Toolbag:



This one took me about 2 hours, a little over an hour to follow the tutorial and the rest of the time I spent just messing around and trying to add more damage to the texture.

That's all for now, thanks for reading!

Wednesday, August 10, 2016

Texture Tuesday - Aug 9, 2016

So I was thinking the other day that its been a while since I've actually posted any art on this blog of mine, it most been programming/coding related stuff for the last 8 months or so. So since Allegorithmic recently made their software free for students, I decided to get a free license and start to do some art for this blog.

Since I don't know much about Substance Designer, I looked up a tutorial to get me back into it and I created a metal floor texture following this tutorial:


I really like this guy since he takes his time to explain the tool at the beginning and all. This will be really useful for anyone that is new to the software package. Without further ado, here are a couple renders from the finished product:



It took me a bit over an hour to finish the tutorial and about 15 minutes to get a good render on Marmoset Toolbag, but I am really happy with the result. I forgot how awesome this software package is, and I look forward to working on one of these textures every week if I have time from now on.

That's all for now, thanks for reading!

Wednesday, June 15, 2016

Converting Test to NUnit

So we have been working on converting tests over to NUnit for a couple days now, and we have found a couple different things:

  1. Converting tests to NUnit is not very hard; we had to do some restructuring, but it was no big deal. 
  2. But the tests are not running in parallel like we want them to. We aren't really sure why this is, but we think it has to do with how the code was structured.
  3. We have now decided to scrap everything and start from scratch instead of trying to work with the existing code. 
So now that we have decided to start over and write everything ourselves, its probably going to take at least a month or two. While this means having to redo everything, I'm actually excited about this because it will give me the experience necessary on working on a web-testing framework done from the ground up. 

We are still going to use NUnit to run the tests, and we just have to start working on creating the proof of concept with some small test. Once we can prove that those small tests can run in parallel, we will have the green light to finish the project.

That's all for now, thanks for reading!

Friday, June 10, 2016

Parallel Test Execution

So after doing some research on how to run parallel test using Selenium Grid, I found out a few different things that I hope will be helpful to others:

First, running tests in parallel is actually not up to Visual Studio, Selenium Grid, or the language you are using (Ex: C#). That task falls onto the test runner as long as it supports it. The built in test runner on Visual Studio is called MSTest, and it doesn't support this function automatically. I read on some sites that you are able to change some stuff around to force it, but its not worth it in my opinion.

Second, there are a few different test runners that can run multiple test at once. The ones that I found are NUnit and XUnit for C# and TestNG for Java. I'm sure there are more, but those are the ones that I looked into. There are many differences between NUnit and XUnit, but it looks like NUnit is the one that is most like MSTest and therefore would require the least amount of work in converting the test to be compatible in NUnit.

Third, I had been looking for a while on some tutorials, but since I didn't really know what I was looking for I had a hard time. Once we had settled on NUnit as the test runner for the project we are converting, I was able to find a tutorial series on YouTube that explains in great detail how to run multiple tests at once and even how to run the same test using different browsers.

Now that we know what we are doing, we will be working the next few days on getting a few test converted over and see if we can get it to work properly. That's all for now, thanks for reading!

Tuesday, June 7, 2016

Test Execution Using Selenium Grid

So as I mentioned last time, I have been at work trying to figure out how to get tests to run on Selenium Grid, which wasn't that hard to figure out. The set up just needs a few manual steps, buts its really easy.

First, there is only a few lines of code that we need change in order for it to work. If you remember my last post on Selenium, I will be using the same code I did then and just update it.

The new code looks something like this:

using System;
using System.Diagnostics;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

namespace SeleniumTest
{
    class GenerateTokens
    {
        private RemoteWebDriver driver;

        public static void Main()
        {
            Generator();
            Environment.Exit(1);
        }

        private static void Generator()
        {
            var capabilities = new DesiredCapabilities();
            capabilities.SetCapability(CapabilityType.BrowserName, "chrome");
            capabilities.SetCapability(CapabilityType.Platform, new Platform(PlatformType.Windows));
            driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), capabilities);
            driver.Manage().Window.Maximize();

            driver.Url = "some-site.com";

            for (int counter = 0; counter < 10; counter++)
            {
                // Do something 
            }

            driver.Quit();
        }
    }
}

As you can see, we use a RemoteWebDriver object instead of just a IWebdriver like we did before. This basically is saying that the test will not be running locally (but it can, more on that later) and that we will be using Selenium Grid to run the test on a different machine. We specify that we want to run the test on a machine that has Chrome as the browser and that its also a Windows machine. After that, we don't really care what computer is running those test, all we care is that it meets those two requirements for the test.

But if you were to run this test now, it would fail, because it wouldn't be able to run the test locally. The test runner is looking for an instance of Selenium Grid at the address that you provided "http://localhost:4444/wd/hub" and it can't find it. Now you have to set up the grid with only one hub and at least one node to run the test. Here are the steps for the set up:
  1. First you have to have Java installed in your machine and make sure that it was added to your PATH. 
  2. Next download "Selenium Standalone Server" from the Selenium downloads page. And put it in a folder that you want, I created a folder in my C driver called Selenium for it. 
  3. You will need to open a command window and navigate to the folder and enter: "java -jar selenium-server-standalone-2.53.0.jar -role hub"
  4. You will then need to open a new command window and navigate to the folder again and enter: "java -jar selenium-server-standalone-2.53.0.jar -role node  -hub http://localhost:4444/grid/register"
At this point you have now set up a grid, comprised of just your computer but it it will get the job done for now. If you open a browser window and go to "http://localhost:4444/grid/console", you will see that your grid has one node available to run tests and which browsers are available on the node.

Now if you run the test that we wrote before, it will work. The test runner will send a test to the server and the server will then decide which "node" to send the test to. Then the server will return the test result to the test runner. That's a really simplistic way of explaining the process, but at least that's how I understand it.

We are still running into issues at work where we can't get the tests to run in parallel, but hopefully we will figure it out soon. That's all for now, thanks for reading!

Friday, June 3, 2016

Baptized by Fire

So I have now been at my new job as a Jr QA Engineer for a little over a week now, and I am no longer as nervous/scared as I was before. But I am still trying to make sure that I understand everything quickly.

For the last week I haven't been doing much, other than getting to know what the automated tests look like that we run on our website. But now I have been given my first assignment, luckily I won't be working on it alone. Another guy started at the company a few days before I joined the team last week, and while he has a ton more experience we are both new to QA Engineering in general, so they decided to pair us up.

We are going to be working on a few different things:

  1. Moving the automated test from an old TFS server and getting it all migrated to GitHub. 
  2. Update the test to make sure they run on Selenium Grid.
  3. Update the tests to that we can run multiple tests at once in parallel using Selenium Grid.
  4. Make the tests run/kick-off from GitHub instead of TFS when a new build gets pushed to the QA environment.
That last one I am not really sure how we are going to do at all, but the other ones I have been researching for the last few days... but there is a problem. All the documentation that I've found is either old, outdated, or for Java and not C# (which is the language which all the test are written in).

I think I am getting close to getting the test to run on Selenium Grid, I am still not sure how to get multiple tests to run at once in parallel. I know that we have to use a testing framework that allows for multi threading, but so far I haven't figured it out.

I will keep looking into it, and when I figure it out I promise to make a tutorial on this site and Youtube. I hate how hard this has been and if I can help someone else, I will do my best.

Anyways, that's all for now and thanks for reading!

Wednesday, May 25, 2016

To Do App - Finished

So the last few days I've been working hard to get a finished To Do web app finished. Its not like I have to finish it by a certain date, but I really wanted to finish it before I started my new position. And I am happy to say that I have succeed on the most part, but there are a few things that I still want to do. Let me explain in the following screenshots:


The screenshot above is of my home page, its really similar to my mockup that I created a few days ago. The biggest difference is that I added tabs to the task list. One tab shows tasks that are outstanding, and the other shows the tasks that have been marked as completed.


The reason I added the separate tabs is that I didn't really know what to do with the tasks that were marked as done. I didn't want to delete them from the database, and I didn't want to leave them in the same list as the outstanding tasks. I decided that having a list of completed tasks would be the best thing to do.


Adding a new task also didn't work out as I wanted it to. In my mockup, I had planned to use a modal that would keep the user in the same page, but I couldn't figure out how to do it that way. The only way I could add a new item was to go to a dedicated page for adding a task, and then take the user back to the homepage with the new task.

On the home page, each task has three buttons that allows the user to perform an action on the task that it belongs to: Edit, Details, & Delete. Delete is self explanatory, it simply deletes the task from the SQL database and by extension from the list.


Edit and details are almost the same, so I will cover them at once. Edit allows you to go into the task and update any information for it. For example: if you need to add notes or change the due date you can do that in the edit page. The you save it and it updates in the database as well as on the list. This is also the page to mark the task as "Done" when you have completed the task. I was trying to figure out how to do it from the home page, but I couldn't.

The details page is exactly like the edit page, but its a "read-only" version and you can't change any of the information, you have to go to the edit page to do so.


And finally here is my database that I set up on MySQL. Its a really simple table with only 6 columns. The book that I got on SQL really helped me out on how I should set up the table. I am not done with the book yet, I think I am only a 1/4 of the way done with the book, but I already know way more than I did a week ago about SQL.

I will try to keep working on the app if I have time to make it better and work from a single page, but for now I am done. I am super nervous at the moment since I start my new job in the morning (its almost 1 AM), and I don't really know what it will be like. But I am ready and I hope that I leave a good impression so I can stay on the team after the 90 day trail ends. That's all for now, thanks for reading!

Sunday, May 22, 2016

To Do App - Mockup

Since I don't have any experience with web development, I have been looking into how to build my to do app using Microsoft's MVC framework. For now I have an idea of how I want the final thing to look like, here are a couple of images of the mockup I made:


This is the home page, where it will show the list of outstanding tasks with a few buttons for actions on each task.


To add a new task, I want to create a modal that would allow the user to type in all the important information and then add it to the list.

As I mentioned before, this is just a mockup, so none of it is actually being persisted on a SQL database. I don't really know how I'm going to do all this, but I am still working on it. All that you see up there is just some tweaking that I made to the sample project and some simple UI updates using Bootstrap.

That's all for now, thanks for reading!

Friday, May 20, 2016

Prepping for the New Job

So since I got the new good news a couple days ago about my new position next week, I have started to try and learn more in the areas that I didn't do well during the interview.

Over the next few days I plan to learn as much as I can about SQL and websites using the MVC framework.

The first is obvious, like I've said before, my knowledge of SQL is very limited. I know that I won't become a SQL master over the weekend, but I hope to know at least the basics. My job actually bought me a book that I can use called Teach Yourself SQL in 10 Minutes. There are plenty of free resources available online to help me, but my manger thought this would be a better option so they got me the book for free. I really love working there.

I will also try to build a simple website using ASP.NET and the MVC framework because that is usually what new developers do in the company. For the first few weeks, new developers have to build a simple To Do List web app. Basically its an app that should allow a user to keep track of tasks, a user should be able to: Create, Read, Update, and Delete tasks. These tasks should be persisted to a database of some kind. Normally they use a NoSQL data base like RavenDB, but since I am learning SQL I will use MySQL DB for this web app. I don't know a single thing about web development, but I will try my best.

That's all for now, thanks for reading!