Archive for July, 2008

Different Types of Software Testing

Thursday, July 31st, 2008

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.

Integration testing - Testing of integrated modules to verify combined functionality after integration. Modules are typically code modules, individual applications, client and server applications on a network, etc. This type of testing is especially relevant to client/server and distributed systems.

Functional testing - This type of testing ignores the internal parts and focus on the output is as per requirement or not. Black-box type testing geared to functional requirements of an application.

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.

Regression testing - Testing the application as a whole for the modification in any module or functionality. Difficult to cover all the system in regression testing so typically automation tools are used for these testing types.

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.

Difference Between Computer Virus, Worm , Trojan Horse and Spyware-Adware

Friday, July 25th, 2008

The most of peoples make blunder when the topic of a computer virus arises is to refer to a worm or Trojan horse as a virus. While the words Trojan, worm and  virus are often used interchangeably, they are not the same. Viruses, worms and Trojan Horses are all malicious programs that can cause damage to your computer, but there are differences among the three, and knowing those differences can help you to better protect your computer from their often damaging effects. Spyware and Adware do not harm your computer but collect information about you without appropriate notice and consent.

Computer virus
(1) Attaches itself to a program or file so it can spread from one computer to another, leaving infections as it travels. Much like human viruses
(2) Computer viruses can range in severity: Some viruses cause only mildly annoying effects while others can damage your hardware, software or files.
(3) Almost all viruses are attached to an executable file, which means the virus may exist on your computer but it cannot infect your computer unless you run or open the malicious program. It is important to note that a virus cannot be spread without a human action, (such as running an infected program) to keep it going.
(4) People continue the spread of a computer virus, mostly unknowingly, by sharing infecting files or sending e-mails with viruses as attachments in the e-mail.

Worm
(1) A worm is similar to a virus by its design, and is considered to be a sub-class of a virus. Worms spread from computer to computer, but unlike a virus, it has the capability to travel without any help from a person. A worm takes advantage of file or information transport features on your system, which allows it to travel unaided.
(2) The biggest danger with a worm is its capability to replicate itself on your system, so rather than your computer sending out a single worm, it could send out hundreds or thousands of copies of itself, creating a huge devastating effect. One example would be for a worm to send a copy of itself to everyone listed in your e-mail address book. Then, the worm replicates and sends itself out to everyone listed in each of the receiver’s address book, and the manifest continues on down the line.
(3) Due to the copying nature of a worm and its capability to travel across networks the end result in most cases is that the worm consumes too much system memory (or network bandwidth), causing Web servers, network servers and individual computers to stop responding. In more recent worm attacks such as the much-talked-about Blaster Worm the worm has been designed to tunnel into your system and allow malicious users to control your computer remotely.

Trojan Horse
(1) Trojan Horse is full of as much trickery as the mythological Trojan Horse it was named after. The Trojan Horse, at first glance will appear to be useful software but will actually do damage once installed or run on your computer.
(2) Those on the receiving end of a Trojan Horse are usually tricked into opening them because they appear to be receiving legitimate software or files from a legitimate source. When a Trojan is activated on your computer, the results can vary. Some Trojans are designed to be more annoying than malicious (like changing your desktop, adding silly active desktop icons) or they can cause serious damage by deleting files and destroying information on your system.
(3) Trojans are also known to create a backdoor on your computer that gives malicious users access to your system, possibly allowing confidential or personal information to be compromised. Unlike viruses and worms, Trojans do not reproduce by infecting other files nor do they self-replicate.

Spyware-Adware
(1) Spyware and Adware collect information about you without appropriate notice and consent.
(2) Spyware can get installed on your computer in a number of ways. One way is via a virus. Another way is for it to be secretly downloaded and installed with other software you’ve chosen to install. You and I both know how easy it is to skip reading all the documentation on a free program and just click “OK.” That’s often how they get you.

Tips for ASP.Net developers

Friday, July 25th, 2008

