Tuesday, June 26, 2018

Milestone #2


Stage #1:
I had installed IIS on the virtual machine and created a regular site with an IP consistent with the virtual machine's IPv4 address (10.0.2.15). I had to allow port 80 to be accessible by adding an inbound rule to Windows Firewall. I was able to access the site using Microsoft edge.
Stage #2:
Before setting up the FTP site on IIS, I had to reconfigure some settings on the virtual machine to be able to use port 21. First, I had to allow the FTP Server app to communicate through Windows Defender firewall. Then, I disabled firewall for both private and guest networks to ensure that the firewall would not interfere with the connection process. After this, I set up the FTP server with an IP address consistent with my virtual machine's IPv4 address (10.0.2.15). Since "user" is the name of account on Windows 10, I gave "user" read and write permissions. I also created a new account with a username (FTP-User) and password to be able to use access the FTP site. I had to enable full control of the FTP-User on the security of the FTP storage file.  I downloaded Firefox and was able to access the FTP site using the credentials of the FTP-User account. I placed three random files into the FTP site storage to test if the site will display them, as shown below.

Stage #3:
I was able to successfully establish a connection using FileZilla and access all the contents of the FTP server.

I created a file on the desktop that successfully uploaded into the FTP server through FileZilla.

I successfully downloaded File 2 onto my desktop through FileZilla.

Friday, June 1, 2018

Virtual Machine Learning Path Documentation

          I expect to achieve unique and exclusive experience in software testing using virtual machines, as well as using the mechanics of a virtual machine to ease the testing process. With networking, I expect to be able to create access files over network shares.
          I had already installed VirtualBox on my both my main computer and laptop in the past. I already have the Kali Linux operating systems that I use for educational purposes. I had downloaded the Windows 10 operating system from the link that was provided by the internship website. During the summer of 2016, I had taken a course at the Applied Physics Laboratory called High School Defeating Hackers, where the use of a virtual machine was used.
          Since I had prior experience with virtual machines, this process was relatively simple for me, and I hope to be able to ways in which the virtual machine will benefit the testing process throughout the internship.

Factory vs Freelancer

          The difference lies in the responsibility and scope of implementing quality assurance principles. As an owner of a chocolate bar factory, I, along with team leaders, would help navigate several qualified teams in conducting quality assurance principles throughout the factory. Since it is a collection of employees, their contributions would support one another, addressing almost every aspect of quality assurance principle given that each employee is solving the same challenge. The process is also more efficient to have multiple employees collude with the intent to solve the issue, assuming each employee are dependent on each other. As long as every challenge and solution is documented, this system of employees implementing quality assurance principles is relatively efficient and productive. There is also how much dedication there is to ensure the implementation of all quality assurance principles. As an owner, it would be in my best interest to implement as much quality assurance as possible for my company to strive.
          However, as a freelance software guru, there is only myself to carry out the quality assurance principles, lacking the qualified assets that would assist me. There is also the potential I would be unable to address every single quality assurance principle for my program due to the lack of testers to reveal unforeseen glitches and bugs. Given that the software guru is an average programmer with sufficient skill in each field of the programming stages, there could be an imbalance in qualifications. For example, software security could be the stronger suit of the software programmer whereas exception handling could be less efficiently implemented. The responsibilities of a software guru is relatively large on a general scale, consisting of several smaller tasks.

Freelance Software Guru Quality Assurance

          If I were a freelance software guru, I would implement a series of quality assurance principles that I feel is most applicable to my software. This could involve the implementation of exception handling to prevent the software from crashing, and properly deal with errors. I would analyze my software for any glitches and bugs and patch the code as necessary. I would also design scripts that automates the testing of my software. Memory leak tests would be conducted at every checkpoint of my code to make sure all dynamically allocated data is properly freed from the memory. I would also include plenty of comments throughout my code in the event that I patch older code. All these assurance principles would be conducted and documented for each major checkpoint of my project, allowing me to compare older analyses of my software to its current state, therefore also documenting its improvement.
          In addition to what I would implement, I would tailor my software to meet the requirements of the end-user and the company I work for. There would be other exclusive quality assurance principles that I would implement that are specific to the operation of the software. For example, if the software is designed to store banking information, there would an exclusive quality assurance principle that would test the complexity of the encryption of user details.

Chocolate Bar Factory Quality Assurance

          In order to apply quality assurance principles, several chocolate bar making processes should be thoroughly examined for any defects and potential defects that may appear in time. For example, each bar should be a specific and consistent size based on the parameters given by me, the owner of the chocolate bar factory. There will be a regular maintenance of the machine used to size each chocolate bar, and ensure that the machine will function correctly for as long as it is operational. If a chocolate bar size is inconsistent with given parameters, the issue will be immediately corrected, and the defective chocolate bar will be melted down for reuse.
          Another example could be the ingredients used to produce the chocolate. Each ingredient must be of good quality and should not contain any traces of unhygienic matter such as bacteria. Also, the machine used to mix the ingredients should be thoroughly sterilized after a certain number of batches to ensure that there is no buildup of chocolate residue anywhere on the machine.
          Another example could be how the chocolate is packaged. There needs to be regular maintenance of the wrapping material as well as the wrapper machine. The wrapping material must be cut and wrapped around the chocolate bar in the precise location. The wrapping material must also be free of any unhygienic matter.

Quality Assurance vs Quality Control

          Quality assurance differs from quality control in several unique ways. Quality assurance involves the process of assessing the quality of the components and processes that are designed to develop the final product. However, quality control is the direct quality assessment of final products.
          Quality assurance is the identification and prevention of the defects in the processes used to make a product, with the intent to improve development processes. Systematic documentation and testing is the responsibility of all members of a team involved in developing the product.
          As for quality control, all focus is concentrated on the identification and correction of defects in the final product before its release. The purpose of quality control is to deliver products that fulfill customer requirements consistently. A specific team is normally selected to test the product for defects.

Introduction

          My name is Omar Baker-Agha. I am a rising sophomore computer science and cyber security major at UMBC. I am also an honors student at UMBC. I have a variety of programming knowledge, including Java, python, and C++. I also have much self taught experience in virtual machines and different operating systems, specifically Kali Linux. I had also taken a computer networking course in the Applications and Research Laboratory during my high school senior year. Last year, I had two internships, one at Epitome Technology Inc, and another at UMD in the computer sciences department. Both of which I was able to exercise my knowledge in cyber security and networking, as well as beta testing websites.
          This internship definitely appeals to my skill in testing and I hope to work with a team to accomplish the tasks at hand. I truly hope our efforts will benefit the software by the end of this internship, and ultimately solve technical challenges. I look forward to apply my knowledge in programming and networking as well as gain experience in backup solutions, automated software testing, and quality assurance principles at and from this internship.