Elance Profile Crafting

One of the great things about becoming a freelance writer or editor on Elance is that you can start bidding for jobs almost immediately.  Before you place a bid on your first job, take a little time to complete your Elance profile.  Online freelancing can be very competitive and your Elance profile is one of the most effective tools for gaining a competitive edge.

The empty profile that’s waiting for you to fill out on your Elance Provider page can be intimidating.  If you’re not sure how to fill out some of the sections, it’s tempting to leave them blank.  Don’t give in to this temptation.  Go to the Elance home page and click on the “Hire” link at the top of the page (so that you’re looking at the Employer side of the website).  You can then search through the list of providers for your skill area.  Study the profiles belonging to some of the top providers and you’ll begin to understand how a top-notch profile can help win jobs.

Your Elance profile should convey these important messages to employers:

  • That you are a real person who is sincere about freelancing.
  • That you have the skills to complete projects.
  • That you have the experience to get the job done.

One of the first decisions to make about your profile is whether to include a personal photo.  A photo will immediately let employers know that you are a real person.  It will help you make a connection with employers.  If you’re shy about posting your portrait online, then post an image that will represent your brand.  Whatever you do, don’t leave the photo area of your profile blank.  This won’t help you stand out from other job bidders and may even give employers the impression that you’ve got something to hide.

The Overview section is where you sell yourself to employers by describing your background, skills and expertise.  Your Overview should be concise, compelling and professional.  Introduce yourself by name in your Overview and you will be reinforcing the fact that you’re a real person.  Once you’ve completed your Overview, be sure to proofread it carefully.  If you’re looking for work as a writer, editor or proofreader, then the last thing you want are misspelled words and grammatical errors in your Overview.

The Skills area of the profile provides ratings for various skills.  You can choose your own rating scores or you can take official Elance tests and use the test scores for your ratings.  Put yourself in an employer’s shoes – would you be more impressed by a high self-rating or by a high rating based on a test score?  The answer of course is the test rating.  If you’re confident enough about your skills to freelance, then take a couple of Elance tests.

The Employment section of the profile is where you can provide information about your job experience.  Some freelancers include a complete job history in the Employment section, but many choose not to make this information public.  A resume can always be provided upon employer request.

Finally, the Credentials section allows you to provide references from former employers and information about your education and degrees.  These credentials can be verified by Elance for a small fee.  If you have verified credentials, a bright green label will be displayed next to your freelance name on every job bid.  This is a fantastic way to differentiate yourself from other freelancers and to make your profile standout from the crowd.

Difference Between Cloud Computing and Distributed Computing

Cloud Computing vs Distributed Computing 

Cloud computing is a style of computing in which resources are made available over the internet. Most often, these resources are extensible and are highly visualized resources and they are provided as a service. These resources can mainly be broken down to applications, platforms or infrastructure. The field of computer science that deals with distributed systems (systems made up of more than one self-directed nodes) is called distributed computing. Typically, distributed computing is used to utilize the power of multiple machines to achieve a single large scale goal.

What is Cloud Computing?

Cloud computing is the emerging technology of delivering many kinds of resources as services, mainly over the internet. Delivering party is referred to as the service providers, while the users are known as the subscribers. Subscribers pay subscription fees typically on a per-use basis. Cloud computing is broken down in to few different categories based on the type of service provided. SaaS (Software as a Service) is the category of cloud computing in which the main resources available as a service are software applications. PaaS (Platform as a Service) is the category/application of cloud computing in which the service providers deliver a computing platform or a solution stack to their subscribers over the internet. IaaS (Infrastructure as a Service) is the category of cloud computing in which the main resources available as a service are hardware infrastructure. DaaS (Desktop as a Service), which is an emerging –aaS service deals with providing a whole desktop experience over the internet. This is sometimes referred to as desktop virtualization/virtual desktop or hosted desktop.

What is Distributed Computing?

The field of computer science that deals with distributed systems is called distributed computing. A distributed system is made up of more than one self-directed computers communicating through a network. These computers use their own local memory. All computers in the distributed system talk to each other to achieve a certain common goal. Alternatively, different users at each computer may have different individual needs and the distributed system will do the coordination of shared resources (or help communicate with other nodes) to achieve their individual tasks. Nodes communicate using message passing. Distributed computing can also be identified as using a distributed system to solve a single large problem by breaking it up to tasks, each of which is computed in individual computers of the distributed system. Typically, toleration mechanisms are in place to overcome individual computer failures. Structure (topology, delay and cardinality) of the system is not known in advance and it is dynamic. Individual computers do not have to know everything about the whole system or the complete input (for the problem to be solved).

What is the difference between Cloud and Distributed Computing?

Cloud computing is a technology that delivers many kinds of resources as services, mainly over the internet, while distributed computing is the concept of using a distributed system consisting of many self-governed nodes to solve a very large problem (that is usually difficult to be solved by a single computer). Cloud computing is basically a sales and distribution model for various types of resources over the internet, while distributed computing can be identified as a type of computing, which uses a group of machines to work as a single unit to solve a large scale problem. Distributed computing achieves this by breaking the problem up to simpler tasks, and assigning these tasks to individual nodes.

 

Types of software Testing

Software Testing

Testing with a Purpose
Software testing is performed to verify that the completed software package functions according to the expectations defined by the requirements/specifications. The overall objective to not to find every software bug that exists, but to uncover situations that could negatively impact the customer, usability and/or maintainability.

From the module level to the application level, this article defines the different types of testing. Depending upon the purpose for testing and the software requirements/specs, a combination of testing methodologies is applied. One of the most overlooked areas of testing is regression testing and fault tolerant testing.