1. Disable Session State
Disable Session State if you’re not going to use it. By default it’s on. You can actually turn this off for specific pages, instead of for every page:
<%@ Page language=”c#” Codebehind=”WebForm1.aspx.cs”
AutoEventWireup=”false” Inherits=”WebApplication1.WebForm1″
EnableSessionState=”false” %>

You can also disable it across the application in the web.config by setting the <sessionState> mode value to Off.

2. Output Buffering
Take advantage of this great feature. Basically batch all of your work on the server, and then run a Response.Flush method to output the data. This avoids chatty back and forth with the server.
<%response.buffer=true%>
Then use:
<%response.flush=true%>

3. Avoid Server-Side Validation
Try to avoid server-side validation, use client-side instead. Server-Side will just consume valuable resources on your servers, and cause more chat back and forth.

4. Repeater Control Good, DataList, DataGrid, and DataView controls Bad
Asp.net is a great platform, unfortunately a lot of the controls that were developed are heavy in html, and create not the greatest scaleable html from a performance standpoint.

5. Use HTTPServerUtility.Transfer instead of Response.Redirect
Redirect’s are also very chatty. They should only be used when you are transferring people to another physical web server. For any transfers within your server, use .transfer! You will save a lot of needless HTTP requests.

6. Always check Page.IsValid when using Validator Controls
So you’ve dropped on some validator controls, and you think your good to go because ASP.net does everything for you! Right? Wrong! All that happens if bad data is received is the IsValid flag is set to false. So make sure you check Page.IsValid before processing your forms!

7. Deploy with Release Build
Make sure you use Release Build mode and not Debug Build when you deploy your site to production.

8. Turn off Tracing
It will add a lot of overhead to your application that is not needed in a production environment.
<configuration>
 <system.web>
 <trace enabled=”false” pageOutput=”false” />
 <trace enabled=”false” requestLimit=”10″ pageOutput=”false” traceMode=”SortByTime” localOnly=”true”/>
 <compilation debug=”false” />
 </system.web>
 </configuration>

9. Avoid Exceptions
Avoid throwing exceptions, and handling useless exceptions. Exceptions are probably one of the heaviest resource hogs and causes of slowdowns you will ever see in web applications, as well as windows applications. Write your code so they don’t happen! Don’t code by exception!

10. Caching is Possibly the number one tip!
Use Quick Page Caching and the ASP.net Cache API!

Microsoft .Net Compact Framework for Mobiles and Pocket PC

Friday, July 25th, 2008

Microsoft developed the .Net Compact Framework with one intention in mind : To Build application for Mobile Devices and Pocket PC. .NET Compact Framework is a subset of the full .NET Framework, the included controls have a subset of their desktop cousins’ functionality. Due to size and performance considerations, some control properties, methods and events have been omitted from .NET Compact Framework controls. With a little coding, you can implement these omitted features yourself as needed. This is because the .NET Compact Framework allows you to create your own controls by inheritance from the base control class. From this foundation, you can add your own properties, methods and events to create just the control you need.

Types of Windows viruses

Friday, July 18th, 2008

(1) Boot viruses:

These viruses infect CD-DVD boot records or master boot records in hard disks. They replace the boot record program (which is responsible for loading the operating system in memory) copying it elsewhere on the disk or overwriting it. Boot viruses load into memory if the computer tries to read the disk while it is booting.

Examples: Form, Disk Killer, Michelangelo, and Stone virus

(2) Program viruses:

These infect executable program files, such as those with extensions like .BIN, .COM, .EXE, .OVL, .DRV (driver) and .SYS (device driver). These programs are loaded in memory during execution, taking the virus with them. The virus becomes active in memory, making copies of itself and infecting files on disk.

Examples: Sunday, Cascade

(3) Stealth viruses: These viruses use certain techniques to avoid detection. They may either redirect the disk head to read another sector instead of the one in which they reside or they may alter the reading of the infected file’s size shown in the directory listing. For instance, the Whale virus adds 9216 bytes to an infected file; then the virus subtracts the same number of bytes (9216) from the size given in the directory.

