Author Archives: tanminhtrieu

Learning Angular 2 (Week 2: 1/24 -1/30)

Following up with one of my previous posts about how our Software Development Capstone class will be working alongside with OpenMRS and AMPATH on some type of possible software that can be used within their medical system, I have recently started learning the basics of Angular 2. Angular 2 is the primary programming language used by OpenMRS so that is the language that is being requested for us to code in.

From the tutorials I have been following so far, it seems fairly simple to catch onto so far so that is a relief. One fascinating thing I’ve noticed is the similarity of Angular 2 and HTML. I’ve coded in HTML before and I was surprised to see that Angular 2 has the same syntax when it comes to the opening and closing brackets. Now I might just be ignorant to web programming languages and maybe all web programming languages follows that same syntax but whether or not that is the case; Angular 2 will be easier for me to learn than I had initially thought.

Just as a side note, I have started using WebStorm for JavaScript coding and so far it’s pretty good. I like the design and layout of the program, it kind of reminds me of the design layout of Komodo Edit.

From the blog CS@Worcester – Tan Trieu's Blog by tanminhtrieu and used with permission of the author. All other rights reserved by the author.

Professionals say NO.

I started reading this book for my software development capstone course entitled “The Clean Coder” and I’ve got to say, I’ve been enjoying it more than some other books I’ve read. The book is both informative but also has a casual feel to it because of all the stories and examples that the author uses. The first chapter of the book starts off with a key and important concept; professionalism. This makes sense because in order to be successful in a professional company, you need professionalism. Now for most this may sound trivial but from my personal experience, I have seen many examples that makes me question whether this concept is really that obvious to everyone.

Professionalism is summarized in the book as being responsible and accountable. Going into the second chapter of the book; a part of being professional is the ability to know when to say no. I truly feel as though this is such an overlooked idea because people always try to be the hero and save the day by constantly agreeing to tasks that they know cannot be accomplished. Now surely it may sound good to your employer or boss that you are saying yes to all these assignments but at the end of the day all you’re really doing is setting yourself up for failure which damages your credibility and in turn, ruins your accountability.

 

CS 448 Week 1 Blog The Clean Coder Chapter 1 – 2 (January 17 – January 23)

From the blog CS@Worcester – Tan Trieu's Blog by tanminhtrieu and used with permission of the author. All other rights reserved by the author.

Yay, Scrum!

For this semester, we will be collaborating with OpenMRS and AMPATH for the entire duration of the course to possibly help develop some type of new software that the association can use in their medical systems. That alone in itself is extremely exciting and I can’t wait to really begin diving into the hands-on programming of whatever software it is we will be developing because this will be the first time I am doing something that is career-based related in the real world.

What’s even more exciting is the new framework of Scrum that I have recently been introduced to. The idea of Scrum is to divide up the development cycle up into 1 to 2 week intervals known as sprints where there are goals and objectives set for each sprint that the team focuses on completing before moving onto the next sprint into the rest of whatever needs to be developed. I don’t really want to dive a lot into how Scrum actually works because I’m sure you can look it up online for a better understanding of it if you want but I am really looking forward to incorporating this framework into our collaboration with OpenMRS and AMPATH and gain further exposure to experiences I will most likely be using once I get a job as a software developer.

While I was job hunting, there were definitely a handful of companies and corporations who are looking for employees with experience in Scrum so hopefully I can add that to my resume after this course!

CS 448 Week 1 Blog (January 17 – January 23)

From the blog CS@Worcester – Tan Trieu's Blog by tanminhtrieu and used with permission of the author. All other rights reserved by the author.

CS 448 Software Capstone!

Woo!!! First day of the new Spring 2017 semester in CS 448 Software Development Capstone!

From the blog CS@Worcester – Tan Trieu's Blog by tanminhtrieu and used with permission of the author. All other rights reserved by the author.

First Software Technical Review

This week in our Software Testing class; we were assigned the task of software technical reviewing some code that was provided by our professor. It was quite exciting since that was the first legitimate testing in a group I have done in my programming career. The concept of software technical review so fairly simple and straight to the point so it was not difficult to dissect what it was that we needed to do in order to effectively review the given code. The outline of the assignment was to first individually review the code by ourselves without discussing our results with other team members. Afterwards, you would then meet up as a whole team and discuss about what each other found in terms of errors and faults within the code. The designated recorder of the group records any changes made during the meeting and compiles together a master list of all of the members’ combined discovery.

Although the testing process itself was new and exciting, there were a couple of complaints I had. The only factor that made the assignment frustrating is that some team members did not individually review the code before the meeting. Due to this, instead of delegating time to discuss our findings, we spent most of the class time waiting for some members to look over the code so we barely had any time to actually discuss as a whole group. Besides that however, it was a fun and memorable new experience in which I learned a lot!

From the blog CS@Worcester – Tan Trieu's Blog by tanminhtrieu and used with permission of the author. All other rights reserved by the author.

Deadly Linux Commands