Functional Testing
Module testing verifies that individual software unit performs as expected according to the requirements using a small subset of possible input parameters. At the application level, testing verifies that the entire application functions together according to the requirements. Example:

  • Passing in real world parameters as well as valid but unusual parameters.

Parametric Testing
At the module level, testing verifies that individual software unit performs as expected according to the requirements for the full range of valid input parameters. Example:

  • Passing in each parameter at its minimum, maximum and median values, as well as passing in parameters at the minimum and maximum values at the same time.

Fault Tolerant Testing
Module testing verifies that individual software unit does not perform in a detrimental or unexpected manner for illegal or out-of-range input parameters. At the application level, testing verifies that the entire application functions together in a graceful manner according to the requirements when presented with unexpected and/or out-of-range values. Example:

  • Passing null pointers and the full range of possible values for each parameter.

Integration Testing
Integration testing is an additional step that is used when different sub-systems are being developed simultaneously by independent developers. It verifies that the parameters passed between sub-systems are being handled correctly. Example:

  • Passing null pointers and the full range of possible values for each parameter.

Regression Testing
Regression testing is retesting sub-systems/modules/units to insure that modifications to one sub-system/module/unit does not cause unexpected results in another sub-system/module/unit. This is also known as ripple effect testing.

Why is Regression Testing Necessary?
Regression testing is necessary because many times modifications in one part of the code cause unexpected problems in a “totally unrelated” area of the code.

Black box testing – Internal system design is not considered in this type of testing. Tests are based on requirements and functionality.

White box testing – This testing is based on knowledge of the internal logic of an application’s code. Also known as Glass box Testing. Internal software and code working should be known for this type of testing. Tests are based on coverage of code statements, branches, paths, conditions.

Unit testing – Testing of individual software components or modules. Typically done by the programmer and not by testers, as it requires detailed knowledge of the internal program design and code. may require developing test driver modules or test harnesses.

Incremental integration testing – Bottom up approach for testing i.e continuous testing of an application as new functionality is added; Application functionality and modules should be independent enough to test separately. done by programmers or by testers.

System testing – Entire system is tested as per the requirements. Black-box type testing that is based on overall requirements specifications, covers all combined parts of a system.

End-to-end testing – Similar to system testing, involves testing of a complete application environment in a situation that mimics real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate.

Sanity testing – Testing to determine if a new software version is performing well enough to accept it for a major testing effort. If application is crashing for initial use then system is not stable enough for further testing and build or application is assigned to fix.

Acceptance testing -Normally this type of testing is done to verify if system meets the customer specified requirements. User or customer do this testing to determine whether to accept application.

Load testing – Its a performance testing to check system behavior under load. Testing an application under heavy loads, such as testing of a web site under a range of loads to determine at what point the system’s response time degrades or fails.

Stress testing – System is stressed beyond its specifications to check how and when it fails. Performed under heavy load like putting large number beyond storage capacity, complex database queries, continuous input to system or database load.

Performance testing – Term often used interchangeably with ‘stress’ and ‘load’ testing. To check whether system meets performance requirements. Used different performance and load tools to do this.

Usability testing – User-friendliness check. Application flow is tested, Can new user understand the application easily, Proper help documented whenever user stuck at any point. Basically system navigation is checked in this testing.

Install/uninstall testing – Tested for full, partial, or upgrade install/uninstall processes on different operating systems under different hardware, software environment.

Recovery testing – Testing how well a system recovers from crashes, hardware failures, or other catastrophic problems.

Security testing – Can system be penetrated by any hacking way. Testing how well the system protects against unauthorized internal or external access. Checked if system, database is safe from external attacks.

Compatibility testing – Testing how well software performs in a particular hardware/software/operating system/network environment and different combination s of above.

Comparison testing – Comparison of product strengths and weaknesses with previous versions or other similar products.

Alpha testing – In house virtual user environment can be created for this type of testing. Testing is done at the end of development. Still minor design changes may be made as a result of such testing.

Beta testing – Testing typically done by end-users or others. Final testing before releasing application for commercial purpose.

Happy Testing!!!

 

This section describes the different types of testing which may be used to test a Software during SDLC.

 

Manual testing

This type includes the testing of the Software manually i.e. without using any automated tool or any script. In this type the tester takes over the role of an end user and test the Software to identify any un-expected behavior or bug. There are different stages for manual testing like unit testing, Integration testing, System testing and User Acceptance testing.

Testers use test plan, test cases or test scenarios to test the Software to ensure the completeness of testing. Manual testing also includes exploratory testing as testers explore the software to identify errors in it.

Automation testing

Automation testing which is also known as Test Automation, is when the tester writes scripts and uses another software to test the software. This process involves automation of a manual process. Automation Testing is used to re-run the test scenarios that were performed manually, quickly and repeatedly.

What to automate?

It is not possible to automate everything in the Software; however the areas at which user can make transactions such as login form or registration forms etc, any area where large amount of users. can access the Software simultaneously should be automated.

Furthermore all GUI items, connections with databases, field validations etc can be efficiently tested by automating the manual process.

When to automate?

Test Automation should be uses by considering the following for the Software:

  • Large and critical projects.
  • Projects that require testing the same areas frequently.
  • Requirements not changing frequently.
  • Accessing the application for load and performance with many virtual users.
  • Stable Software with respect to manual testing.
  • Availability of time.

How to automate?

Automation is done by using a supportive computer language like vb scripting and an automated software application. There are a lot of tools available which can be use to write automation scripts. Before mentioning the tools lets identify the process which can be used to automate the testing:

  • Identifying areas within a software for automation.
  • Selection of appropriate tool for Test automation.
  • Writing Test scripts.
  • Development of Test suits.
  • Execution of scripts.
  • Create result reports.
  • Identify any potential bug or performance issue.