Examples: Frodo, Whale

(4) Polymorphic viruses: A virus that can encrypt its code in different ways so that it appears differently in each infection. These viruses are more difficult to detect.

Examples: Involuntary, Stimulate, Cascade, Phoenix, Evil, Proud, Virus 101

(5) Macro Viruses: A macro virus is type of computer virus that infects the macros within a document or template. When you open a word processing or spreadsheet document, the macro virus is activated and it infects the Normal template (Normal.dot)-a general purpose file that stores default document formatting settings. Every document you open refers to the Normal template, and hence gets infected with the macro virus. Since this virus attaches itself to documents, the infection can spread if such documents are opened on other computers.

Examples: DMV, Nuclear, Word Concept.

(6) Active X: ActiveX and Java controls will soon be the scourge of computing. Most people donot know how to control there web browser to enable or disable the various functions like playing sound or video and so, by default, leave a nice big hole in the security by allowing applets free run into there machine. There has been a lot of commotion behind this and with the amount of power that JAVA imparts, things from the security angle seem a bit gloom.

(7) Multipartite Viruses

Multipartite viruses are spreaded through infected media and usually hides in the memory. Gradually, the virus moves to the boot sector of the hard drive and infects executable files on the hard drive and later across the computer system.

(8) Slow virus

A Slow virus is a difficult virus to detect due to the fact it only modifies and infects files when they have been modified or copied. Therefore the original file will not be infected by the actual copied file

(9) Retro Viruses

A Retro virus attacks the anti-virus software designed to delete it. The retro virus usually attempts to attack the anti-virus data files such as the virus signature. Retro virus attempts to alter the operation of the anti-virus software.

(10) Armored Viruses

A Armored virus attempts to protect itself from anti-virus software by trying to make antivirus software believe it is located somewhere else. Therefore the Armored virus has made itself more difficult to trace, disassemble and understand.

(11)Companion Viruses

A Companion virus creates a companion file for each executable file the virus infects. Therefore a companion virus may save itself as scandisk.com and everytime a user executes scandisk.exe, the computer will load scandisk.com and therefore infect the system.

(12)Phage Viruses

Phage virus is a very destructive virus that re-writes a executable program with it’s own code, rather than just attaching itself to a file. Therefore a Phage virus will usually attempt to delete or destroy every program it infects.

(13)Revisiting Viruses

A Revisiting virus is a worm virus and attempts to copy itself within the computers memory and then copy itself to another linked computer using TCP/IP protocols. The Morris Worm virus in the late 1980’s was the first major virus threat to hit the Internet.

SPEC-INDIA offers Sales and Distribution solution

Friday, July 18th, 2008

SPEC-INDIA offers Sales and Distribution solution to automate sales and distribution function for Fast Moving Consumer Goods (FMCG) industry catering to two broad categories Organized Trade and Door to Street models. The solution includes modules for Order Management, Inventory Planning, Sales Accounting, and Customer Surveys. SPEC-INDIA has vast experience in the mobile computing domain and has successfully implemented mobile solution using latest mobile technology. 

Some of the key features include:
• Assigning routes
• Provide Product Information
• Provide Customer Information
• Prepare Sales Order
• Prepare Sales Invoice including Sales Discount
• Print Tickets using Blue Tooth and Infrared technology
• Payment Collection
• Maintain Inventory and Return Goods Information
• Data Transfer to the Central Database

Some of the benefits:
• On-line data availability
• Eliminate duplicate work
• Streamline back office operations
• Process dependant system
• Information on fingertips any time anywhere
• Effective monitoring of Sales and Distribution
• Easy handover and takeover process
• Increase Salesman’s efficiency
• Improve on Inventory Management
• Improve on payment collection and cash flow
• Utilization of resources

Symptoms of software Development Problems