When it comes to Linux, I would say I know the overall basics of how it is ran, operated and how to use it but I certainly am not a professional of knowing the more advanced commands and functions that Linux has to offer. Knowing that Linux is a very useful OS, especially for programmers, I wanted to know a little bit more about its commands. I was browsing through a couple of sites, blogs and articles and there was one that immediately catch my attention. The title of the article was “Deadly Commands on Linux” (http://www.softwaretestingclub.com/profiles/blogs/deadly-commands-on-linux) and it talked about 6 commands that are dangerous in the sense that it could completely wipe out your system if it is unintentionally (or intentionally) used. To briefly demonstrate just how dangerous these commands could be, there is a command rm -rf / – that will delete any specific file on a hard drive and all connected devices or if you want, delete all the files on a hard drive and connected devices. That’s not even the worst part; the worst part about this command is that it does not even ask you if you are sure about deleting those files, it will do it without prompting you about it. To be honest, I thought that command was pretty cool but on the other hand, I’m just thinking to myself “Why would you even have a command like that in the first place…”. But hey, after reading this article, at least now I know which commands to avoid when working with Linux!

From the blog CS@Worcester – Tan Trieu's Blog by tanminhtrieu and used with permission of the author. All other rights reserved by the author.

How Good Are Your Test Cases?

An important and on-going question that QA testers always ask is how good their test cases are. This can be measured in many ways; one way being code coverage. Code coverage is a good method to check if all parts of your code was executed; although it still would not tell much of how good your tests are even if your program has good code coverage.

An alternative to test how good your test cases are is through mutation testing. This was an interesting read for me because I had just read an article that briefly touched upon mutation testing last week so it was a cool follow-up article. Mutation testing is a technique that is used to assess how well your test cases react to faults that are intentionally injected into your code. This can be useful to evaluate how efficient your test cases can handle those faults and how it reacts to any unexpected issues.

Article: http://www.softwaretestingmagazine.com/videos/evaluating-test-cases-quality-with-mutation-testing/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+SoftwareTestingMagazine+%28Software+Testing+Magazine%29

From the blog CS@Worcester – Tan Trieu's Blog by tanminhtrieu and used with permission of the author. All other rights reserved by the author.

Hack More!

I read an article this week about which programming language hackers use (http://www.softwaretestingclub.com/profiles/blogs/which-programming-language-do-hackers-use) and while at first, I didn’t see the relationship between hacking and software testing, I came to realize that they have a good amount of similarities. Thinking more in depth about it, the act of hacking is just finding vulnerabilities in a software or program which is the same objective as QA testers (although the intents may be different).

Something interesting about the article was that when asked, “what programming language do hackers use”, the answer given by an expert hacker Adrian Lamo was totally not what I was expecting. He responded that he does not use a programming language which caught me off-guard because I didn’t think it was even possible to hack / test without the use of a programming language. The most memorable and significant piece of information I got out of this article was when Adrian Lamo further explains his answer by saying that its more important to learn how to read code rather than learning how to code. By learning how to efficiently read code, you can dissect how programmers think, what their tendencies are, and what common mistakes they make which can give you a better idea of what to test.

From the blog CS@Worcester – Tan Trieu's Blog by tanminhtrieu and used with permission of the author. All other rights reserved by the author.

Improving Testing Skills

I read an article this week entitled “How to Write a Test Case Structured for Your Project and Your Team” (http://blog.testlio.com/how-to-write-a-test-case-structured-for-your-project-and-your-team) which at first I did not find fascinating because as Computer Science majors, most of us should already be familiar with the general structure of test cases. However, despite the initial lack of interest I gave the article a chance and skimmed through its content and it turns out that there were some interesting test case structures that I have never heard or though of before.

One in particular that caught my attention was the “Verify-using-with-to test cases”. The article outlines the type of user of this structure to be beginning testers or employees (which is basically us once we graduate!) This test style can be applied to projects or any magnitude and is mainly focused on the actual language of the tests. The reason for the naming of this structure is because it follows the 4 key words: verify, using, with, and to. Instead of going into the definition of these 4 key terms, the example used in the article is this.

Verify: Courses send to bookstore
Using: Student ID, “Look up books”
With: Student is registered in at least one course
To: Show student courses list in student bookstore

After reading the article and going over the examples provided, I did find this particular test structure to be not only useful, but pretty easy to use so it’s something I look forward to using the next time I test!

From the blog CS@Worcester – Tan Trieu's Blog by tanminhtrieu and used with permission of the author. All other rights reserved by the author.

Old School Testing

We as humans are naturally built to adapt to changes. One of which includes the adoption of new forms of testing techniques for program testing. In today’s modern technological society, you would be crazy not to take advantage of the various benefits automation testing has to offer. Like, why do the testing by hand when you can have a computer do it for you?

I read an article this week that addressed that very same question; why do we need manual testing? The article entitled “13 Reasons Why Manual Testing Can Never Be Replaced” (http://blog.testlio.com/13-reasons-why-manual-testing-can-never-be-replaced) sheds some light on why manual testing should still be a relevant and significant form of testing. Out of the 13 reasons that were mentioned, there were particular ones that stuck out to me. One reason was that “bugs are found where you least expect them” meaning that by manually testing, you may find bugs you weren’t intentionally trying to find which can’t be done with automation testing because it can’t catch issues that the testers themselves, are unaware of. I found this quite refreshing because its true; tests cases can’t exceed the scope the developer intended it to have. Another reason I found to be interesting is that “mobile devices have complicated test cases”. This is something that can quickly become a nuisance because while an automated test case may take a while to program and create, manual testing for that same test case may take much less time and effort. So while new technological developments are progressive and useful, sometimes you just got do things old school.

From the blog CS@Worcester – Tan Trieu's Blog by tanminhtrieu and used with permission of the author. All other rights reserved by the author.