Thursday, July 17th, 2008

1 User or business needs not met
2 Requirement churn
3 Modules dont integrate
4 Hard to maintain
5 Build and release issues
6 Late discovery of flaws
7 Poor quality or end user experience
8 Poor performance under load
9 No coordination team effort

What are the benefits of UML?

Thursday, July 17th, 2008

1 Your software system is professionally designed and documented before it is coded.   You will know exactly what you are getting, in advance. 
2 Since system design comes first, reusable code is easily spotted and coded with the highest efficiency.  You will have lower development costs. 
3 Logic ‘holes’ can be spotted in the design drawings.  Your software will behave as you expect it to.  There are fewer surprises. 
4 The overall system design will dictate the way the software is developed.  The right decisions are made before you are married to poorly written code.  Again, your overall costs will be less. 
5 UML lets us see the big picture.  We can develop more memory and processor efficient systems.  
6 When we come back to make modifications to your system, it is much easier to work on a system that has UML documentation.  Much less ‘relearning’ takes place.  Your system maintenance costs will be lower. 
7 If you should find the need to work with another developer, the UML diagrams will allow them to get up to speed quickly in your custom system.  Think of it as a schematic to a radio.  How could a tech fix it without it? 
8 If we need to communicate with outside contractors or even your own programmers, it is much more efficient. 

SPEC-INDIA offers Demand Resource Planning application

Friday, July 11th, 2008

SPEC-INDIA offers Demand Resource Planning application to calculate the demand for the distribution center on the basis of sales history and inventory on hand. The sales history is provided by Sales Data Warehouse (SDW) application, which maintains historical information about the orders created by order management application. The main function of DRP is to create internal orders for product delivery from warehouse to distribution center based on the information provided by Sales Data Warehouse and Inventory Management application. These orders are transferred to Order Management Application for further processing. SPEC-INDIA offers a key application to ensure the products are available as per the demand.

SPEC-INDIA provides ERP solution

Friday, July 11th, 2008

SPEC-INDIA provides ERP solution for managing business processes to manufacturing industry. The product is based on .NET technology, the latest offering from Microsoft, which provides rich Graphical User Interface (GUI) with N-Tire architecture, object oriented technology for better performance. The integration of all modules results in no duplication of any data entry & easy availability of information at finger tips from any part of the world. The product can be customized to suit any specific requirements. The data from any existing system can be ported to the integrated ERP system. The security configuration allows assigning access to information at Operations, Module, or System level based on predefined groups and roles to manage large number of users. The graphical user interface is similar across all the modules, which reduces the learning curve for any user. In all entry screens drop down lists and search tools are provided for easy and fast information entry. Online help is provided at field, form, module, and application level to increase accuracy in data entry.
Some of the Modules we offer in ERP solution:
• Finance and Accounting – Manage all financial transactions
• Fixed Asset Management – Asset Information, Asset Management
• Customer Relations Management – Customer Information,
• Marketing and Sales – Lead Information, Create Quote/Order, Generate Invoice 
• Purchase – Automate steps from procurement to payment
• Inventory – Manage inventory receipts, shipments, across warehouses, suppliers, and customers
• Production Planning and Control – Schedule production, Material planning, Resource planning,
• Maintenance Planning and Control – Schedule Maintenance, Spares and Resource Planning
• Quality Control – Quality Process Control, Define and Maintain Standards, Audit Processes
• Human Resource Management – Employee Information, Recruitments,
• Payroll – Maintain Payment Information, Prepare Cheques
• Utility – Manage Utility
• Security – Define and Maintain Security at all levels
• Company Information Center
• Design and Specification Engineering – Maintain Digitized documents for Engineering Design and Specifications
• MIS reports – Create Standard and User Defined Reports
Some of the benefits of having ERP solution:
• Integrate all information from different departments on single computer to serve many users for their different needs. 
• Create single version of data
• Speed up and standardize manufacturing process
• Reduce Inventory